add_meta()
は、WordPress の管理画面(投稿編集画面)でカスタムフィールドを追加する際に使用される内部関数です。この関数は、$_POST
から送信されたメタデータを処理し、add_post_meta()
を使って投稿メタデータとして保存します。
一般的なテンプレートタグとしての利用は想定されていませんが、管理画面のカスタマイズを行う際に活用できます。
目次
機能の説明
- 投稿編集画面のカスタムフィールドの追加処理
$_POST
経由でメタデータを保存する- 内部的に
add_post_meta()
を呼び出す
この関数は、カスタムフィールドの metakey
(キー)と metavalue
(値)を $_POST
から取得し、add_post_meta()
を使って投稿メタデータとして保存します。
注意点
- 管理画面のカスタムフィールド機能に依存しているため、通常のテンプレートでは使用しません。
- 直接呼び出すことは推奨されていない(
add_post_meta()
を使うべき)。 $_POST
から取得したデータを処理するため、フロントエンドでは動作しません。
シンプルなコード例
管理画面の投稿編集画面から add_meta()
を実行すると、$_POST
から送信されたデータが保存されます。
投稿メタデータを追加する場合
if (isset($_POST['custom_field_key']) && isset($_POST['custom_field_value'])) {
$_POST['metakeyinput'] = sanitize_text_field($_POST['custom_field_key']);
$_POST['metavalue'] = sanitize_text_field($_POST['custom_field_value']);
add_meta($post_id);
}
$_POST['metakeyinput']
にメタキーをセット$_POST['metavalue']
にメタ値をセットadd_meta($post_id)
を実行して保存
※ この処理は管理画面用であり、テンプレートでの使用は非推奨。
使い方の説明
add_meta()
の関数定義
function add_meta( $post_id ) {
$post_id = (int) $post_id;
$metakeyselect = isset($_POST['metakeyselect']) ? wp_unslash(trim($_POST['metakeyselect'])) : '';
$metakeyinput = isset($_POST['metakeyinput']) ? wp_unslash(trim($_POST['metakeyinput'])) : '';
$metavalue = isset($_POST['metavalue']) ? $_POST['metavalue'] : '';
if (is_string($metavalue)) {
$metavalue = trim($metavalue);
}
if ((( '#NONE#' !== $metakeyselect ) && !empty($metakeyselect)) || !empty($metakeyinput)) {
if ('#NONE#' !== $metakeyselect) {
$metakey = $metakeyselect;
}
if ($metakeyinput) {
$metakey = $metakeyinput;
}
if (is_protected_meta($metakey, 'post') || !current_user_can('add_post_meta', $post_id, $metakey)) {
return false;
}
$metakey = wp_slash($metakey);
return add_post_meta($post_id, $metakey, $metavalue);
}
return false;
}
add_meta()
の処理内容
$_POST
からカスタムフィールドのデータを取得metakeyinput
(手入力のキー)とmetakeyselect
(既存キー選択)を判定- 適切なメタキーを決定し、
add_post_meta()
を実行 - 管理者権限を持つユーザーのみ実行可能
一緒に使うことが多い関連タグ
add_post_meta()
通常のメタデータ追加にはこちらを使用する。
add_post_meta($post_id, 'custom_price', '1000');
update_post_meta()
既存のメタデータを更新する。
update_post_meta($post_id, 'custom_price', '1500');
delete_post_meta()
特定のメタデータを削除する。
delete_post_meta($post_id, 'custom_price');
追加情報で取得したい場合
get_post_meta()
を使う
保存したメタデータを取得する場合
$custom_price = get_post_meta($post_id, 'custom_price', true);
echo $custom_price;
get_user_meta()
でユーザーメタを取得
$membership_level = get_user_meta($user_id, 'membership_level', true);
echo $membership_level;
想定されるトラブル
add_meta()
が動作しない
$_POST
に適切なデータがセットされていない- ユーザーの権限が不足している
- フロントエンドで実行しようとしている
解決方法
$_POST
のデータをvar_dump($_POST);
で確認current_user_can('add_post_meta')
をチェックadd_post_meta()
を直接使用する
メタデータが更新されず、重複する
add_meta()
は add_post_meta()
を使用するため、既存データの上書きではなく追加処理を行う
解決方法
update_post_meta()
を使用して更新する
update_post_meta($post_id, 'custom_price', '2000');
Q&A
まとめ
add_meta()
は管理画面の「カスタムフィールド」機能専用の関数$_POST
のデータを受け取り、add_post_meta()
を通じて保存する- 通常のテンプレートやフロントエンドでは
add_post_meta()
を使用すべき - メタデータの取得には
get_post_meta()
を使用する
管理画面カスタマイズを行う場合にのみ使用し、通常の開発では add_post_meta()
を活用するのがベストです。
コメント