概要
add_meta_box
アクションは、WordPressの投稿ページに独自のメタボックスを表示するために使用されます。この機能は、投稿タイプにカスタム情報を追加する際や、特定のデータを管理者が入力できるようにするためによく利用されます。具体的には、次のようなシナリオで使われることが多いです。
- 投稿に関連する詳細情報を追加する
- カスタムフィールドの入力を促す
- 投稿の表示オプションを管理する
- サードパーティのプラグインと連携情報を表示する
- SEO設定を投稿に追加する
- 投稿の共著者を設定する
- 投稿のカスタムテンプレートを選択する
- アナリティクスやトラッキングコードの入力欄を提供する
構文
add_meta_box( $id, $title, $callback, $screen, $context, $priority, $callback_args );
パラメータ
$id
: メタボックスのID(ユニークな値)。$title
: メタボックスのタイトル。$callback
: メタボックスを描画するためのコールバック関数。$screen
: メタボックスを表示するスクリーン(投稿タイプやタクソノミー名など)。$context
: メタボックスの位置(通常はnormal
,side
,advanced
)。$priority
: メタボックスの優先度(default
,high
,low
)。$callback_args
: コールバック関数への引き渡し引数(オプション)。
戻り値
このアクションは返り値を持ちません。メタボックスを正常に追加すると、指定された条件が満たされている限り、WordPressの管理画面に表示されます。
関連する関数
使用可能なバージョン
add_meta_box
アクションは、WordPressバージョン2.5以降で使用可能です。
コアファイルのパス
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 |
サンプルコード
-
基本的なメタボックスを追加する
このサンプルは、投稿編集ページに基本的なメタボックスを追加します。function my_custom_meta_box() { add_meta_box( 'my_meta_box_id', 'My Custom Meta Box', 'my_meta_box_callback', 'post' ); } add_action( 'add_meta_boxes', 'my_custom_meta_box' ); function my_meta_box_callback( $post ) { echo '<label for="my_field">カスタムフィールド:</label>'; echo '<input type="text" id="my_field" name="my_field" value="' . get_post_meta( $post->ID, 'my_field', true ) . '" />'; }
引用元: https://developer.wordpress.org/reference/functions/add_meta_box/
-
メタボックスからデータを保存する
このサンプルは、メタボックスに入力されたデータを保存します。function save_my_custom_meta_box_data( $post_id ) { if ( array_key_exists( 'my_field', $_POST ) ) { update_post_meta( $post_id, 'my_field', sanitize_text_field( $_POST['my_field'] ) ); } } add_action( 'save_post', 'save_my_custom_meta_box_data' );
引用元: https://developer.wordpress.org/reference/functions/update_post_meta/
-
複数のメタボックスを追加する
このサンプルは、複数のメタボックスを投稿ページに追加します。function my_multiple_meta_boxes() { add_meta_box( 'meta_box_1', 'Meta Box 1', 'meta_box_1_callback', 'post' ); add_meta_box( 'meta_box_2', 'Meta Box 2', 'meta_box_2_callback', 'post' ); } add_action( 'add_meta_boxes', 'my_multiple_meta_boxes' ); function meta_box_1_callback( $post ) { echo '<input type="text" name="meta_box_1_field" value="' . get_post_meta( $post->ID, 'meta_box_1_field', true ) . '" />'; } function meta_box_2_callback( $post ) { echo '<input type="text" name="meta_box_2_field" value="' . get_post_meta( $post->ID, 'meta_box_2_field', true ) . '" />'; }
引用元: https://developer.wordpress.org/reference/functions/add_meta_box/
-
カスタムメタボックスでセキュリティチェック
このサンプルは、メタボックスデータの保存時にセキュリティチェックを追加します。function secure_save_meta_box_data( $post_id ) { if ( ! isset( $_POST['my_meta_box_nonce'] ) || ! wp_verify_nonce( $_POST['my_meta_box_nonce'], 'my_meta_box' ) ) { return; } if ( array_key_exists( 'my_field', $_POST ) ) { update_post_meta( $post_id, 'my_field', sanitize_text_field( $_POST['my_field'] ) ); } } add_action( 'save_post', 'secure_save_meta_box_data' );
引用元: https://developer.wordpress.org/reference/functions/wp_verify_nonce/
-
条件付きでメタボックスを表示する
このサンプルは、特定の条件に応じてメタボックスの表示を制御します。function conditional_meta_box() { if ( get_post_type() === 'post' ) { add_meta_box( 'conditional_meta_box_id', 'Conditional Meta Box', 'conditional_meta_box_callback', 'post' ); } } add_action( 'add_meta_boxes', 'conditional_meta_box' ); function conditional_meta_box_callback( $post ) { echo 'このメタボックスは投稿タイプが "post" の場合のみ表示されます。'; }
引用元: https://developer.wordpress.org/reference/functions/add_meta_box/