ワードプレスのadd_meta_boxアクションの使用方法・解説

概要

add_meta_boxアクションは、WordPressの投稿ページに独自のメタボックスを表示するために使用されます。この機能は、投稿タイプにカスタム情報を追加する際や、特定のデータを管理者が入力できるようにするためによく利用されます。具体的には、次のようなシナリオで使われることが多いです。

  1. 投稿に関連する詳細情報を追加する
  2. カスタムフィールドの入力を促す
  3. 投稿の表示オプションを管理する
  4. サードパーティのプラグインと連携情報を表示する
  5. SEO設定を投稿に追加する
  6. 投稿の共著者を設定する
  7. 投稿のカスタムテンプレートを選択する
  8. アナリティクスやトラッキングコードの入力欄を提供する

構文

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

サンプルコード

  1. 基本的なメタボックスを追加する
    このサンプルは、投稿編集ページに基本的なメタボックスを追加します。

    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/

  2. メタボックスからデータを保存する
    このサンプルは、メタボックスに入力されたデータを保存します。

    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/

  3. 複数のメタボックスを追加する
    このサンプルは、複数のメタボックスを投稿ページに追加します。

    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/

  4. カスタムメタボックスでセキュリティチェック
    このサンプルは、メタボックスデータの保存時にセキュリティチェックを追加します。

    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/

  5. 条件付きでメタボックスを表示する
    このサンプルは、特定の条件に応じてメタボックスの表示を制御します。

    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/

この関数について質問する


上の計算式の答えを入力してください