我不确定这是不是最好的方法,我想听听其他的建议
如果查询两个或多个分类法,这将把模板更改为一些预定义的模板。您可以硬编码要检查或使用的分类法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根据特定情况加载不同的模板,则可以添加其他更复杂的逻辑。