web-dev-qa-db-fra.com

Comment s'assurer que le contenu ne s'affiche pas si la sélection est vide

J'ai une variable appelée $ enceintes qui affiche une liste d'intervenants pour un événement lorsqu'elle est sélectionnée dans une liste déroulante. Le problème est que lorsqu'aucun des orateurs n'est sélectionné pour un événement, la liste de tous les orateurs s'affiche dans cette section au lieu de ne rien afficher dans cette section comme elle le devrait, car rien n'est sélectionné. Voici le bloc de code:

    $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 
                }

            }?>

Toute idée sur la façon de réutiliser ce bloc de code pour qu'il fonctionne correctement serait grandement appréciée.

1
MikeL5799

Le problème est que lorsque vous n’avez pas d’orateur, vous n’avez rien à transférer à votre paramètre include.

Vous pouvez le résoudre en encapsulant le code dans une condition afin qu'il ne s'exécute que si des haut-parleurs sont associés à ce message.

$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