2013-07-09 3 views
0

Есть ли способ запросить сообщения по категориям или тегам? Я хотел бы получить три новых сообщения, которые находятся в одной категории или имеют один и тот же тег. Ниже приведен код, который я уже:Wordpress query_posts по тегу ИЛИ категории

$posttags = get_the_tags(); 
$tags = ''; 
if ($posttags) { 
    foreach($posttags as $tag) { 
    $tags .= ','.$tag->name; 
    } 
} 
$taglist = substr($tags, 1); 
$category = get_the_category(); 
$posts = query_posts('&tag='.$taglist.'&orderby=date&order=DESC&posts_per_page=3&cat='.$category[0]->term_id); 

Но это только получает сообщения, которые находятся в одной и той же категории и одни и те же метки.

ответ

2

Что об этом, чтобы получить данные в два раза один раз для категории, а затем для тега

$posttags = get_the_tags(); 
$tags = ''; 
if ($posttags) { 
    foreach($posttags as $tag) { 
    $tags .= ','.$tag->name; 
    } 
} 
$taglist = substr($tags, 1); 
$category = get_the_category(); 
$tagposts = query_posts('&tag='.$taglist.'&orderby=date&order=DESC&posts_per_page=3'); 

$categoryposts= query_posts('&orderby=date&order=DESC&posts_per_page=3&cat='.$category[0]->term_id); 

$post=array_merge($tagposts,$categoryposts); 

Затем вы можете использовать какой-то array_unique, если есть дубликаты

+0

Это выглядит очень многообещающе, я думаю, что могу запросить его оттуда, чтобы удалить дубликаты. Спасибо за вашу помощь! – trysmudford

+0

Добро пожаловать :) –

0

Если вы знаете имя тега, вы можете использовать запрос, как показано ниже, чтобы получить все сообщения, которые имеют имя тега, соответствующий его:

select id, post_title, guid from wp_posts p inner join wp_term_relationships r 
on p.id=r.object_id and p.post_status='publish' and p.post_type='post' 
inner join wp_term_taxonomy x on r.term_taxonomy_id=x.term_taxonomy_id and 
x.taxonomy='post_tag' inner join wp_terms t on x.term_id=t.term_id and t.name 
like '%tag_name%' group by r.object_id; 

подставим tag_name в запросе выше. Вот reference

Смежные вопросы