我有一个称为service的CPT和一个称为partner\\u request的CPT。partner\\u request CPT将具有post meta字段recipient\\u id和service\\u id,并且将具有挂起或接受的自定义post状态。我想使用WP\\u Query检索与正在查看的服务是合作伙伴的服务列表。结果中包含的帖子需要有一个partner\\u请求,其recipient\\u id或service\\u id等于原始服务的id,post\\u状态为accepted。我知道您可以使用add\\u filter(\'posts\\u join\')将join语句添加到查询中。在我看来,这看起来很草率,如果我可以在WP\\u查询参数中使用连接查询,那么管理代码就会更容易,就像使用元查询一样。
在允许用户向另一个服务发送partner\\u请求的函数中,我确保服务之间不存在其他partner\\u请求帖子。我是这样做的:
$request_atts = array(
\'post_type\' => \'partner_request\',
\'post_status\' => array(\'pending\', \'accepted\'),
\'meta_query\' => array(
\'relation\' => \'OR\',
array(
\'relation\' => \'AND\',
array(
\'key\' => \'recipient_id\',
\'value\' => 94
),
array(
\'key\' => \'service_id\',
\'value\' => 95
)
),
array(
\'relation\' => \'AND\',
array(
\'key\' => \'recipient_id\',
\'value\' => 95
),
array(
\'key\' => \'service_id\',
\'value\' => 94
)
)
)
);
$request_query = new WP_Query($request_atts);
if($request_query->have_posts()){
//A request already exists
} else {
//Send the request
}
那么,使用上面的信息,有没有一种方法可以在不使用过滤器的情况下向WP\\u查询添加join子句?
$partner_atts = array(
\'post_type\' => \'service\',
//Could a join that determines partners go here?
);
$partner_query = new WP_Query($partner_atts);
if($partner_query->have_posts()){
//Display a list of partners
}