概要
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/