私はカスタムポストタイプ "building"と別のカスタムポストタイプ "architect"を持っています。ビルディングは、ACF関係フィールドを介して建築家に関連しています。ACF関係フィールドによるWordPressクエリ
1人の建築家のページで、その特定の建築家に関連付けられている建物のリストを表示したいとします。
これまでのところ、私は次のようにして、これを達成した:
$loop = new WP_Query(array('post_type' => 'building', 'paged' => $paged, 'posts_per_page' => -1));
if ($loop->have_posts()) : ?>
<ul>
<?php while ($loop->have_posts()) : $loop->the_post();
$building_name = get_the_title();
$building_link = get_the_permalink();
$architects = get_field('architect');
if($architects): ?>
<?php foreach($architects as $post):?>
<?php setup_postdata($post);
if(get_the_title() == $architect_name) { ?>
<li><a href="<?php echo $building_link; ?>"><?php echo $building_name ?></a></li>
<?php } ?>
<?php endforeach; ?>
<?php wp_reset_postdata(); ?>
<?php endif; ?>
<?php endwhile; ?>
</ul>
<?php endif;
wp_reset_postdata();
しかし、これは非常に効率的でないようでdoeseと私はこれを行うことによって、試してみましたクエリ自体への関係を、紹介していますよ。
動作していない$buildings = get_posts(array(
'post_type' => 'building',
'meta_query' => array(
array(
'key' => 'architect',
'value' => '"' . get_the_ID() . '"',
'compare' => 'LIKE'
)
)
));
<?php if($buildings): ?>
<ul>
<?php foreach($buildings as $building): ?>
<li><a href="<?php echo get_permalink($building->ID); ?>"><?php echo get_the_title($building->ID); ?></a></li>
<?php endforeach; ?>
</ul>
<?php endif; ?>
、それは何も返しません...
あなたは私が間違って何をやっている見ることはできますかあなたがTHIに近づくために、他のアイデアを持っていますあなたの状況?
ここで、ACFフィールドを呼び出していますか。私は伝統的なドキュメントパターン(https://www.advancedcustomfields.com/resources/relationship/)に従うものは何も見ていません – Aibrean
建築家のフィールドに複数の値を許可していますか?アーキテクトが1つの選択肢であれば、間違ったメタ問合せを使用しています(上記のメタ問合せは、データの格納方法のために複数選択にのみ適用されます)。 –
@ NathanDawson architectは複数の選択を可能にする関係フィールドです –