Come salvare un array con una sola metakey in postmeta?
Ho un array salvato in postmeta, dove ogni chiave dell'array diventa una metakey. Voglio modificare il codice per salvare l'intero array con una sola metakey. Come posso farlo? Grazie!
$poddata = Array(
'pod_id' => $this->pod_id,
'url' => $this->url,
'name' => $this->name,
'description' => $this->description,
'service' => $this->service,
'status' =>$this->status,
'price' => $this->price
);
foreach ( $poddata as $k => $v ){
if ( get_post_meta( $this->id, $k ) == '' )
add_post_meta( $this->id, $meta_box, $v, true );
elseif ( $v != get_post_meta( $this->id, $k, true ) )
update_post_meta( $this->id, $k, $v );
elseif ( $v == '' )
delete_post_meta( $this->id, $k, get_post_meta( $this->id, $k, true ) );
}

Non è necessario ciclare tra i valori. Basta usare update_post_meta($post_ID, {key}, {array di valori})
, dovrebbe funzionare!
<?php
$poddata = Array(
'pod_id' => $this->pod_id,
'url' => $this->url,
'name' => $this->name,
'description' => $this->description,
'service' => $this->service,
'status' =>$this->status,
'price' => $this->price
);
// Update inserisce una nuova voce se non esiste, altrimenti la aggiorna
update_post_meta($post_ID, 'poddata', $poddata);
?>
Ecco fatto! Quando lo recuperi per l'utilizzo, fai così:
$poddata = get_post_meta($post_ID, 'poddata');
$poddata è l'array di valori.

Ho provato update_post_meta($post_ID, 'poddata', $postdata), dopo aver salvato il post, vedo che il meta non viene salvato.

oh, scusa, è stato salvato, non lo vedevo nella tabella WP Custom Fields. L'ho appena trovato in phpAdmin. Grazie!

Quando recupero i dati con get_post_meta($post_ID, 'poddata'); ottengo array(0) dal var_dump. Come posso ottenere l'intero array?

Prego! Prova a usare print_r()... echo "<pre>"; print_r($poddata); echo "</pre>";

Oh... allora i valori non sono memorizzati. Stai ottenendo un array vuoto. Ho provato l'esempio localmente e ha funzionato bene. Prova un print_r dell'array di valori prima di update_post_meta. Probabilmente non sta ricevendo alcun valore.

È memorizzato, posso vederlo in phpAdmin, i nuovi post hanno una metachiave "pod" e il valore dell'array. Solo che non riesco a recuperarlo.

Jenny, prova anche la soluzione sopra.
@Bainternet Ho deliberatamente saltato il terzo parametro, che è il flag 'single', poiché il valore meta è un array in get_post_meta. È necessario quando si gestiscono array invece di stringhe come valori meta? Lo uso solo quando memorizzo stringhe come valori meta.

Il terzo parametro "true" dovrebbe essere omesso se hai più campi con lo stesso nome, il suo valore può essere una stringa, booleano, intero o array ma non è questo lo scopo del parametro.

Aggiorna o inserisce. Ma cancella anche gli elementi che non esistono nel nuovo array?
