アーティストとイベントの 2 つの投稿タイプがあります。
複数のアーティストを複数のイベントに関連付けることができるように、すべてのアーティストのチェック リストをイベント エディターに配置して、アーティストとイベントを関連付けました。イベント エディターのアーティスト カスタム フィールドは、アーティストの投稿 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 } ?>
私が今見つけようとしている問題は、「逆に行く」ことです。そのため、アーティストのアーカイブで、各アーティストの最新のイベントを見つけたいと考えています。
アーティスト配列に現在のアーティスト スラッグが含まれているイベント投稿を検索するには、カスタム クエリを作成する必要があります。
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';} ?>