web-dev-qa-db-ja.com

選択が空の場合にコンテンツが表示されないようにする方法

ドロップダウンリストから選択したときにイベントの講演者のリストを表示する$ 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 
                }

            }?>

このコードブロックを適切に機能させるための再作業方法に関するアイデアは大歓迎です。

1
MikeL5799

問題は、あなたがスピーカーを持っていないとき、あなたの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...
}
1
Jeremy Ross