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ドクターまでお気軽にお送りください