「このページだけサイドバーを消したい」「LP(ランディングページ)はタイトル枠やパンくずを非表示にしてスッキリ見せたい」「フォーム埋め込みページの上下の余白をなくしたい」——サイト全体の設定はそのままに、特定のページだけ見た目を変えたい場面はよくあります。
Apuraテーマには、投稿・固定ページの編集画面からそのページ単体のレイアウトを上書きできる「Layout Settings」メタボックスが用意されています。この記事では、メタボックスの各項目の意味と動作、設定が反映される優先順位、そして対象の投稿タイプを増やす開発者向けの拡張までを順番に解説します。
Layout Settingsメタボックスとは
Apuraのレイアウトは通常、カスタマイザー(外観 → カスタマイズ)の「サイト全体設定」や「投稿タイプ別設定」でまとめて決めます。ただ、実際にサイトを運用していると「基本はサイドバー付きでいいけれど、お問い合わせページや特集ページだけは1カラムにしたい」といった例外が必ず出てきます。そのたびに全体設定を変えるわけにはいきません。
そこで使うのがLayout Settings(レイアウト設定)メタボックスです。投稿や固定ページの編集画面サイドに表示され、そのページだけレイアウトや表示要素を上書きできます。全体設定はそのまま、必要なページにだけ例外を適用できるのが大きなメリットです。
各設定項目の意味と動作
メタボックスは「レイアウト」「要素の無効化(Disable Elements)」「余白(Spacing)」の3つのまとまりで構成されています。それぞれの項目と動作は次のとおりです。
| 項目 | 種類 | 動作 |
|---|---|---|
| Layout | 選択 | このページのカラム構成を上書きする |
| Disable Entry Header | チェック | タイトル枠(エントリーヘッダー/カバー)を非表示にする |
| Disable Breadcrumbs | チェック | このページのパンくずリストを非表示にする |
| Disable Vertical Spacing | チェック | コンテンツ上下の縦余白をなくす |
Layout(レイアウト)
このページのカラム構成を選びます。選択肢は次の5つです。空欄(デフォルト)を選んでいる間は、サイト全体や投稿タイプ別の設定がそのまま使われます。
| 選択肢 | レイアウト |
|---|---|
| (デフォルト) | 上書きせず、サイト/投稿タイプ別の設定を継承する |
| Content / Sidebar | 本文が左・サイドバーが右の2カラム |
| Sidebar / Content | サイドバーが左・本文が右の2カラム |
| No Sidebar | サイドバーなしの1カラム(本文幅は維持) |
| Full Width | コンテンツ幅の制限を外した全幅レイアウト |
Disable Entry Header(タイトル枠を無効化)
チェックすると、本文の上に表示されるタイトル枠(エントリーヘッダー)を非表示にします。Apuraではタイトルをカバー画像付きで表示している場合がありますが、この項目をオンにするとカバーも含めてまとめて出力されなくなります。タイトルや日付をブロックエディター側で自由に組みたいLPや、本文だけを見せたいページで便利です。
Disable Breadcrumbs(パンくずを無効化)
チェックすると、このページのパンくずリストだけを非表示にします。サイト全体ではパンくずを表示しつつ、トップに準ずるランディングページなど階層になじまないページだけ消す、といった使い分けができます。サイト全体のパンくず設定はカスタマイザー側で管理されているため、ここでの設定はそのページ限定の上書きとして働きます。
Disable Vertical Spacing(縦の余白を無効化)
チェックすると、コンテンツエリア上下の縦余白を取り除きます。フォームやマップ、フルスクリーンのビジュアルなどを画面の端までぴったり配置したいときに役立ちます。前述の「Disable Entry Header」と組み合わせれば、タイトル枠も上下の余白もない、まっさらなキャンバスのようなページを作れます。
レイアウトが決まる優先順位
「全体設定」「投稿タイプ別設定」「ページ個別設定」が混在すると、どれが効くのか分からなくなりがちです。Apuraは個別投稿・固定ページの表示時に、次の上から順でレイアウトを判定します。先に見つかった設定が優先され、それより下は無視されます。
- ページ個別設定(メタボックス)
Layout Settingsの「Layout」が空欄以外なら、これが最優先で適用されます。
- 投稿タイプ別設定
メタボックスが空欄のとき、投稿なら「単一記事のレイアウト」、固定ページなら「固定ページのレイアウト」の設定が使われます。
- サイト全体設定
上記いずれも未設定の場合、サイト全体のレイアウト設定が最終的なデフォルトとして使われます。
よくある使い方の例
開発者向け:対象の投稿タイプを増やす
現在のバージョン1.3.5において、Layout Settingsメタボックスは標準では投稿(post)と固定ページ(page)にのみ表示されます。
独自のカスタム投稿タイプでも使いたい場合は、apura_metabox_layout_post_typesフィルターで対象を追加できます。子テーマのfunctions.phpに次のように記述します。
<?php
/**
* Layout Settings メタボックスを表示する投稿タイプを追加する。
*
* @param array $post_types 対象の投稿タイプ配列。
* @return array 変更後の投稿タイプ配列。
*/
function mytheme_add_layout_metabox_post_types( $post_types ) {
// 既存(post, page)に 'product' を追加する。
$post_types[] = 'product';
return $post_types;
}
add_filter( 'apura_metabox_layout_post_types', 'mytheme_add_layout_metabox_post_types' );
追加したい投稿タイプは、メタボックスの保存処理が機能するようにカスタムフィールド(custom-fields)をサポートしていることを確認してください。register_post_type()のsupportsに'custom-fields'を含めておくと安全です。
レイアウト判定そのものを上書きする
条件に応じてレイアウトをプログラム側で強制したい場合は、apura_get_layoutフィルターを使います。たとえば、特定のカスタム投稿タイプのアーカイブを常にサイドバーなしにする例は次のとおりです。
<?php
/**
* 特定の条件でレイアウトを強制する。
*
* @param string $layout 判定済みのレイアウト識別子。
* @return string 変更後のレイアウト識別子。
*/
function mytheme_force_no_sidebar( $layout ) {
// product のアーカイブは常にサイドバーなしにする。
if ( is_post_type_archive( 'product' ) ) {
return 'no_sidebar';
}
return $layout;
}
add_filter( 'apura_get_layout', 'mytheme_force_no_sidebar' );
返す値はcontent_sidebar・sidebar_content・no_sidebar・full_widthのいずれかです。apura_get_layoutはメタボックスを含むすべての判定の最後に適用されるため、このフィルターはページ個別設定よりもさらに優先されます。サイト運用者がメタボックスで設定した内容まで上書きしてしまう点に注意し、必要な条件に絞って使ってください。