MENU

add_meta_box()

add_meta_box() は、WordPress の投稿編集画面にカスタムメタボックス(追加の入力エリアやオプション)を追加するための関数です。

これを利用すると、投稿やカスタム投稿タイプの編集画面に独自の情報を入力する欄を作成できます。

例えば、カスタムフィールドの管理、商品情報の追加、SEO用の設定フィールドなど、用途に応じて自由にカスタマイズ可能です。

目次

機能の説明

add_meta_box() は、WordPress の管理画面の投稿編集画面に追加のカスタム入力欄を設置するための関数です。これにより、管理者や投稿者が記事ごとに追加情報を入力しやすくなります。

主な用途

  • 投稿やカスタム投稿タイプにカスタムフィールドを追加
  • 商品の価格やスペック情報などを入力できる欄を作成
  • SEO設定やカスタム設定を管理しやすくする
  • 記事の追加情報(例:関連リンクや著者情報など)を簡単に管理

シンプルなコード例

function custom_meta_box() {
    add_meta_box(
        'custom_meta',               // メタボックスのID
        'カスタム情報',              // メタボックスのタイトル
        'custom_meta_box_callback', // コールバック関数
        'post',                      // 表示する投稿タイプ
        'normal',                    // 表示位置
        'high'                       // 優先度
    );
}
add_action('add_meta_boxes', 'custom_meta_box');
  • 'custom_meta':メタボックスの一意のID
  • 'カスタム情報':メタボックスのタイトル
  • 'custom_meta_box_callback':メタボックスの内容を表示するコールバック関数
  • 'post':このメタボックスを表示する投稿タイプ(カスタム投稿タイプにも対応可能)
  • 'normal':表示するエリア(side ならサイドバーに表示)
  • 'high':優先度(low にすると下の方に表示)

使い方の説明

メタボックスを追加するには、以下の手順で実装します。

STEP
メタボックスを追加する

上記の add_meta_box()add_action('add_meta_boxes', 'custom_meta_box'); でフックし、投稿編集画面にメタボックスを追加します。

STEP
メタボックスの中身を作成

メタボックスの中で入力欄を表示するコールバック関数を定義します。

function custom_meta_box_callback($post) {
    $value = get_post_meta($post->ID, '_custom_meta_key', true);
    echo '<label for="custom_meta_field">カスタムデータ:</label>';
    echo '<input type="text" id="custom_meta_field" name="custom_meta_field" value="' . esc_attr($value) . '" />';
}
STEP
入力データを保存する

入力されたデータを保存する処理を追加します。

function save_custom_meta($post_id) {
    if (array_key_exists('custom_meta_field', $_POST)) {
        update_post_meta(
            $post_id,
            '_custom_meta_key',
            sanitize_text_field($_POST['custom_meta_field'])
        );
    }
}
add_action('save_post', 'save_custom_meta');

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

get_post_meta()

カスタムメタデータを取得する際に使います。

$meta_value = get_post_meta(get_the_ID(), '_custom_meta_key', true);
echo $meta_value;

update_post_meta()

カスタムメタデータを更新するために使用します。

update_post_meta($post_id, '_custom_meta_key', '新しいデータ');

delete_post_meta()

不要になったメタデータを削除します。

delete_post_meta($post_id, '_custom_meta_key');

追加情報で取得したい場合

add_meta_box() は、投稿編集画面に独自のメタデータ入力フィールドを追加するものですが、すでにあるメタデータを取得するには get_post_meta() を使用します。

get_post_meta() の使用例

$meta_value = get_post_meta(get_the_ID(), '_custom_meta_key', true);
if ($meta_value) {
    echo '入力されたデータ: ' . esc_html($meta_value);
}

この関数を使用すると、add_meta_box() で登録されたメタデータをフロントエンドで表示できます。

想定されるトラブル

メタボックスが表示されない

メタボックスが投稿編集画面に表示されない。

解決方法

  • add_meta_boxes フックを正しく使用しているか確認する
  • 指定した投稿タイプ(例:post)が正しいか確認する
  • add_meta_box() の ID が重複していないか確認する

メタデータが保存されない

入力フィールドに値を入れても保存されない。

解決方法

  • save_post フックを使っているか確認する
  • $_POST['custom_meta_field'] のデータが正しく送信されているか確認する
  • update_post_meta() の引数が正しいか確認する

Q&A

add_meta_box() はどの投稿タイプにも使えますか?

はい、post の部分を page やカスタム投稿タイプ(例:product)に変更すれば適用できます。

どのユーザー権限で編集できますか?

通常、投稿編集ができるユーザー(edit_posts 権限)が編集可能ですが、特定の権限で制限することもできます。

すでにあるメタボックスを削除することはできますか?

はい、remove_meta_box() を使用することで既存のメタボックスを削除できます。

まとめ

add_meta_box() は、WordPress の投稿編集画面にカスタムメタボックスを追加するための関数です。これにより、記事ごとに追加情報を簡単に管理できるようになります。

データの取得には get_post_meta()、保存には update_post_meta() を使います。

ただし、正しく表示されない場合は add_meta_boxes フックが適切に適用されているか確認する必要があります。

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

コメント

コメントする

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

目次