add_post_meta(メタ値追加)とupdate_post_meta(メタ値更新)の違い使い分けについて解説いたします。
add_post_metaとupdate_post_meta
・add_post_metaの書式は下記となります。
add_post_meta(ポストID, メタキー, 値, 任意の変数:このメタキーの値を一つにするかどうか?=デフォルトfalse(否) )
つまりadd_post_metaは同じキーで使用した場合、使うたびにメタ値が増えていきます。
例えば、下記のように2回呼ぶと2つ同じキーの同じ値が投稿に付加データとして記録されます。
add_post_meta(1, 'mymetakey', 1 ); add_post_meta(1, 'mymetakey', 1 );
ただし、4つ目の因数をtrueにすると必ずそのメタキーの値は1つになるようになります。(ただし、すでにmymetakeyの何らかの値がある場合は無視されますので1つも記録されません)
add_post_meta(1, 'mymetakey', 1,true ); add_post_meta(1, 'mymetakey', 1,true );
↑この場合メタキー’mymetakey’のメタ値の保存は1つだけになります。
・update_post_metaの書式は下記となります。
update_post_meta( ポストID, メタキー, 値, 任意の変数:どの値をもともと持っている物を書き換えるか?=デフォルトすべて )
update_post_metaはメタキー、メタ値双方を指定すると、任意の値を持ったものだけを書き換えることができるものです。
また、現在そのキーのメタデータが無くても呼ぶとデータを追加してくれます。
つまり、下記の二つのコールはもし’mymetakey’の何らかの値がない場合は同じ意味を持つことになります。
add_post_meta(1, 'mymetakey', 1,true ); update_post_meta(1, 'mymetakey', 1);
※’mymetakey’の何らかの値がある場合は2番目のupdate_post_metaのみ実行されることになります。
下記のコードの実行の場合どのようになるか見ていきましょう。
update_post_meta(1, 'mymetakey', 1,2);
‘mymetakey’ の何らかの値がすでにありその値が2でない場合→何もしません
‘mymetakey’ の何らかの値がすでにありその値が2の場合→メタ値2のデータのみを書き換えます
‘mymetakey’ のメタデータが存在しない場合→値1でメタデータ自体を追加します
関数の成功
関数が値を追加できたり、書き換えることができた場合は、wp_postmeta のその行のIDの数字を返します。失敗した場合はfalseを返します。
ご参考になりましたら幸いです。
WordPress ワードプレスのテーマやプラグインの修正やコーディングのご相談・ご依頼はWPドクターまでお気軽にお送りください