Question

est-il un moyen de stocker la valeur d'entrée provenant de plusieurs champs de la boîte de méta personnalisée avec le même meta_key? J'utilise le code suivant pour stocker une valeur pour la meta_key « startdate »:

function startdate() {
  global $post;
  $custom = get_post_custom($post->ID);
  $startdate = $custom["startdate"][0];
  ?>

<label>Startdate</label><br/>
<input type="text" name="startdate" value="<?php echo $startdate; ?>"/>

<?php }

add_action('save_post', 'save_details');
function save_details(){
  global $post;
  update_post_meta($post->ID, "startdate", $_POST["startdate"]);
}

Si j'avais un deuxième champ d'entrée, comment puis-je conserver sa valeur avec un autre meta_id mais le même meta_key (startdate)? Merci beaucoup!

(Si j'utilise la fonctionnalité intégrée dans le champ personnalisé que je peux enregistrer plusieurs valeurs pour la même clé de méta ...)

Était-ce utile?

La solution

Modifier votre formulaire comme le suggère:

function startdate() {
    global $post;
    $custom = get_post_custom($post->ID);
    echo "<label>Startdates</label><br/>";
    for ($i=0; $i<count($custom["startdate"]);$i++) {
        echo "<input type=\"text\" name=\"startdate[".$i."]\" value=\"".$custom["startdate"][$i]."\" />";
    }
}

Vous devrez supprimer et de rétablir vos entrées individuelles postmeta:

add_action('save_post', 'save_details');

function save_details($post_id) {
    if ($parent_id = wp_is_post_revision($post_id)) $post_id = $parent_id;

    if (!empty($_POST['startdate']) && is_array($_POST['startdate'])) {
        delete_post_meta($post_id, 'startdate');
        foreach ($_POST['startdate'] as $startdate) {
            add_post_meta($post_id, 'startdate', $startdate);
        }
    }
}

Alors, bien sûr, vous aurez besoin d'ajouter une sorte d'ajouter / supprimer mécanisme à votre formulaire METABOX, probablement par JS.

Autres conseils

Comme mentionné par t31os essayez de changer vos entrées de formulaire à utiliser name="startdate[]" boucle puis à travers le réseau d'économie chaque valeur:

foreach ($_POST["startdate"] as $datevalue) {
    update_post_meta($post->ID, "startdate", $datevalue);
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à wordpress.stackexchange
scroll top