MENU

add_meta()

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() の処理内容

  1. $_POST からカスタムフィールドのデータを取得
  2. metakeyinput(手入力のキー)と metakeyselect(既存キー選択)を判定
  3. 適切なメタキーを決定し、add_post_meta() を実行
  4. 管理者権限を持つユーザーのみ実行可能

一緒に使うことが多い関連タグ

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() をテンプレートで使えますか?

いいえ。add_meta() は管理画面のカスタムフィールド用の関数なので、テンプレートでは add_post_meta() を使用してください。

add_meta() の代わりに使うべき関数は?

一般的な用途では add_post_meta() を推奨します。

add_meta() のデータはどこで使われる?

投稿編集画面のカスタムフィールドから入力されたデータを処理します。

まとめ

  • add_meta() は管理画面の「カスタムフィールド」機能専用の関数
  • $_POST のデータを受け取り、add_post_meta() を通じて保存する
  • 通常のテンプレートやフロントエンドでは add_post_meta() を使用すべき
  • メタデータの取得には get_post_meta() を使用する

管理画面カスタマイズを行う場合にのみ使用し、通常の開発では add_post_meta() を活用するのがベストです。

よかったらシェアしてね!
  • URLをコピーしました!

コメント

コメントする

This site uses Akismet to reduce spam. Learn how your comment data is processed.

目次