概要
add_metadata
関数は、WordPressオブジェクトにカスタムメタ情報を追加するための関数です。主に以下のような機能を実装する際によく使われます。
- 投稿やページにカスタムフィールドを追加する
- ユーザーのプロファイルにメタ情報を追加する
- ターム(カテゴリーやタグ)に関連するメタ情報を保存する
- カスタム投稿タイプのパラメータを追加する
- 特定のデータをキャッシュするための情報を付与する
- プラグインでの設定情報を保存する
- ウィジェットやサイドバーにメタ情報を追加する
- テーマ内のデータ管理を強化する
構文
add_metadata( $meta_type, $object_id, $meta_key, $meta_value, $unique );
パラメータ
$meta_type
(string) : メタ情報の種類(例: ‘post’, ‘user’, ‘term’など)$object_id
(int) : メタ情報を関連付けるオブジェクトのID$meta_key
(string) : メタ情報のキー(名前)$meta_value
(mixed) : メタ情報の値$unique
(bool) : 同じキーが存在する場合、唯一の値として追加するかどうか(省略可能、デフォルトはfalse)
戻り値
- メタ情報を正常に追加できた場合は追加されたメタ情報のIDを返し、失敗した場合はfalseを返します。
関連する関数
使用可能なバージョン
- 追加されたバージョン: 2.9
コアファイルのパス
- wp-includes/meta.php
この関数のアクションでの使用可能性
アクション | 使用例 |
---|---|
mu_plugin_loaded | |
registered_post_type | |
plugins_loaded | |
wp_roles_init | |
setup_theme | |
after_setup_theme | |
set_current_user | |
init | |
register_sidebar | |
wp_loaded | 〇 |
send_headers | |
parse_query | |
pre_get_posts | |
wp | |
template_redirect | |
get_header | |
wp_head |
サンプルコード
サンプル1: 投稿にカスタムメタ情報を追加
add_action('save_post', 'my_save_post_meta');
function my_save_post_meta($post_id) {
$meta_value = 'カスタム値';
add_metadata('post', $post_id, 'カスタムキー', $meta_value);
}
このサンプルは、投稿が保存されるときにカスタムメタ情報を追加します。
サンプル2: ユーザーのメタ情報を追加
add_action('user_register', 'my_user_register');
function my_user_register($user_id) {
add_metadata('user', $user_id, 'ユーザーカスタムキー', 'ユーザーのカスタム値');
}
このサンプルは、新規ユーザーが登録された際にカスタムメタ情報を追加します。
サンプル3: タームにメタ情報を追加
add_action('created_category', 'my_add_category_meta');
function my_add_category_meta($term_id) {
add_metadata('term', $term_id, 'カテゴリーカスタムキー', 'カテゴリーカスタム値');
}
このサンプルは、新しいカテゴリーが作成される際にカスタムメタ情報を追加します。
サンプル4: 特定のポストのメタ情報をユニークに追加
$position_meta = 'ユニーク値';
add_metadata('post', $post_id, 'ポジション', $position_meta, true);
このサンプルでは、特定のポストにユニークなメタ情報を追加します。すでに同じキーが存在する場合は追加されません。
サンプル5: プラグインに設定情報を保存
function my_plugin_settings() {
$setting_value = '設定値';
add_metadata('plugin', 1, 'プラグイン設定キー', $setting_value);
}
このサンプルは、プラグインの設定情報をメタ情報として保存します。
引用元のページは提供されていないため、上記のコードは著作権フリーのサンプルコードとして記載されています。