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->query
とquery_posts
との違いというか関係がよくわかっていない・・・。query_posts
はループタグの条件を指定するという記述が以下のページにあるけれど、詳細がよくわかっていなかったりして。指定しているパラメータも似てるし。内包しているのかな?
WordPressでループタグの条件を指定する<?php query_posts(); ?> | WordPress & Business メモ
以下のページは英語でよくわからんけど、WP_Query
とquery_posts
とget_posts
の関係を、図でとてもわかりやすく説明している感じ。いいものを発見したぞ。
query posts – When should you use WP_Query vs query_posts() vs get_posts()? – WordPress Answers
関数とオブジェクトをごちゃまぜで使って申し訳ないですが、そのあたりはご容赦を。それを踏まえた上であえて言うのであれば、qeury_posts
はメインループのみの使用。$wp_query
はメインループ以外のループでも使えるということですね。