Je construis une structure de type poste personnalisée assez complexe et j'aurais besoin d'aide pour mes métaboxes.
Ce que je veux faire:
have_fields_and_multi()
, l'utilisateur entre des données dans de simples champs de saisie de texte (avec un bouton "Ajouter un nouveau")select
dans un autre métabox.Pour faire simple, voici une maquette (également jointe à ce message): http://idzr.org/0c95
J'ai la première partie de travail, c'est facile. Mais je n'arrive pas à comprendre comment faire fonctionner la deuxième partie. Si j'utilise une while($mb->have_fields_and_multi('aaa'))
dans une autre while($mb->have_fields_and_multi('bbb'))
, la page est infinie (la boucle ne se termine pas. Si j'utilise foreach
, j'ai d'autres problèmes.
Avez-vous une idée de la façon dont je peux y arriver? Merci!!!
Ok, j'ai finalement réussi à résoudre ça tout seul. C'est possible grâce à:
Créez le premier champ:
<?php
while($mb->have_fields_and_multi('types')):
$mb->the_group_open();
$mb->the_field('type');
?>
<input type="text" id="<?php $mb->the_name(); ?>" name="<?php $mb->the_name(); ?>" value="<?php $mb->the_value(); ?>" />
<a href="#" class="dodelete button">Remove</a>
<?php
$mb->the_group_close();
endwhile;
?>
<a href="#" class="docopy-types button" style="float: left">Add new</a>
<a href="#" class="dodelete-types button" style="float: right">Delete all</a>
Créez le deuxième lot de champs en utilisant foreach
pour extraire les données des premiers champs et placez-les dans une select
:
<?php
while($mb->have_fields_and_multi('details')):
$mb->the_group_open();
$mb->the_field('detail_select');
?>
<select name="<?php $mb->the_name(); ?>">
<option value="">Choose...</option>
<?php foreach ($meta['types'] as $types) { ?>
<option value="<?php echo $types['type']; ?>"<?php $mb->the_select_state($types['type']); ?>><?php echo $types['type']; ?></option>
<?php } ?>
</select>
<?php $mb->the_field('detail_title'); ?>
<label>Description</label>
<input type="text" id="<?php $mb->the_name(); ?>" name="<?php $mb->the_name(); ?>" value="<?php $mb->the_value(); ?>" /><br />
<a href="#" class="dodelete button">Remove</a>
<?php
$mb->the_group_close();
endwhile;
?>
<a href="#" class="docopy-estate_details button">Add new</a>
<a href="#" class="dodelete-estate_details button">Delete all</a>