今回の記事では、特定の固定ページや投稿にのみ、カスタムフィールドを追加する方法を解説します。
カスタムフィールドの追加方法を知りたい方は、こちらの記事を参考にしてください。
構文
カスタムフィールドの追加は、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を実行することで、特定の固定ページや投稿に対してカスタムフィールドを追加することができます。
コメント