Wie speichere ich ein Array mit einem Metakey in Postmeta?

17

Ich habe ein Array in Postmata gespeichert, jeder Array-Schlüssel wird zu einem Metakey. Ich möchte den Code ändern, um das gesamte Array mit einem Metakey zu speichern. Wie geht das? Vielen Dank!

$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 ) );

}
Jenny
quelle

Antworten:

25

Sie müssen die Werte nicht durchlaufen. Verwenden update_post_meta($post_ID, {key}, {array of vals})Sie einfach , sollte es tun!

<?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 inserts a new entry if it doesn't exist, updates otherwise
update_post_meta($post_ID, 'poddata', $poddata);
?>

Das ist es! Wenn Sie es zur Verwendung abrufen, gehen Sie wie folgt vor:

    $poddata = get_post_meta($post_ID, 'poddata');

$ poddata ist das Array von Werten.

Rutwick Gangurde
quelle
Ich habe update_post_meta ($ post_ID, 'poddata', $ postdata) ausprobiert. Nach dem Speichern des Posts wird das Meta nicht gespeichert.
Jenny
oh, sorry, es wurde gespeichert, ich habe es nicht in der WP Custom Fields Table gesehen. Ich habe es gerade in phpAdmin gefunden. Vielen Dank!
Jenny
Beim Abrufen der Daten mit get_post_meta ($ post_ID, 'poddata'); Ich erhalte Array (0) von var_dump. Wie kann ich das ganze Array bekommen?
Jenny
Bitte! Versuchen Sie es mit print_r () ... echo "<pre>"; print_r ($ poddata); Echo "</ pre>";
Rutwick Gangurde
print_r ($ poddata) zeigt Array ()
Jenny