Cum să stochezi mai multe valori de intrare cu același meta_key
Există vreo modalitate de a stoca valorile de intrare din mai multe câmpuri de meta box-uri personalizate cu același meta_key
?
Folosesc următorul cod pentru a stoca O singură valoare pentru meta_key
'startdate':
function startdate() {
global $post;
$custom = get_post_custom($post->ID);
$startdate = $custom["startdate"][0];
?>
<label>Data de început</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"]);
}
Dacă aș avea un al doilea câmp de intrare, cum aș putea stoca valoarea lui cu un meta_id
diferit dar același meta_key
(startdate)? Mulțumesc mult!
(Dacă folosesc funcționalitatea built-in de câmpuri personalizate, pot salva mai multe valori pentru același meta key...)

Modificați formularul conform sugestiei:
function startdate() {
global $post;
$custom = get_post_custom($post->ID);
echo "<label>Date de început</label><br/>";
for ($i=0; $i<count($custom["startdate"]);$i++) {
echo "<input type=\"text\" name=\"startdate[".$i."]\" value=\"".$custom["startdate"][$i]."\" />";
}
}
Va trebui să eliminați și să reinstalați intrările individuale de 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);
}
}
}
Apoi, desigur, va trebui să adăugați un mecanism de adăugare/ștergere în formularul metabox, probabil prin JS.

Uau, aproape am ajuns! Am două probleme: (1) Când creez un articol nou (eveniment), primesc un avertisment în zona de editare: "Warning: Invalid argument supplied for foreach()". Când introduc date în formular și salvez articolul, valorile introduse sunt stocate corect ca intrări individuale de postmeta (le văd în baza de date) și avertismentul dispare. Dar (2) la reîncărcare, meta_valorile nu sunt setate ca valori în formular, așa că câmpurile de introducere par a fi goale. Ai vreo idee cum să rezolv aceste probleme? Mulțumesc mult!

@Christoph: Scuze, prostie de leneș din partea mea. În primul rând, wp_is_post_revision()
ia id-ul postului ca parametru, apoi nu am ajustat corect atributul value al câmpurilor în partea de formular și, în final, am adăugat niște verificări de bază în funcția de actualizare. Vezi modificările.

După cum a menționat t31os, încercați să schimbați input-urile din formular pentru a folosi name="startdate[]"
, apoi parcurgeți array-ul salvând fiecare valoare:
foreach ($_POST["startdate"] as $datevalue) {
update_post_meta($post->ID, "startdate", $datevalue);
}
