WordPress : wpalchemy problème de liste déroulante des champs répétitifs
Je dois autoriser l’utilisateur à sélectionner des éléments de portefeuille dans une liste déroulante, ces éléments de portefeuille sélectionnés seront affichés sur la page d’accueil.
J’ai utilisé la classe wpalchemy pour créer une section répétable contenant une liste déroulante de toutes les pages du portfolio.
Le problème est que chaque fois que je clique sur le bouton de mise à jour, une copie de la liste déroulante est automatiquement ajoutée à la liste répétitive.
<?php while($mb->have_fields_and_multi('col1-project')):
$mb->the_group_open();
$mb->the_field('portfolio-list1');
$args = array (
'name' => $mb->get_the_name(),
'id' => $mb->get_the_name(),
'selected' => html_entity_decode($mb->get_the_value()),
'post_type' => 'portfolio'
);
wp_dropdown_pages($args);
$mb->the_group_close();
endwhile; ?>
Essentiel : https://gist.github.com/alokjain-lucky/6682775
Solution n°1 trouvée
J’ai changé le code pour parcourir toutes les pages, au lieu d’utiliser wp_dropdown_pages()
la fonction.
Voici le nouveau code
<?php while($mb->have_fields_and_multi('col2-project')): ?>
<?php $mb->the_group_open(); ?>
<p>
<span>Select Project</span>
<?php $mb->the_field('project-id-2'); ?>
<select name="<?php $mb->the_name(); ?>">
<option value="">None</option>
<?php
global $thispost;
$myposts = get_pages('post_type=portfolio&post_status=publish');
foreach($myposts as $thispost) :
?>
<option value="<?php echo $thispost->ID; ?>" <?php $mb->the_select_state($thispost->ID);?> ><?php echo get_the_title($thispost->ID); ?></option>
<?php endforeach; ?>
<?php setup_postdata($thispost);?>
</select>
</p>
<?php $mb->the_group_close(); ?>
<?php endwhile; ?>
Le problème avec le code précédent était qu’il n’y avait pas de valeur vide, donc chaque fois qu’une nouvelle valeur était enregistrée lorsque le bouton de mise à jour était cliqué.
Maintenant, j’ai ajouté <option value="">None</option>
comme valeur par défaut.
0 commentaire