我会尝试尽可能简单地解释这一点。
我有 3 种帖子类型在这里发挥作用。
在我的“事件”single.php 上显示事件信息,我正在尝试创建一个查询来显示相关的“报告”。
事件内容与报告的唯一关系就是电路。
当我创建“报告”时,我必须为其分配一个“事件”。但是,当我在报告之前创建“事件”时,我必须为其分配一个“电路”。
例如,看起来像这样...
> 'report' - Second place for Pedrosa as black flag terminates race for Marquez (1023)
> 'event' - Australian Grand Prix (662)
> 'circuit' - Phillip Island (156)
所以我试图查询“报告”,其中在特定“电路”上有“事件”。
在我的“事件”single.php 上,我确实有电路 ID,但我不知道如何列出该电路中的报告。
我可以使用此查询轻松显示相关“事件”
$related = new WP_Query(array(
'post_type' => array('motogp-2013','motogp-2014'),
'posts_per_page' => -1,
'meta_query' => array(
array(
'key' => 'event_calendar_circuit',
'value' => $circuit,
'compare' => '=',
'type' => 'NUMERIC'
)
)
));
但这不是我想要达到的目的,我需要展示相关的报告。
这个
reports_race_event
元键包含“事件”的id号,“事件”包含元键event_calendar_circuit
,其中包含电路id。
我的问题是,当我唯一的元密钥是
reports_race_event
时,如何为“报告”执行此操作
我需要列出我们在特定地点举行的“报告”
$circuit
如果有人可以帮助我,那就太好了。
我已经知道如何做到这一点了!
但是我仍然需要帮助,我可以像这样列出所有相关报告...
$related_reports = new WP_Query(array(
'post_type' => 'reports',
'posts_per_page' => -1,
'meta_query' => array(
array(
'key' => 'reports_race_event',
'value' => $events_at_circuit,
'compare' => not sure,
'type' => not sure
)
)
));
但是我需要创建一个“事件”ID 号数组并将其存储在这个
$events_at_circuit
变量中。
首先使用此查询购买...
global $circuit;
$related_events = get_posts(array(
'post_type' => array('motogp-2013','motogp-2014'),
'posts_per_page' => -1,
'meta_query' => array(
array(
'key' => 'event_calendar_circuit',
'value' => $circuit,
'compare' => '=',
'type' => 'NUMERIC'
)
)
));
我现在的问题是,如何从 $lated_events 查询中获取返回的帖子 ID 号并将它们作为数组存储在
$events_at_circuit
我终于到了那里...
这就是答案,我必须存储该电路中事件的数组编号,然后使用数组变量通过 meta_key 值进行查询。然后使用wordpress meta IN进行比较。请参阅下面的完整代码...
$events_at_circuit = null;
$related_events = get_posts(array(
'post_type' => array('motogp-2013','motogp-2014'),
'posts_per_page' => -1,
'meta_query' => array(
array(
'key' => 'event_calendar_circuit',
'value' => $circuit,
'compare' => '=',
'type' => 'NUMERIC'
)
)
));
if( !empty( $related_events ) ){ foreach( $related_events as $related_event ) $events_at_circuit[] = $related_event->ID; }
$related_reports = new WP_Query(array(
'post_type' => 'reports',
'posts_per_page' => -1,
'meta_query' => array(
array(
'key' => 'reports_race_event',
'value' => $events_at_circuit,
'compare' => 'IN',
'type' => 'NUMERIC'
)
)
));
if ( $related_reports->have_posts() ) :