カテゴリXとタグYに関連する投稿の一覧を表示しようとしています。次のコードを試してみました。
$args = array(
'posts_per_page' => 4,
'tag_id' => $tag_id,
'cat' => $cat_id,
);
query_posts($args);
しかし、それは正しく機能せず、カテゴリ内のすべての投稿を返します。
あなたが持っているかもしれないどんな洞察をも聞きたいです。
global $wp_query;
$args = array(
'category__and' => 'category',
'tag__in' => 'post_tag', //must use tag id for this field
'posts_per_page' => -1); //get all posts
$posts = get_posts($args);
foreach ($posts as $post) :
//do stuff
endforeach;
私はこれが他の場所でコメントされているWordPressのバグだと思うので、IDではなくタグの名前を使ってみてください。
$args = array(
'posts_per_page' => 3,
'tag' => 'review',
'cat' => 9,
);
query_posts($args);
あなたがどのようにして乗ったかを私たちに知らせてください、名前に複数の単語があるタグで何が起こるかわからないでください。
私はこの同じ問題に遭遇し、MySQLリクエストをすることでそれを解決しました。
手短に言うと:get_post($ args)はカテゴリ= MyCategory _または_ タグ= MyTagの投稿を返します。
必要なのは、 _または_ を _と_ に変更することです。
私の論理はMySQLの問い合わせにまっすぐに行くことでした:
Query_post()の代わりに wpdb を使用しました。
ちょっとしたコード (カテゴリMyCatおよびタグMyTagを持つ公開された投稿を返す):
$query_byTag="
SELECT wp_posts.ID
FROM wp_posts, wp_term_relationships, wp_terms
WHERE wp_posts.ID = wp_term_relationships.object_id
AND wp_terms.term_id = wp_term_relationships.term_taxonomy_id
AND wp_terms.name = 'MyTag'";
$query_byCat="
SELECT wp_posts.ID
FROM wp_posts, wp_term_relationships, wp_terms
WHERE wp_posts.ID = wp_term_relationships.object_id
AND wp_terms.term_id = wp_term_relationships.term_taxonomy_id
AND wp_terms.name = 'MyCat'";
$query ="
SELECT wp_posts.post_title AS title ,
wp_posts.post_content AS content,
wp_posts.post_date AS blogdate
FROM wp_posts
WHERE wp_posts.post_status = 'publish'
AND wp_posts.ID IN (".$query_byTag.")
AND wp_posts.ID IN (".$query_byCat.")
ORDER BY wp_posts.post_date DESC ";
$result= $wpdb->get_results($query);
これはそれを行うための汚い方法ですが、私はそれが役立つことを願っています=)
このコードは動作します:
$args = array(
'tag' => get_queried_object()->slug, // If permalink like example.com/tag/example-tag, etc.
'posts_per_page' => -1,
'tax_query' => array(
array(
'taxonomy' => 'category', // Taxonomy, in my case I need default post categories
'field' => 'slug',
'terms' => 'interior', // Your category slug (I have a category 'interior')
),
)
); // Get all posts
$posts_new = get_posts( $args );