ドロップダウンリストから選択したときにイベントの講演者のリストを表示する$ speakerという変数があります。問題は、どのスピーカーもイベントに選択されていない場合、そのセクションには何も選択されていないため本来のように何も表示されずに、すべてのスピーカーのリストが表示されることです。これがコードブロックです。
$speakers = get_post_meta( $post->ID, 'min_webinar_speaker', false );
$args = array(
'posts_per_page' => -1,
'orderby' => 'date',
'order' => 'DESC',
'include' => $speakers,
'post_type' => 'speaker',
'post_status' => 'publish',
'suppress_filters' => true
);
$speakers = get_posts( $args );
<?php for ($i = 0; $i < count($speakers); $i++) {
$speaker = $speakers[$i];
if ( $i % 2 == 0 ) {
?>
<div class="row">
<?php
}
?>
<article class="subscriber col-sm-6">
<div class="row">
<div class="col-sm-6">
<?php echo get_the_post_thumbnail($speaker->ID, 'thumbnail'); ?>
</div>
<div class="col-sm-6 subscriber-desc">
<h5 class="moderator"><?php
global $wp_query;
$postid = $wp_query->post->ID;
echo get_post_meta($speaker->ID, 'min_speaker_speaker_role', true);
wp_reset_query();
?>
</h5>
<h1><?php echo $speaker->post_title; ?></h1>
<?php echo wpautop( $speaker->post_content); ?>
</div>
</div>
</article>
<?php //} ?>
<?php
if ( $i % 2 == 1 || ($i+1) == count($speakers) ) {
?> </div> <!-- test--><?php
}
}?>
このコードブロックを適切に機能させるための再作業方法に関するアイデアは大歓迎です。
問題は、あなたがスピーカーを持っていないとき、あなたのinclude
パラメータに渡すものが何もないということです。
そのポストにスピーカーが接続されている場合にのみ実行されるように、コードを条件付きでラップすることで解決できます。
$speakers = get_post_meta( $post->ID, 'min_webinar_speaker', false );
if ($speakers != '') { // <- you may need to do a more thorough check than this
... run the code...
}