スポンサーリンク
Word Press のキモは、記事の検索機能と思えます。
様々な表示、表現はCSSで実現されていることが多く、いわゆるMVC理論に基づけばC,コントロールを行うモジュール群が重要な位置づけでしょう。
前回に続いて、今回は記事の表示制御方法を記します。
前回の記事参照。
対策2は、好きなところに記事一覧を表示します。
好きなところ、と書いてももちろん制限はあり、記事(post)はやったことがないのでわかりません。基本は固定ページ(page)。フロントページや他の固定ページで利用できます。
記事一覧の取得は、一度は聞いたことがあるでしょう。WP_Query()で行います。
WP_Query()は実はかなり高機能で、CODEXでも説明がかなり書かれています。
高機能ではあっても、デフォルト値を使うことで、モジュールの利用のために膨大な準備をする、という作業は不要になります。
最小限の使い方は、下記のようになります。
[php]
$the_query = new WP_Query( $args );
[/php]
ここで$argsは引数で、arrayにすることで複数のパラメータを渡すことができます。
では、どういうパラメータを渡すことができるかをちょっと見て行きましょう。
ところで元の話題ですが、自分はアクセスの多い記事をフロントページに表示したくてやり方を考えました。
考えた方法はまずはこの2つ。
1つ目の方法は、例えばタグに何か指定するものを決めて、すべての表示したい記事に特殊なタグを設定します。例えば”display”とあれば、表示対象とするのです。これなら編集画面で簡単に設定できます。
これを具体的にするにはWP_Query()で渡すarrayを以下のように設定します。
[php]
$args = array(
‘tag’ => ‘display’);
$wp_query = new WP_Query( $args );
[/php]
これで目的を達成できますが、残念な点が3つ。
特に1番目の問題は用途によっては致命的で、自分の場合はこの点で断念しました。
2つ目の方法は見映えの点で論外です。cssを読み解いてそっくりにhtmlを記述すればできるかもしれませんが、メンテナンスが大変でしょう。アクセスが多い記事は月一回は見直すので、容易でないと更新できなくなります。結果的に更新がおろそかになってしまう。
このため、3番目の方法としてWP_Query()を使って表示したい記事だけを選びます。
先ほどのCODEXにも記載がありますが、CODEXは書いていることの理解が難しい。ある程度中身を理解していないと意味が通じないので困ったものです。ただし中身がわかってしまうと、これ以上の情報を書いているサイトはないので、最後にはここにたどり着くことになるでしょう。
で、本題。
指定した記事だけを表示したい場合、WP_Query()の引数に下記を指定することで指定した記事、固定ページのみ検索できます。
[php]
’post__in’ => array(記事のID),
’post_type’ => array(‘post’, ‘page’),
[/php]
記事のIDは編集画面のURLでpost=xxxxと書かれているところがその番号です。
記事ID
複数個あればカンマで区切っていきます。例としてこんな風に記述します。
[php]
‘post__in’ => array(1,2,3,40,80,100),
[/php]
なお、IDは記事と固定ページで重複することはないです。それから引数のタグはpost_inではなくpost__in、アンダースコアは2つあります。
2行目は検索対象を記事(post)だけでなく固定ページ(page)も対象にします。
この検索結果を定型的なコードで記述して表示させます。
最低限のコードは下記のとおりです。
[php]
$args = array(
‘post__in’ => array(1,2,3,40,80,100),
‘post_type’ => array(‘post’, ‘page’));
$wp_query = new WP_Query( $args );
// The Loop
if ( $wp_query -> have_posts() ) {
while ( $wp_query -> have_posts() ) {
$wp_query -> the_post();
}
wp_reset_postdata();
}
[/php]
※エラー処理などは省略しています。
PR