仕事で、WPを使ってウェブサービスを運営している案件の改修がありまして、その時にウェブWP ULikeのデータを参照してランキングを作る。という対応をしたので備忘録。
$wpdbを使う
$wpdbで、group by 構文をつかって、帰ってきた値でループを回す想定で進めてみる。
$results = $wpdb->get_results("SELECT post_title FROM $wpdb->posts"); foreach ($results as $value) { print('<li>'.$value->post_title.'</li>'); }
取得データをソート
global $wpdb;global $wpdb; $results = $wpdb->get_results("SELECT post_id, count(post_id) FROM wp_ulike GROUP BY post_id ORDER BY count(post_id) DESC"); foreach ($results as $value) { // var_dump($value); }
件数を制限する場合は、Limitを付ける。
SELECT post_id<span class="s1">,</span> count<span class="s1">(</span>post_id<span class="s1">)</span> FROM wp_ulike GROUP BY post_id ORDER BY count<span class="s1">(</span>post_id<span class="s1">)</span> DESC LIMIT 5
あとは、$valueをいい感じに展開するなり関数化して $result を返すようにしたり。