16

いくつかの投稿を自動的に作成してタグを追加するコードをいくつか書きました。「すべての投稿」管理パネルにタグが表示され、投稿の「タグ」リンクをクリックして、タグ付きの投稿だけを取得できます。

ただし、 $wp_query を使用して作成しているプラ​​グインでは、渡すパラメーターに関係なく、探しているタグがあるかどうかに関係なく、投稿の完全なリストを取得するだけです。

これが私のコードです:

// Now retrieve all items matching this brand name . . .
$query=new WP_Query(array('posts_per_page=5', array('tag' => array($brand_name))));

// The Loop
while ( $query->have_posts() ) : $query->the_post();
    echo '<li>';
    the_title();
    echo '</li>';
endwhile;

// Reset Post Data
wp_reset_postdata();

これは、5 のみを返すように指示したときに 10 の結果を生成します。実際には、タグの合計数であるため、2 つの投稿のみが返されるはずです。

Web を見回すと、同じ問題を抱えている人がたくさんいるようですが、解決策はありません。タグを指定する約 10 の異なる方法を試したに違いありませんが、返された投稿の数が間違っているという事実は、何かが完全に間違っているか、何らかのバグがあることを示唆しています。役立つ場合、Wordpress のバージョンは 3.4.1 です。

Wordpressのプロはこれに光を当てることができますか?

前もって感謝します !

4

4 に答える 4

20

ここで答えが見つかりました - https://codex.wordpress.org/Template_Tags/get_posts

次の例は、「tax_query」を使用して、「jazz」でタグ付けされた投稿を「genre」カスタム分類の下に表示します

$args = array(
    'tax_query' => array(
        array(
            'taxonomy' => 'genre',
            'field' => 'slug',
            'terms' => 'jazz'
        )
    )
);
$postslist = get_posts( $args );

だからあなたにとっては

$args = array( 
        'posts_per_page' => 5,
        'tax_query'      => array(
            array(
                'taxonomy'  => 'post_tag',
                'field'     => 'slug',
                'terms'     => sanitize_title( $brand_name )
            )
        )
    );

$postslist = get_posts( $args );
于 2015-06-27T15:22:56.730 に答える
18

これを試して

$original_query = $wp_query;
$wp_query = null;
$args = array('posts_per_page' => 5, 'tag' => $brand_name);
$wp_query = new WP_Query($args);

if (have_posts()) :
    while (have_posts()) : the_post();
        echo '<li>';
        the_title();
        echo '</li>';
    endwhile;
endif;

$wp_query = null;
$wp_query = $original_query;
wp_reset_postdata();
于 2012-09-05T01:09:21.093 に答える