【WordPress】複数のカスタム投稿タイプの一覧ページを作成する

WordPress

あるカスタム投稿タイプの一覧ページに、別のカスタム投稿タイプの記事を追加したいと思いました。

以前の記事にも書きましたが query_posts は非推奨ということだったので別の方法でいろいろ試したところなかなかうまく行きません。

表示されたとしてもページネーションがうまく動作しなかったり…。

そもそもカスタム投稿タイプの一覧ページに別のカスタム投稿タイプの記事を表示するということ自体、無理なことだったのかもしれません。。

URLが変わるのは嫌だったのですがしょうがなく諦め、新たに固定ページを作ることにしました。

その際参考にしたのがこちらの記事。

固定ページにカスタム投稿タイプの一覧ページを作成する
ページネーションに対応させるために、WP_Queryを使ってカスタム投稿タイプの一覧系ページを固定ページで作成する方法を紹介します。コード例はよく使われるパラメーターを使用しています。

そして実際に記述したのが下記の内容です。

<?php
$paged = get_query_var('paged') ? get_query_var('paged') : 1 ; //ページの判定
$args =	array(
    //'posts_per_page' => 10, //表示件数
    'orderby'          => 'date', // ソートの基準
    'order'            => 'DESC', // DESC降順 ASC昇順
    'post_type'        => array( 'postA', 'postB', 'postC' ), // カスタム投稿タイプ
    'date_query'       => array( 'after' => '2018-01-01', 'inclusive' => true ),// 日付を制限
    'post_status'      => 'publish', // 公開状態
    'caller_get_posts' => 1, // 取得した記事の何番目から表示するか
    'paged'            => $paged // ページネーションに必要
);
$wp_query = new WP_Query($args); ?>

<?php if( $wp_query -> have_posts() ): ?>
<?php while ($wp_query -> have_posts()) : $wp_query -> the_post(); ?>

<?/* ループ内の処理 */?>

<?php endwhile; ?>								

<?php bones_page_navi(); ?>

<?php else: ?>

<p>まだ記事はありません。</p>

<?php endif; ?>

<?php wp_reset_postdata(); ?>

事情により日付の絞り込みも行っています。

この時はBonesというテーマを使っていたので、用意されていたページネーションを使いましたが、上記のような感じでうまくいきました。調整しないとだめかなぁと思っていたので、そのまま使えて助かりました!

タイトルとURLをコピーしました