postmetaで1つのメタキーを持つ配列を保存するにはどうすればよいですか?


17

postmataに保存された配列があり、各配列キーがメタキーになります。配列全体を1つのメタキーで保存するようにコードを変更します。どうやってするか?ありがとう!

$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)を試しましたが、投稿を保存した後、メタが保存されていないことがわかります。
ジェニー

ああ、すみません、保存されました、WPカスタムフィールドテーブルに表示されませんでした。phpAdminで見つけました。ありがとう!
ジェニー

get_post_meta($ post_ID、 'poddata');でデータを取得します。var_dumpからarray(0)を取得します。配列全体を取得するにはどうすればよいですか?
ジェニー

どういたしまして!print_r()を使用してみてください... echo "<pre>"; print_r($ poddata); echo "</ pre>";
ラトウィックガンガード

print_r($ poddata)はArray()を示しています
ジェニー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.