通过unctions.php定位自定义帖子类型不起作用

时间:2021-05-12 作者:friendly_llama

我有一个自定义的帖子类型“books”(设置)和一个自定义的分类法“book\\u cat”(作为这些帖子的类别)。我已将以下代码添加到函数中。php按照高级自定义字段日期字段对我的自定义分类法归档页面上的帖子进行排序,这很有魅力,但只有当我删除了针对图书的条件代码时,我似乎无法找出原因。

/*when listing books, show them in publication order*/
function my_pre_get_posts( $query ) {
    
    // do not modify queries in the admin
    if( is_admin() ) {
        return $query;
    }

    // only modify queries for \'books\' post type
    if( isset($query->query_vars[\'post_type\']) && $query->query_vars[\'post_type\'] == \'books\' ) {
        $query->set(\'orderby\', \'meta_value\');   
        $query->set(\'meta_key\', \'published\');    
        $query->set(\'order\', \'ASC\');
    }

    // return
    return $query;

}

add_action(\'pre_get_posts\', \'my_pre_get_posts\');

1 个回复
最合适的回答,由SO网友:Jacob Peattie 整理而成

如果要筛选分类法归档的查询,应检查查询是否针对该归档:

if ( $query->is_tax( \'book_cat\' ) ) {
    $query->set(\'orderby\', \'meta_value\');   
    $query->set(\'meta_key\', \'published\');    
    $query->set(\'order\', \'ASC\');
}

相关推荐