WordPress カスタム投稿ページの一覧を表示

WordPressのサイドメニューにて、カスタム投稿ページの一覧メニューを表示する方法です。
参考にしたのは以下のページです。

WordPressのカスタム投稿タイプで作成したページの一覧を表示させる | ホームページ制作・開発/大阪|アルカナワークス

以下の6行目のカスタム投稿タイプの名称を自分の設定に合せるだけで、望み通りの結果が得られました。すばらしい。

<ul>
<?php
    $wp_query = new WP_Query();
    $param = array(
        'posts_per_page' => '-1', //表示件数。-1なら全件表示
        'post_type' => 'post_type_name', //カスタム投稿タイプの名称を入れる
        'post_status' => 'publish', //取得するステータス。publishなら一般公開のもののみ
        'orderby' => 'ID', //ID順に並び替え
        'order' => 'DESC'
    );
    $wp_query->query($param);
    if($wp_query->have_posts()): while($wp_query->have_posts()) : $wp_query->the_post();
?>
<li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
<?php endwhile; endif; ?>
</ul>

3行目のposts_per_pageは未指定なら設定の表示件数。※表示件数の優先順位は「showposts」→「posts_per_page」→「管理画面の設定」のようです。
7行目のpost_statusパラメータはデフォルトでpublishのようなので記述しなくても良さそう。
8行目のorderbyはデフォルトではdate(日付順)です。
9行目のorderはデフォルトでDESC(新しいものから並べる)なので省略してもいいでしょう。古いものから並べるなら、ASCで。

パラメータの詳細は以下のページを参考に。腐るほどある(笑)。※腐るのは自分

関数リファレンス/WP Query – WordPress Codex 日本語版

そして、やっぱり出てきた魔法の呪文「$wp_query」。何でもできちゃうすごいヤツ。
でも、$wp_query->queryquery_postsとの違いというか関係がよくわかっていない・・・。query_postsはループタグの条件を指定するという記述が以下のページにあるけれど、詳細がよくわかっていなかったりして。指定しているパラメータも似てるし。内包しているのかな?

WordPressでループタグの条件を指定する<?php query_posts(); ?> | WordPress & Business メモ

以下のページは英語でよくわからんけど、WP_Queryquery_postsget_postsの関係を、図でとてもわかりやすく説明している感じ。いいものを発見したぞ。

query posts – When should you use WP_Query vs query_posts() vs get_posts()? – WordPress Answers

関数とオブジェクトをごちゃまぜで使って申し訳ないですが、そのあたりはご容赦を。それを踏まえた上であえて言うのであれば、qeury_postsはメインループのみの使用。$wp_queryはメインループ以外のループでも使えるということですね。

Wordpress | , , , |