如何选择用于多分类查询的模板?

时间:2012-02-27 作者:ifdion

由于3.1 WordPress支持多分类查询。问题是:如果我有两个分类查询,例如:

http://localhost:8888/site/?lot-term=australia&story-type=note
如何确定要用于查询的模板?第一次尝试时,它加载分类法批次术语。php,但在我重新安装主题后,它会加载分类故事类型。而不是php。

经过一些实验,我找到了一种方法,让它使用我的首选模板文件,首先使用一个分类查询(首选分类模板文件),然后使用query\\u posts修改它。但我相信有更好的方法可以做到这一点,因为它添加了另一个SQL查询。

提前谢谢你。

2 个回复
最合适的回答,由SO网友:Stephen Harris 整理而成

我不确定这是不是最好的方法,我想听听其他的建议

如果查询两个或多个分类法,这将把模板更改为一些预定义的模板。您可以硬编码要检查或使用的分类法get_taxonomies:

/*
* Checks to see if more than one of (certain) taxonomies are being queried
* If they are, alters the template to \'my-multitax-template.php\' (if it can find it)
*/
add_filter(\'template_include\', \'my_multietax_template\');
function my_multietax_template( $template ){

    //Array of taxonomies to check
    $taxes = array(\'story\',\'lot-term\');

    //Or select ALL taxonomies (or pass $args array argument)
    //$taxes=array_keys(get_taxonomies(\'\',\'names\')); 

    //Keep track of how many of the selected taxonomies we\'re querying
    $count =0;
    global $wp_query;
    foreach ($taxes as $tax){
        if(isset($wp_query->query_vars[$tax] ))
            $count ++;

        if($count > 1){
            //Locate alternative template.
            $alternate = locate_template(\'my-multitax-template.php\');
            if(!empty($alternate)
                $template = $alternate;
            break;
        }
    }
    return $template;
}
当然是“我的multitax模板”。php’实际上可以是其中一个分类法的模板名称,以赋予该分类法模板优先权。或者,如果您要查询2个以上的分类法,并希望WordPress根据特定情况加载不同的模板,则可以添加其他更复杂的逻辑。

SO网友:MantiNL

我找到了另一种解决方法。当您使用add_action( \'init\', \'register_custom_taxonomy\', 0 ); 胡克,一定要按顺序做。添加分类法时,首先提到的是所选的模板。

结束

相关推荐