0

Advance Custom Fields を使用したカスタム フィールドに基づいて特定の数の投稿を除外する Wordpress カテゴリからの投稿のリストを表示する際に問題が発生しています。

これが私が使用している現在のコードで、それをうまく隠しています。

while ( have_posts() ) : the_post();
    $is_taken = get_field('taken_check', $this_id);
    if ($is_taken!=1) { 
        get_template_part( 'basket_selection' );
    } 
endwhile;

ただし、投稿を非表示にするだけで、「posts_per_page」関数の投稿と見なされます。

たとえば、合計で 20 件の投稿があり、1 ページあたり 10 件の投稿に制限を設定しました。上記のコードで 3 つの投稿を非表示にすると、1 ページ目には 7 件の投稿、2 ページ目には 10 件の投稿しか表示されません。

非表示の投稿を単に無視し、「投稿」としてカウントしない方法はありますか?

4

2 に答える 2

0

category.php 内で get_posts を wp_query に変更することで解決できました。

最初にこのコードを追加して、現在表示されているカテゴリを検出し、クエリをフィルタリングして、taken_check = 0 のみを表示します。

    $this_cat = get_category(get_query_var('cat'), 'ARRAY_A', false);

    foreach ($this_cat as $this_cat){
        $this_catid = $this_cat;
        break;
    }

    $args = array(
            'posts_per_page' => 10,
            'post_type' => 'post',
        'cat' => $this_catid,
        'orderby' => 'title',
        'order' => 'ASC',
        'paged' => $paged,
        'meta_query' => array(
            array(
                'key' => 'taken_check',
                'value' => '0',
            )
        )
     );

$wp_query = new WP_Query($args);

その後、デフォルトのループ シーケンスを続行しました。唯一の奇妙なコードは、投稿からではなく、現在のページに基づいて現在のカテゴリを検出するための不要な foreach ループです。$this_cat[0] は配列なので、なぜ使用できないのか、まだ戸惑っています。空白を返し続けます。

まあ、でも今はページネーションで動作するので嬉しいです:) 助けてくれてありがとう!

于 2013-09-05T08:37:51.097 に答える