使用自定义分类和所选术语查询帖子

时间:2012-05-20 作者:elbatron

我无法对以下查询中的术语使用数组,只能使用单个术语:

    $args=array(
    \'facts\' => \'information\', //taxonomy:facts and term:information
    \'post_type\' => \'book\',
    \'post_status\' => \'publish\',
    \'posts_per_page\' => -1,
    \'caller_get_posts\'=> 1
    );
    $my_query = null;
    $my_query = new WP_Query($args)
这是正常的行为吗?是否有任何等效的方法可以从具有自定义帖子类型的自定义分类法中选择具有特定术语的帖子?

2 个回复
SO网友:mrwweb

您使用的是一种不推荐使用的按分类法进行查询的方法Read the Codex和使用tax_query:

$args=array(
    \'post_type\' => \'book\',
    \'post_status\' => \'publish\',
    \'posts_per_page\' => -1,
    \'caller_get_posts\'=> 1,
    \'tax_query\' => array(
        array(
            \'taxonomy\' => \'facts\',
            \'field\' => \'slug\',
            \'terms\' => \'information\'
        )
    )
);
仅供参考,caller_get_posts 也不推荐使用。

SO网友:cj5

我不确定这是否是正确的方法(因为我没有通过为“tax\\u query”提供“relation”参数来获得想要的结果),但我的工作中有一个场景,即网站使用名为“topics”的分类法作为主菜单,因此需要与其他分类法分开处理,它们被用作较低级别的筛选选项(即“学校”)以及“post\\u类型”的筛选。以下是我的解决方案,以mrwweb为例。

需要注意的是,如果“schools”的查询变量为空,则整个查询不会得到任何结果,而它应该会生成所有结果,因为“schools”不再被过滤。所以,我只是将查询数组的这一部分转换为一个条件数组,它按预期工作。

function uci_get_taxonomies() {
    $params = array();

    $topic = get_queried_object();
    $params[TAXONOMY_TOPICS] = $topic->slug;

    $contentTypes = get_query_var(\'post_type\');
    $params[\'post_type\'] = $contentTypes;

    $schools = get_query_var(TAXONOMY_SCHOOLS);
    if(!empty($schools)) {
        $params[\'tax_query\'][] = array(\'taxonomy\' => TAXONOMY_SCHOOLS, \'field\' => \'slug\', \'terms\' => $schools);
    }

    $query = new WP_Query($params);
    //Util::debug($query->query_vars);

    return $query;
}

结束