可以合并这两个功能吗?

时间:2019-05-13 作者:Henry

我有这两个功能。

区别在于,一个是过滤自定义分类法(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;
}
但它似乎对我不起作用。。。

我想我只是在做一些通过合并这些函数可以节省几分之一秒的事情,所以如果做不到,最好还是别管它,好吗?

谢谢

1 个回复
最合适的回答,由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\'); 
       }       
    }
}

相关推荐

Wp_Term_Taxonomy.Parent引用了什么?

我最初的想法是,它引用了另一种分类法(即wp_term_taxonomy.parent 到wp_term_taxonomy.term_taxonomy_id). Corcel这样的怪物built under this assumption. 然而,我done some digging 大多数信息似乎表明它实际上引用了wp_terms.term_id. 在Corcel的案例中,我认为这种巧合是可行的——WordPress将设置term_id 以及term_taxonomy_id 到相同的值。如果您弄乱了数据