💬
wordpress サブクエリーで沼った話
wordpressでarchineページで9件表示して10件目から2ページ目に行くようにしようとしたら沼りましたのでまたもやZennに書き記しておきます。
今回の案件ではカスタム投稿をしようしタクソノミーを条件にしarchiveをタブ機能で切り替えれるようにしようとしたときの話です。
こういう感じで実装してたのです、、、、
<?php
$args = array(
'post_type' => 'works', // カスタム投稿名
'posts_per_page' => 4, // 表示数 -1で全部
'order' => 'DESC', // 並び順 最新
'tax_query' => array(
array(
'taxonomy' => 'custom_tax_name', // カスタム投稿のタクソノミー名
'terms' => array('toltal'), // ターム名(カテゴリー名)
'field' => 'slug'
),
),
);
$the_query = new WP_Query( $args );
?>
<?php if ( $the_query->have_posts() ): while ( $the_query->have_posts() ): $the_query->the_post(); ?>
<!-- 内容 -->
<?php endwhile; endif; wp_reset_postdata(); ?>
wordpressの表示件数を9件に設定し、いざ確認してみると
全部きてるやないかい
想定の挙動としては、9件表示されページネーションで10件~19件のようにできると思っていたのですが実際は
全件表示され、しかもページネーションは動いている意味わからん状況でした
ページを切り替えても元々全件表示されとるし、、とググりぐぐるといい記事を見つけたのでシェアします
それからデザイン スタッフブログから
これは便利!WordPressのWP_Queryでよく使うコードスニペット
この記事ではWP_Queryの引き数がまとめられています。
バグが起きていたときのコード
<?php
$args = array(
'post_type' => 'post',
'posts_per_page' => -1,
'order' => 'DESC',
'tax_query' => array(
array(
'taxonomy' => 'post_custom_tax',
'terms' => array('test'),
'field' => 'slug'
),
),
);
$the_query = new WP_Query( $args );
?>
治ったコード
<?php
$args = array(
'post_type' => 'post',
'paged' => get_query_var('paged'),
'order' => 'DESC',
'tax_query' => array(
array(
'taxonomy' => 'post_custom_tax',
'terms' => array('test'),
'field' => 'slug'
),
),
);
$the_query = new WP_Query( $args );
?>
それからデザイン スタッフブログによると
'paged' => get_query_var('paged')が現在のページから投稿を表示するときの引数だそうです。
wordpressもいいけどreact,nextjsで開発してー....
終わり
Discussion