WP\\U查询类将自动AND
设置的任何筛选器。在您的情况下,使用$query->set( \'meta_query\', ... )
意味着WordPress将查找来自当前作者的帖子(因为这是作者模板)以及具有自定义元键的帖子。根据我对您的问题的理解,这种故意的情况永远不会发生,因此不能以这种方式修改查询。
相反,您需要posts_where 要添加的筛选器OR
至的条件WHERE
条款:
function wp_75068_filter_where( $where ) {
if ( is_author() ) {
global $wpdb;
$co_author_posts = get_posts( array(
\'numberposts\' => 99,
\'meta_key\' => \'writer\',
\'meta_value\' => \'the same author name\',
\'fields\' => \'ids\' // fetch only the IDs
) );
if ( ! empty( $co_author_posts ) ) {
$where .= " OR $wpdb->posts.ID IN (" . implode( ", ", array_map( \'intval\', $co_author_posts ) ) . ") ";
}
}
return $where;
}
add_filter( \'posts_where\', \'wp_75068_filter_where\' );
代码还没有经过测试,所以如果有任何问题,请告诉我!