Cum să salvezi un array cu o singură metakey în postmeta?
Am un array salvat în postmeta, unde fiecare cheie din array devine o metakey. Vreau să modific codul pentru a salva întregul array cu o singură metakey. Cum pot face asta? Mulțumesc!
$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
);
// Parcurge fiecare element din array
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 ) );
}

Nu este nevoie să parcurgi valorile. Pur și simplu folosește update_post_meta($post_ID, {cheie}, {array de valori})
, ar trebui să funcționeze!
<?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 inserează o nouă intrare dacă nu există, altfel o actualizează
update_post_meta($post_ID, 'poddata', $poddata);
?>
Atât! Când vrei să obții datele pentru utilizare, folosește următoarea comandă:
$poddata = get_post_meta($post_ID, 'poddata');
$poddata reprezintă array-ul de valori.

Am încercat update_post_meta($post_ID, 'poddata', $postdata), după salvarea postării, văd că metadatele nu au fost salvate.

oh, scuze, s-au salvat, nu le-am văzut în tabelul WP Custom Fields. Le-am găsit doar în phpAdmin. Mulțumesc!

Când încerc să preiau datele prin get_post_meta($post_ID, 'poddata'); Prin var_dump primesc array(0). Cum pot obține întregul array?

Cu plăcere! Încearcă să folosești print_r()... echo "<pre>"; print_r($poddata); echo "</pre>";

Ohh... atunci valorile nu sunt stocate. Obții un array gol. Am testat exemplul local și a funcționat corect. Încearcă un print_r al array-ului de valori înainte de update_post_meta. Probabil nu primește nicio valoare.

Este stocat, îl pot vedea în phpAdmin, noile postări au metakey "pod" și valoarea array-ului. Doar că nu îl pot prelua.

Jenny, încearcă și soluția de mai sus.
@Bainternet Am omis intenționat al treilea parametru, care este flag-ul 'single', deoarece valoarea meta este un array în get_post_meta. Este necesar atunci când lucrezi cu array-uri în loc de șiruri de caractere ca valori meta? Îl folosesc doar când stochez șiruri de caractere ca valori meta.

Parametrul "true" al treilea ar trebui sărit dacă ai mai multe câmpuri cu același nume, valoarea lui poate fi un string, boolean, integer sau array dar nu despre asta este acest parametru.

Mulțumesc! Acum am o înțelegere clară despre parametrul 'true'!

Actualizează sau inserează. Dar șterge și elementele care nu există în noul array?
