今回の記事では、特定の固定ページや投稿にのみ、カスタムフィールドを追加する方法を解説します。
カスタムフィールドの追加方法を知りたい方は、こちらの記事を参考にしてください。

カスタムフィールドを追加する方法

構文

カスタムフィールドの追加は、add_meta_box()を使用することで実装できますが、
構文は下記のようになっています。

add_meta_box($id, $title, $callback, $screen, $context, $priority, $callback_args );

ここで重要になるのは、第四引数の$screenです。
ここには、’post’や’page’といった投稿タイプを指定することはできますが、特定の固定ページIDなどを指定することはできません。
特定の固定ページにカスタムフィールドを追加するためには、1フロー挟む必要があります。

細かい引数の解説は、公式ドキュメントを参照してください。

実装

ここからは実際の要件を例にあげて、コードを紹介していきます。

トップページにのみカスタムフィールドを適用させたい

上述の通り、add_meta_boxには特定のページIDを指定することができないので、
関数の実行前にページIDを取得して、条件分岐を記述する必要があります。

コード

function add_custom_media_fields() {
    $post_id = '';
    if(isset($_GET['post']) || isset($_POST['post_ID'])) {
        $post_id = $_GET['post'] ? $_GET['post'] : $_POST['post_ID'];
        if($post_id == 2) {
            add_meta_box(
                'hmtl_id',
                'メインビジュアル画像の登録',
                'callback',
                'page',
                'side',
                'default',
            );
        }
    }
}

解説

add_custom_media_fields()というメソッドで、トップページのみにメインビジュアル画像の登録フィールドを作成したい場合を想定しました。
やっていることは非常にシンプルで、 $_GET[‘post’] 、$_POST[‘post_ID’]を使用して投稿IDを取得し、
特定ページのIDにマッチする場合に、add_meta_boxを実行するというものです。

このフローでadd_meta_boxを実行することで、特定の固定ページや投稿に対してカスタムフィールドを追加することができます。

カテゴリー: WordPress