Php WP-使用自定义元查询扩展主查询

Php WP-使用自定义元查询扩展主查询,php,wordpress,Php,Wordpress,我正在写一个主题,支持多个作者的文章。我将合著者ID保存在post meta中。问题是,在作者档案页面上,我不仅需要显示作者的帖子,还需要显示他是合著者的帖子,它们需要在同一个循环中。 因此,我的问题是:有没有一种好方法可以使用自定义查询扩展主查询(同时仍然保留分页等) add_操作('pre_get_posts',函数($query){ if(is_admin()| |!$query->is_main_query())返回; 如果($query->is_archive()&&&$query->

我正在写一个主题,支持多个作者的文章。我将合著者ID保存在post meta中。问题是,在作者档案页面上,我不仅需要显示作者的帖子,还需要显示他是合著者的帖子,它们需要在同一个循环中。 因此,我的问题是:有没有一种好方法可以使用自定义查询扩展主查询(同时仍然保留分页等)

add_操作('pre_get_posts',函数($query){
if(is_admin()| |!$query->is_main_query())返回;
如果($query->is_archive()&&&$query->is_author()){
$author\u id=get\u query\u var('author');
//使用这些post ID扩展主查询
$cauthored\u arg=数组(
“post_type”=>“post”,
“发布状态”=>“发布”,
'每页发布'=>'-1',
'orderby'=>'ID'
“元查询”=>数组(
排列(
“关键”=>“合作作者”,
'value'=>$author\u id,
'比较'=>'类似',
),
)
);  
$coauthored_posts=新的WP_查询($cauthored_arg);
}
});

您可以组合元查询:

'meta_query' => array(
    'relation' => 'OR',
    array(
        'key' => 'author',
        'value' => $author_id,
        'compare'   => 'LIKE',
    ),
    array(
        'key'     => 'co_authors',
        'value'   => $co_author_id,
        'compare' => 'LIKE',
    ) 
)

您的查询结果是什么?您是否尝试在meta_查询中使用“compare”的“IN”操作符?结果与它应该的一样-为我提供一个帖子ID数组,作者被列为合著者。问题是将这些帖子与主查询合并,并将分页设置到位。
'meta_query' => array(
    'relation' => 'OR',
    array(
        'key' => 'author',
        'value' => $author_id,
        'compare'   => 'LIKE',
    ),
    array(
        'key'     => 'co_authors',
        'value'   => $co_author_id,
        'compare' => 'LIKE',
    ) 
)