如何将标签过滤到特定类别?

时间:2013-05-13 20:05:36

标签: mysql wordpress

我这里有这个工作查询,它​​将检索过去60天内使用的标签。

$term_ids = $wpdb->get_results("
SELECT DISTINCT wp_term_taxonomy.term_id, wp_terms.name
FROM wp_term_taxonomy
INNER JOIN wp_term_relationships ON wp_term_taxonomy.term_taxonomy_id = wp_term_relationships.term_taxonomy_id
INNER JOIN wp_posts ON wp_posts.ID = wp_term_relationships.object_id
INNER JOIN wp_terms ON wp_terms.term_id = wp_term_taxonomy.term_id
WHERE wp_term_taxonomy.taxonomy = 'post_tag' AND DATE_SUB(CURDATE(), $show_tags_in_days) <= $wpdb->posts.post_date", ARRAY_A);

我需要将其修改为过去60天内使用的标签以及特定的Wordpress类别。这将用于Wordpress的类别页面。我已经习惯了一段时间了,我想我只是让自己感到困惑。有没有办法用另一个连接执行此操作,还是应该运行两个单独的查询?

2 个答案:

答案 0 :(得分:2)

我设法搞清楚了。这是我提出的查询。

SELECT DISTINCT wp_term_taxonomy.term_id, wp_terms.name FROM wp_terms
INNER JOIN wp_term_relationships ON   wp_term_relationships.term_taxonomy_id=wp_terms.term_ID
INNER JOIN wp_term_taxonomy ON wp_term_relationships.term_taxonomy_id = wp_term_taxonomy.term_taxonomy_id
INNER JOIN wp_posts ON wp_posts.ID=wp_term_relationships.object_id
WHERE wp_term_taxonomy.taxonomy = 'post_tag' AND wp_posts.ID IN (
SELECT wp_posts.ID FROM wp_terms
INNER JOIN wp_term_relationships ON wp_term_relationships.term_taxonomy_id=wp_terms.term_ID
INNER JOIN wp_term_taxonomy ON wp_term_relationships.term_taxonomy_id = wp_term_taxonomy.term_taxonomy_id
INNER JOIN wp_posts ON wp_posts.ID=wp_term_relationships.object_id
WHERE wp_term_taxonomy.taxonomy = 'category' AND wp_terms.term_id=$cur_cat_id) LIMIT 10

以下是更深入的解释:http://www.ohthecode.com/wordpress/most-used-tags-in-wordpress/

答案 1 :(得分:0)

此查询仅检索 分类标识。您可能正在另一个查询中使用$ term_ids变量来检索具有$ term_ids变量中列表中的标记的帖子。换句话说,找到您实际检索帖子的位置,并传入$ term_ids和您感兴趣的类别ID。

但是,由于您说您是在类别模板页面(例如category-mycategory.php)上执行此操作,因此您可能不需要执行任何其他操作,因为类别应自动传递。