当サイト、Codex 日本語版は今後積極的な更新は行わない予定です。後継となる新ユーザーマニュアルは、https://ja.wordpress.org/support/ にあります。
万が一、当サイトで重大な問題を発見した際などは、フォーラムWordSlack #docs チャンネルでお知らせください。</p>

関数リファレンス/update post meta

提供: WordPress Codex 日本語版
< 関数リファレンス
2015年7月22日 (水) 09:56時点におけるMiccweb (トーク | 投稿記録)による版 (最新版のマージ)

移動先: 案内検索

update post meta()は、指定した投稿に存在するカスタムフィールドの値を更新します。add_post_meta() の代わりとしても使うことができます。この関数はまず、$post_id で ID を指定した投稿に $meta_key を持つカスタムフィールドが存在することを確認します。もし存在しなければ代わりに add_post_meta($post_id, $meta_key, $meta_value) を実行し、その結果(常に true)を返します。

Returns meta_id if the meta doesn't exist, otherwise returns true on success and false on failure. It also returns false if the value submitted is the same as the value that is already in the database.

Please note that if your database collation is case insensitive (has with suffix _ci) then update_post_meta and delete_post_meta and get_posts will update/delete/query the meta records with keys that are upper or lower case. However get_post_meta will apparently be case sensitive due to WordPress caching. See https://core.trac.wordpress.org/ticket/18210 for more info.

使い方

<?php update_post_meta($post_id, $meta_key, $meta_value, $prev_value); ?> 

パラメータ

$post_id
整数) (必須) 更新したいカスタムフィールドを持つ投稿の ID。
初期値: なし
$meta_key
文字列) (必須) 更新したいカスタムフィールドのキー。(this should be raw as opposed to sanitized for database queries)
初期値: なし
$meta_value
mixed) (必須) カスタムフィールドの新しい値。 A passed array will be serialized into a string.(this should be raw as opposed to sanitized for database queries)
初期値: なし
$prev_value
mixed) (オプション) 更新したいカスタムフィールドの元の値。これは、同じキーを持つカスタムフィールドを区別するパラメータです。省略すると、指定したキーを持つカスタムフィールドはすべて値が更新されます。
初期値: Empty

戻り値

(mixed) 
Returns meta_id if the meta doesn't exist, otherwise returns true on success and false on failure. NOTE: If the meta_value passed to this function is the same as the value that is already in the database, this function returns false.


用例

デフォルトの使い方

ID が76の投稿で、キーが my_key のカスタムフィールドの値を Steve に変更します。

<?php update_post_meta(76, 'my_key', 'Steve'); ?>

その他の例

ID が76の投稿に、以下の4つのカスタムフィールドがある場合:

[key_1] => 'Happy'
[key_1] => 'Sad'
[key_2] => 'Gregory'
[my_key] => 'Steve'

key_2 のキーを持つカスタムフィールドの値を Hans に変更するには:

<?php update_post_meta(76, 'key_2', 'Hans'); ?>

key_1 のキーを持つカスタムフィールドで値を Sad から Happy に変更するには:

<?php update_post_meta(76, 'key_1', 'Happy', 'Sad'); ?>

この結果、カスタムフィールドは以下のようになります:

[key_1] => 'Happy'
[key_1] => 'Happy'
[key_2] => 'Hans'
[my_key] => 'Steve'

注: この関数は、条件に一致するすべてのカスタムフィールドを変更します。

始めの key_1 のキーを持つカスタムフィールドの値を Happy から Excited に変更するには:

<?php 
  update_post_meta( 76, 'key_1', 'Excited', 'Happy' );

  // または

  update_post_meta( 76, 'key_1', 'Excited' );

  // To change all fields with the key "key_1":

  $key1_values = get_post_custom_values( 'key_1', 76 );
  foreach ( $key1_values as $value )
    update_post_meta( 76, 'key_1', 'Excited', $value );
?>

さらに詳しい例は post meta 関数の例 を見てください。

文字のエスケープ

Post meta values are passed through the stripslashes() function upon being stored, so you will need to be careful when passing in values (such as JSON) that might include \ escaped characters.

エスケープ値を保存しない

Consider the JSON value {"key":"value with \"escaped quotes\""}:

<?php
$escaped_json = '{"key":"value with \\"escaped quotes\\""}';
update_post_meta( $id, 'escaped_json', $escaped_json );
$broken = get_post_meta( $id, 'escaped_json', true );
/*
$broken, after passing through stripslashes() ends up unparsable:
{"key":"value with "escaped quotes""}
*/
?>

回避方法

By adding one more level of \ escaping using function wp_slash (introduced in WP 3.6), you can compensate for the call to stripslashes():

<?php
$escaped_json = '{"key":"value with \\"escaped quotes\\""}';
update_post_meta( $id, 'double_escaped_json', wp_slash($escaped_json) );
$fixed = get_post_meta( $id, 'double_escaped_json', true );
/*
$fixed, after stripslashes(), ends up being stored as desired:
{"key":"value with \"escaped quotes\""}
*/
?>

ソースコード

update_post_meta()wp-includes/post.phpにあります。

更新履歴

新規導入: 1.5.0



カスタムフィールド: the_meta(), get_post_meta(), add_post_meta(), update_post_meta(), delete_post_meta(), get_post_custom(), get_post_custom_values(), get_post_custom_keys() (post_meta 関数の例 /en も参照)


関数リファレンステンプレートタグ目次もご覧ください。

最新英語版: WordPress Codex » Function Reference/update post meta最新版との差分