web-dev-qa-db-fra.com

Comment boucler des champs personnalisés dans un modèle de page?

J'utilisais à l'origine un seul champ et tout fonctionnait parfaitement avec le code suivant. Maintenant, je dois le modifier pour boucler plusieurs champs similaires.

Pour commencer: j'ai créé plusieurs champs personnalisés sur ma page (slide1, slide2, slide3) et ces champs contiennent une URL pour un emplacement d'image. Ensuite, j'ai créé des champs de texte (slide1_text, slide2_text, etc.).

Code sage, je tirais mes champs dans mon modèle comme:

<?php
    // check for slide
    $slide = get_post_meta($post->ID, 'slide1', $single = true);
    // check for slide text
    $thumb_text = get_post_meta($post->ID, 'slide1_label', $single = true);
    // if there's a slide
    if($slide !== '') { ?>
    <section class="carousel slide" data-ride="carousel">
        <div class="carousel-inner">
            <div class="item active">
                <img src="<?php echo $slide; ?>" class="slider-images" />
            </div>
            <div class="carousel-caption">
                <h2><?php if($slide_text !== '') { echo $slide_text; } else { echo the_title(); } ?></h2>
            </div>
        </div>
    </section>
    <?php } // end if statement
?>

Fondamentalement, il vérifie s'il existe un champ appelé diapositive1 et, le cas échéant, l'affiche. Je ne sais pas trop comment ajouter des boucles et l'objectif final est de renvoyer les champs formatés pour un carrousel de bootstrap. (Je sais qu'il existe des plugins mais j'en ai essayé deux et ils ne sont pas exactement ce que je veux.)

Comment puis-je modifier ce code pour inclure une boucle afin qu'il puisse vérifier s'il existe des champs intitulés slide * et, le cas échéant, les parcourir en boucle et les récupérer tous?

De plus, ce serait formidable si je pouvais m'assurer que la première diapositive avait une classe "active" comme vous pouvez le voir dans le code ci-dessous <div class="item active"> et tous les autres champs ne seront que class = item.

1
o_O

Essayez ceci pour parcourir jusqu'à 4 diapositives - en vérifiant chacune pour une diapositive valide:

<?php
    $max_slides = 4; // this should be the maximum number of slides there can be

    for ($i=1; $i<=$max_slides; $i++) { 
        // check for slide
        $key = 'slide' . $i; 
        $slide = get_post_meta($post->ID, $key, $single = true);
        // check for slide text
        $thumb_text = get_post_meta($post->ID, $key . '_label', $single = true);
        // if there's a slide
        if($slide !== '') { ?>
            <section class="carousel slide" data-ride="carousel">
                <div class="carousel-inner">
                    <div class="item active">
                        <img src="<?php echo $slide; ?>" class="slider-images" />
                    </div>
                    <div class="carousel-caption">
                        <h2><?php if($slide_text !== '') { echo $slide_text; } else { echo the_title(); } ?></h2>
                    </div>
                </div>
            </section>
        <?php } // end if statement
    } 
?>

Vous pouvez changer $max_slides pour parcourir plus de 4

2
Aric Watson