我有这两个功能。
区别在于,一个是过滤自定义分类法(is\\u tax),另一个是过滤通用WordPress标记(is\\u tag)。
正如我所希望的那样,代码似乎正在被复制。
这是分类法:
add_action( \'pre_get_posts\', \'sort_conference_by_date_tax\' );
function sort_conference_by_date_tax( $query ) {
if ( $query->is_main_query() && !is_admin() ) {
if ( $query->is_tax() ) {
$query->set(\'orderby\', \'meta_value\');
$query->set(\'meta_key\', \'start_date\');
$query->set(\'order\', \'DESC\');
}
}
}
这是用于标签(标准WordPress)
add_action( \'pre_get_posts\', \'sort_conference_by_date_tag\' );
function sort_conference_by_date_tag( $query ) {
if ( $query->is_main_query() && !is_admin() ) {
if ( $query->is_tag() ) {
$query->set(\'orderby\', \'meta_value\');
$query->set(\'meta_key\', \'start_date\');
$query->set(\'order\', \'DESC\');
}
}
}
我以为数组会这样工作:
if ( $query->(array((\'tag\', \'tax\'))) {
return 0;
}
但它似乎对我不起作用。。。
我想我只是在做一些通过合并这些函数可以节省几分之一秒的事情,所以如果做不到,最好还是别管它,好吗?
谢谢
最合适的回答,由SO网友:butlerblog 整理而成
除非我遗漏了什么,否则我认为您可以使用OR(| |)操作符来检查is_tag()
或is_tax()
:
add_action( \'pre_get_posts\', \'sort_conference_by_date\' );
function sort_conference_by_date( $query ) {
if ( $query->is_main_query() && !is_admin() ) {
if ( $query->is_tag() || $query->is_tax() ) {
$query->set(\'orderby\', \'meta_value\');
$query->set(\'meta_key\', \'start_date\');
$query->set(\'order\', \'DESC\');
}
}
}