如何使用分类ID将WP_Query用于自定义帖子类型的分类?

时间:2012-10-16 09:20:24

标签: html wordpress slider taxonomy custom-post-type

这是我遇到的困境,我的主题选项将自定义分类变量作为ID号传递,而不是slug名称。所以不是传递“新闻”而是传递“4”。

我有这个有效的硬代码:

$wp_query = new WP_Query(array('slidecat' => 'extra', 'showposts'=>$slides));

但是此代码仅适用于slug。因此,如果我用$ slider_category替换'extra',这是我在主题选项中的选择字段传递的变量,则代码不起作用。

1 个答案:

答案 0 :(得分:1)

如果你有分类标识,那么直接查询数据库就可以更容易地找到slug:

function get_term_by_taxonomy_id($term_taxonomy_id) {
    global $wpdb;
    $taxonomy = $wpdb->get_row( $wpdb->prepare( 
        "SELECT * FROM $wpdb->term_taxonomy wta
            INNER JOIN $wpdb->terms wt ON (wta.term_id = wt.term_id)
            WHERE wta.term_taxonomy_id = %d", $term_taxonomy_id 
    ) );

    return $taxonomy;
}

$cat = get_term_by_taxonomy_id($slider_category);
// at this point you should check if $cat is null (in case of an error)
$wp_query = new WP_Query(array('slidecat' => $cat->slug, 'showposts'=>$slides));

当然slu the可以应用于不同的分类法,例如categorypost_tag可以使用名为"hello"的slug。因此,这取决于slidecat的实施方式以及支持的分类法。