サポート » プラグイン » 特定のカスタムフィールド値の記事の記事数とページャーが合わない

  • WP SiteManagerを使っています。

    1ページに表示する記事数:10
    ページャーの数:5
    現在カスタムフィールド値3の記事数:27件

    カスタムフィールドの値が3に設定された記事を取得し、表示することはできるのですが、記事数が27件しかないのにページャーは5ページ目まで表示されてしまいます。
    4,5ページに飛ぶと404ページでもなく、記事が空っぽの状態が出てきてしまいます。

    コードは以下の通りです。

    function show_pickup_list() {
      $loops = array(
    		'post_type' => 'post', //投稿記事から
    		'paged' => get_query_var('paged'),//現在どのページにいるのか
    		'meta_key' => 'pickup', //カスタムフィールド名
    		'posts_per_page' => 10, //表示件数
    		'order' => 'DESC',
    		'orderby' => 'modified',
    		'meta_value' => 3 //カスタムフィールド値,
    	);
    
    	$query = new WP_Query( $loops );
    	if ( $query->have_posts() ) :
    		while ( $query->have_posts() ) :
    						$query->the_post();
    						get_template_part('pickup3');
    		endwhile;
    	endif;
      if (class_exists('WP_SiteManager_page_navi')) :
        WP_SiteManager_page_navi::page_navi();
      endif;
      wp_reset_postdata();
     }

    似たような記事にアクションフックを使うとあったのですが、まだまだ知識がたりないため混乱する一報でした・・・。

    問題は全体の記事数を取得していて、カスタムフィールド値が3の記事の記事数を取得できていないことだと思います。
    すごく困っているので、どなたかご教授お願いいたします!

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • gblsm

    (@gblsm)

    いったん、管理画面の
    設定 » 表示設定 » 1ページに表示する最大投稿数
    を 10 に(WP_Query のパラメーターと同じに)してみてください。どうでしょうか。

    「1ページに表示する最大投稿数」の設定に関係なく10件表示させたい場合は、下記リンク先サイトの例が参考になります。例「条件にしたがって表示件数を変更」を見てください。
    WordPressでページ送りが動かないのはどう考えてもquery_postsが悪い!【pre_get_posts、WordPressループまとめ】

    gblsm

    (@gblsm)

    すみません、追記です。
    カスタムフィールドで検索するために WP_Query を使っておられますが、それも pre_get_posts を使って実装するのがよいと思います。
    以下は、先ほどのリンク先サイト(WordPressでページ送りが…)を真似た例です。

    function 関数名( $query ) {
      if ( is_admin() || ! $query->is_main_query() )
        return;
    
      if ( クエリーの改変を適用する条件 ) {
        $query->set( 'meta_key', 'pickup' );
        $query->set( 'meta_value', 3 );
        return;
      }
    }
    add_action( 'pre_get_posts', '関数名' );

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • トピック「特定のカスタムフィールド値の記事の記事数とページャーが合わない」には新たに返信することはできません。