Wordpress - 在结果中搜索和显示类别(NOT POSTS!)

时间:2014-09-09 11:22:52

标签: php wordpress wp-list-categories

我在WordPress上配置了很多类别,我希望有一种方法让用户搜索(以自由文本输入形式)特定类别。

然后,在结果页面中,我只想列出这些类别(不是POSTS!)并显示指向类别页面的链接。

有没有办法(或插件方式)轻松实现这一目标?

更新

还有如何搜索嵌套类别?我的意思是,我有类别A,有很多子类别。可以只搜索那些子类别(知道A的ID)?

更新:解决方案

正如@AhmadAssaf建议我最终自己提出查询。在这里,我发布了我在网络上使用的代码:

已更新

JOIN必须使用taxonomies.term_id而不是taxonomies.term_taxonomy_id

function getCategories($string) {
    global $wpdb;
    $categories = $wpdb->get_results("
        SELECT terms.term_id, terms.name, taxonomies.description
        FROM wp_terms as terms
        LEFT JOIN wp_term_taxonomy as taxonomies ON taxonomies.term_id = terms.term_id
        WHERE taxonomies.taxonomy = 'category'  && terms.name LIKE '%".$string."%'
        GROUP BY taxonomies.term_id
    ");
    return $categories;
}

1 个答案:

答案 0 :(得分:3)

您可以发出自定义mysql查询,以获取其名称与您传递的字符串匹配的类别的所有类别详细信息

function getCat($string) {
    global $wpdb;
    $cat= $wpdb->get_results("
        SELECT *
    FROM wp__term_relationships
    LEFT JOIN wp__term_taxonomy
       ON (wp__term_relationships.term_taxonomy_id = wp__term_taxonomy.term_taxonomy_id)
    LEFT JOIN wp__terms on wp__term_taxonomy.term_taxonomy_id = wp__terms.term_id
    WHERE wp__term_taxonomy.taxonomy = 'category'  && wp__terms.name LIKE '%".$string."%'
    GROUP BY wp__term_taxonomy.term_id
    ");
return $cat;

}