我正在使用高级自定义字段和Genesis,并尝试修改模板以反映两种自定义帖子类型之间的关系(使用它们关联的自定义字段)在这种情况下,我有“Staff”和“Reports”的自定义职位类型,而对于Staff,我有自定义字段“first\\u name”和“last\\u name”;与“Reports”CPT关联,我还有两个自定义字段“primary\\u contact”和“associated\\u contact”-在“single staff.php”模板中,我想在侧边栏中呈现任何关联报告的列表,其中包括that staff member 定义为“primary\\u contact”或“associated\\u contact”
因此,例如,如果我已将“Tom Jones”创建为职员(“staff”职位类型的一个实例),那么我是否可以定义一个查询,以输出报告列表,其中“Tom Jones”在“reports”自定义职位类型的任何实例中定义为“primary\\u contact”和/或“associated\\u contact”?我在下面为这个查询提供了一个(非常)粗略的概念:
$args = array(
\'meta_query\' => array(
\'relation\' => \'OR\',
array(
\'post_type\' => \'reports\',
\'meta_key\' => \'primary_contact\',
\'meta_value\' => \'$this.full_name\',
),
array(
\'post_type\' => \'reports\',
\'meta_key\' => \'associated_contact\',
\'meta_value\' => \'$this.full_name\',
)
)
);
$query = new WP_Query( $args );
如果这个问题还不够清楚,请告诉我,谢谢你的见解!
最合适的回答,由SO网友:rudtek 整理而成
我还没有测试过这个,但应该可以。你会想把它放在单人间里。php。您必须添加详细信息(实际查询、帖子类型等)。
$reports = get_posts(array(
\'post_type\' => \'reports\', //use actual post type
\'meta_query\' => array(
\'relation\' => \'or\',
array(
\'key\' => \'primary_contact\', // name of custom field
\'value\' => \'"\' . get_the_ID() . \'"\', // matches exaclty "123", not just 123. This prevents a match for "1234"
\'compare\' => \'LIKE\'
)
array(
\'key\' => \'associated_contact\', // name of custom field
\'value\' => \'"\' . get_the_ID() . \'"\', // matches exaclty "123", not just 123. This prevents a match for "1234"
\'compare\' => \'LIKE\'
)
)
));
?>
<?php if( $reports ): ?>
<ul>
<?php foreach( $reports as $report ): ?>
<li>
<?php echo get_the_title( $doctor->ID ); ?>
</li>
<?php endforeach; ?>
</ul>
<?php endif; ?>