2012-09-05 18 views
8

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

しかし、私が渡すパラメータに関わらず、$ wp_queryを使って書いているプラ​​グインでは、探しているタグがあるかどうかにかかわらず、投稿の完全なリストを取得できます。

は、ここに私のコードです:私はそれだけでは、タグの付いた合計数だとして、私は唯一の2つのポストを取り戻す必要があります実際には5を返すために、それを言ったとき

// 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(); 

これは10の結果を生成します。

ウェブ上を見回すと、同じ問題を抱えていて解決策がない人が多いようです。私はタグを指定する約10の異なる方法を試したに違いないが、返された投稿の数が間違っているという事実は、私が何か完全に間違っているか、何らかのバグがあることを示唆している。 Wordpressのバージョンは3.4.1です。

これにはどのWordpressプロの光が当てられますか?

ありがとうございます!

答えて

13

この

$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(); 
+0

を参照してください。新しい変数に代入するだけです。 –

+0

@SheikhHeera –

+0

@ArtemRussakovskiiその場合、私は '$ wp_query'変数を使うことはできませんが、' $ new_wp_query = new WP_Query($ args);のように別の変数を使うことはできません; while( $ new_wp_query-> have_posts()):the_post(); ... 'です。 –

12

回答を試してみては、ここで発見された - https://codex.wordpress.org/Template_Tags/get_posts

次の例は、 'tax_query'

を使用して、 'ジャンル' カスタム分類の下に 'ジャズ' でタグ付けされた投稿を表示し
$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); 
0

次のようになります。https://codex.wordpress.org/Class_Reference/WP_Query#Tag_Parameters (および上に述べたようにを参照してください、詳細については

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

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

の代わりに最近の重複投稿)。

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

、試してみてください。

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

を元の$ wp_queryをリセットして、周りのすべてのそのダンスを行うには理由があってはならないhttps://codex.wordpress.org/Template_Tags/get_posts

関連する問題