WordPressのサブループget_posts()で記事の表示順をID指定する

2 min

WordPressプラグイン関連で、人気記事のランキングを表示させるウィジェットを書き込んでいた時の備忘録です。

WordPressでよく使われるサブループの方法として、WP_Queryget_posts()がありますね。
僕が今回やりたかったのは「アクセス数の多い順に記事をランキング形式で表示する」ことですので、get_posts()でやりました。

get_posts()は、パラメータを渡してあげると記事の検索条件を絞れます。
具体的にはこんな感じ。

<?php $args = array(
 'posts_per_page' => 5,
 'offset' => 0,
 'category' => '',
 'category_name' => '',
 'orderby' => 'date',
 'order' => 'DESC',
 'include' => '',
 'exclude' => '',
 'meta_key' => '',
 'meta_value' => '',
 'post_type' => 'post',
 'post_mime_type' => '',
 'post_parent' => '',
 'author' => '',
 'post_status' => 'publish',
 'suppress_filters' => true 
);
$posts_array = get_posts( $args ); ?>

表示の順番を指定してあげるパラメータが‘orderby’なので、こいつに投稿IDの羅列を認識させてあげれば良さそうです。

codexを眺めていると、‘orderby’ => ‘post__in’を指定すれば思ったとおりの動作ができそう。
‘post__in’‘include’を参照するので、‘include’に投稿IDの羅列を指定します。

MEMO

‘include’自体に指定する投稿IDはカンマ区切りでも配列でも大丈夫ですが、配列にすると‘orderby’ => ‘post__in’がうまく動きませんでした。

<?php $args = array(
 'post_type' => 'post',
 'include' => '1,3,2,5,4',
 'orderby' => 'post__in',
 'order' => 'DESC'
 );
$posts_array = get_posts( $args ); ?>

さて、これで投稿ID1~5の投稿データ(実際にはそんな連続したのは無いけれど)が1,3,2,5,4の順で$post_arrayに格納されました。
あとは普通にforeachで回せばOKですね。

もちろん上記のコードそのままでは実用性のカケラもないので、適宜変更して遊んでみましょう!

未経験からITエンジニアになりました!

今までは趣味としてプログラミングを独学してきたけど、やっぱりこれを仕事にしたい……!

そう思い立ったはいいものの、世間の情勢などもあり未経験でのエンジニア職の中途採用が絶望的な状況

大手転職エージェントを通して何社も面接を受けては落ちてを繰り返し、諦めかけていたのですが……。

気分転換で登録した転職サービスで、とある企業から内定をいただくことができました

同じように未経験からITエンジニアを目指している方へ、どんなに厳しくても可能性がゼロではないことを伝えたい。

ポイントは、IT業界に精通した転職サービスを利用すること。
これだけで少なくとも面接へ進める可能性がグッと高くなります。

あなたがもしIT特化の転職サービスに未登録で苦しんでいるなら、ぜひ利用してみてください。きっと可能性が広がりますよ!

\無料のIT系転職サービス/

はるしか

はるしか

ゲーム・漫画・クルマ・ガジェットなど多趣味な雑食系。
モノづくりが楽しくてプログラミングをポチポチしてたら本業エンジニアになってしまったASPの中の人。
動物占いは子鹿。
忘れっぽい自分へのメモ代わりの記事が多めです。

FOLLOW

カテゴリー:
関連記事

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です