web-dev-qa-db-ja.com

WordPress:タグで投稿を取得しようとしています

私はいくつかの投稿を自動的に作成し、それらにタグを追加するコードを書きました。 [すべての投稿]管理パネルでタグを確認し、[タグ]投稿をクリックして、タグが付いた投稿のみを取得できます。

ただし、どのパラメーターを渡しても$ 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プロはこれに光を当てることができますか?

前もって感謝します !

13
user1647208

これを試して

$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();
15
The Alpha

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

次の例では、「jazz」でタグ付けされた投稿を、「tax_query」を使用して「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 );
15
BeRocket

あなたのコードで、試してください:

$query=new WP_Query(array('posts_per_page=5', 'tag' => $brand_name));

の代わりに:

$query=new WP_Query(array('posts_per_page=5', array('tag' => array($brand_name))));

詳細については、 https://codex.wordpress.org/Class_Reference/WP_Query#Tag_Parameters を参照してください(最近の重複投稿で言及されています)。

注:$ brand_nameは文字列の配列、またはカンマ区切りの値などにすることができ、上記のコードは機能するはずです。

または、次を試してください。

$myPosts = get_posts(array('tag' => $brand_name));

https://codex.wordpress.org/Template_Tags/get_posts を参照してください

0
Little Systems