web-dev-qa-db-fra.com

Utilisation des valeurs de métabox WPAlchemy dans un autre métabox

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:

  1. Merci à la fonction have_fields_and_multi(), l'utilisateur entre des données dans de simples champs de saisie de texte (avec un bouton "Ajouter un nouveau")
  2. Les valeurs des entrées de texte précédentes doivent être utilisées pour créer une liste déroulante 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!!!

2
Sinklar

Ok, j'ai finalement réussi à résoudre ça tout seul. C'est possible grâce à:

  1. 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>
    
  2. 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>
    
2
Sinklar