WP_QUERY在IS_SINGLIC时忽略TAX_QUERY

时间:2018-06-08 作者:robertoandred

我正在尝试使用分类法设置一些post权限,并在pre_get_posts 行动

当发现多个帖子时,它工作正常,但在class-wp-query.php 近的line 2060, 特别是没有应用tax_query 规则何时is_singulartrue.

有没有办法在不修改核心的情况下解决这个问题?

1 个回复
SO网友:Krzysiek Dróżdż

您可以随时使用posts_clauses 在其中筛选并添加对tax\\u查询的处理(您甚至不需要编写自己的SQL):

function filter_single_with_tax_queries( $clauses, $query ) {
    global $wpdb;

    if ( $query->is_singular ) {  
        $query->parse_tax_query( $query->query_vars );
        $tax_clauses = $query->tax_query->get_sql( $wpdb->posts, \'ID\' );
        $clauses[\'join\'] .= $tax_clauses[\'join\'];
        $clauses[\'where\'] .= $tax_clauses[\'where\'];
    }
    return $parts;
}
add_action( \'posts_clauses\', \'filter_single_with_tax_queries\', 10, 2 );

结束