วิธีการบันทึกอาร์เรย์ด้วยหนึ่ง metakey ใน postmeta?


17

ฉันมีอาร์เรย์ที่บันทึกไว้ใน postmata แต่ละคีย์อาร์เรย์กลายเป็น metakey ฉันต้องการเปลี่ยนรหัสเพื่อบันทึกทั้งอาร์เรย์ด้วยหนึ่ง metakey ทำอย่างไร ขอบคุณ!

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

}

คำตอบ:


25

คุณไม่จำเป็นต้องวนซ้ำค่าต่างๆ เพียงใช้update_post_meta($post_ID, {key}, {array of vals})มันควรทำ!

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

แค่นั้นแหละ! เมื่อคุณดึงข้อมูลมาเพื่อการใช้งานให้ทำดังต่อไปนี้:

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

$ poddata เป็นอาร์เรย์ของค่า


ฉันลอง update_post_meta ($ post_ID, 'poddata', $ postdata) หลังจากบันทึกการโพสต์ฉันเห็น meta ไม่ได้บันทึก
เจนนี่

โอ้ขอโทษด้วยมันช่วยฉันไม่เห็นมันบน WP Custom Fields Table ฉันเพิ่งพบมันใน phpAdmin ขอบคุณ!
เจนนี่

เมื่อดึงข้อมูลอีกครั้งโดย get_post_meta ($ post_ID, 'poddata'); ฉันได้รับ array (0) จาก var_dump ฉันจะรับอาร์เรย์ทั้งหมดได้อย่างไร
เจนนี่

ยินดีต้อนรับคุณ! ลองใช้ print_r () ... echo "<pre>"; print_r ($ poddata); echo "</pre>";
Rutwick Gangurde

print_r ($ poddata) แสดง Array ()
Jenny
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.