我有两种帖子类型:艺术家和活动。
我通过在事件编辑器中放置所有艺术家的检查列表来关联艺术家和事件,以便多个艺术家可以与多个事件相关联。事件编辑器上的艺术家自定义字段保存为艺术家帖子 ID 的数组。
在活动页面上,我会显示每个活动的艺术家列表,其中包含以下内容:
//Get Event Artists
$postID = $post->ID;
$meta = get_post_meta($postID, $_artistMeta->$postID, TRUE);
$artists = unserialize($meta['_artistMeta'][0]);
$output = array();
foreach ($artists['artistName'] as $artist) {
$theArtist = get_post($artist);
$output[] = '<li><a href="'.get_permalink($theArtist->ID).'">'.$theArtist->post_title.'</a></li>';
}
<?php if($output) { ?>
<div class="tw-event-artists bg1">
<ul class="nav-inl group me c2 comma-list">
<li class="bo"><?php echo $featured; ?>:</li>
<?php echo implode('', $output); ?>
</ul>
</div>
<?php } ?>
我现在试图找到的问题是尝试“反向”。所以在我的艺术家档案中,我想找到每个艺术家的最新活动。
我需要创建一个自定义查询来查找其艺术家数组包含当前艺术家 slug 的事件帖子。
我认为http://css-tricks.com/snippets/wordpress/custom-loop-based-on-custom-fields/该教程是一个很好的起点,但我的 PHP 技术还不足以破解它。
如何编写这个查询来得到我想要的?
谢谢!
我目前实现这一点的方法是这样的,放置在我的艺术家存档模板的循环中,但我想这将非常缓慢且效率低下,因为它必须为每个艺术家获取每一个事件。
<?php
$artistID = $post->ID;
$args = array(
'eventDisplay'=> 'upcoming',
'posts_per_page' => -1
);
$events = tribe_get_events($args);
$has_date = false;
if ($events):
global $post;
foreach ($events as $post):
setup_postdata($post);
//Get Event Artists
$postID = $post->ID;
$meta = get_post_meta($postID, $_artistMeta->$postID, TRUE);
$artists = unserialize($meta['_artistMeta'][0]);
foreach ($artists['artistName'] as $artist) {
if($artist == $artistID) {$has_date = true;}
}
endforeach;
endif;
?>
<?php if($has_date) {echo 'HAS DATE';} ?>