Pre_Get_Posts税查询不适用于自定义作者页面

时间:2014-04-19 作者:Gixty

我正在使用主题Twenty12,并修改了文件作者中的标准post查询。php,代码如下:

function wpd_author_query( $query ) {
//CODE to set $current_user_name here
//This gets the author from the URL
$author = get_user_by(\'slug\',get_query_var(\'author_name\'));
$current_user_name = $author->user_nicename;

    if ( $query->is_author() && $query->is_main_query()) {
            // your code to set $current_user_name here
            $query->set( \'meta_key\', \'_writer_relation_added_date_\'.$current_user_name );
            $query->set( \'orderby\', \'meta_value_num\' );
            $query->set( \'post_status\', $post_status );

            $tax_query = array(  
                array(
                    \'taxonomy\' => \'writer\',
                    \'field\' => \'name\',
                    \'terms\' => $current_user_name
                )
            );
            $query->set( \'tax_query\', $tax_query );
    }               
}
add_action( \'pre_get_posts\', \'wpd_author_query\' );
但是,tax\\u查询不适用于作者页面。它仍然没有在writer分类法中检索帖子。

我曾尝试将该代码应用于其他页面,例如is\\u home()is\\u archive(),它确实有效。

因此,wordpress和author模板页面中肯定存在冲突,不允许我使用tax\\u查询来检索writer分类中的帖子。

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

不要在模板中运行新查询,请在通过pre_get_posts 主题中的操作functions.php 文件

function wpd_author_query( $query ) {
    if ( $query->is_author()
        && $query->is_main_query() ) {
            // your code to set $current_user_name here
            $query->set( \'meta_key\', \'_writer_relation_added_date_\' . $current_user_name );
            $query->set( \'orderby\', \'meta_value_num\' );
            $tax_query = array(  
                array(
                    \'taxonomy\' => \'writer\',
                    \'field\' => \'name\',
                    \'terms\' => $current_user_name
                )
            )
            $query->set( \'tax_query\', $tax_query );

            // EDIT
            // unset the requested author
            unset( $query->query_vars[\'author_name\'] );
    }
}
add_action( \'pre_get_posts\', \'wpd_author_query\' );
然后,您可以在默认的作者模板中运行vanilla循环,并在此过程中保存一个额外的查询。

结束

相关推荐