【WordPress】固定ページをパーツ化して他のページで再利用する方法

WordPressでは、特定のコンテンツを複数のページで再利用したい場合があります。固定ページをパーツ化することで、共通の要素を簡単に管理し、他のページで呼び出すことができます。本記事では、固定ページをパーツ化し、他のページで読み込む方法をいくつかの手法に分けて紹介します。

固定ページをパーツ化する理由

固定ページをパーツ化することで、以下のメリットがあります。

  • 再利用性の向上: 同じ内容を複数ページで使えるため、更新が楽になります。
  • メンテナンスが簡単: 1箇所を編集すれば、関連する全ページに変更が反映されます。
  • デザインの統一: 共通のデザインやコンテンツを一元管理でき、一貫性を保てます。

これらの理由から、固定ページをパーツ化して活用することは非常に便利です。

固定ページを作成し、パーツとして使用する

まず、共通で使用するコンテンツを固定ページとして作成します。たとえば、「ニュース」や「共通フッター」など、サイト全体で再利用したい部分を作成します。

固定ページの作成手順

  1. WordPressの管理画面から「固定ページ > 新規追加」を選びます。
  2. 固定ページのスラッグ(URL)を設定し、パーツとして使用したい内容を記述します。
    例: 「共通ヘッダー」や「共通フッター」など。
  3. スラッグをわかりやすい名前(例えば common-header)に設定します。

これで共通の内容を1つの固定ページで管理できます。

get_page_by_path() を使って固定ページを読み込む

パーツ化した固定ページを他のページに読み込むには、get_page_by_path() 関数を使用します。この方法では、指定したスラッグの固定ページを取得して、その内容を表示することができます。

以下のコードをテーマの適切な場所(例えば header.php や page.php)に追加します。

<?php
// 固定ページをスラッグで取得
$common_header = get_page_by_path('common-header');

// ページが存在する場合、内容を表示
if ($common_header) {
    echo apply_filters('the_content', $common_header->post_content);
} else {
    echo '共通ヘッダーが見つかりませんでした。';
}
?>

このコードは、common-header というスラッグの固定ページを取得して、その内容を表示します。固定ページが存在しない場合は、エラーメッセージを表示します。

ショートコードを使用してパーツを挿入する

ショートコードを使えば、記事や固定ページ内で簡単にパーツを挿入できます。これにより、管理画面から直接ショートコードを入力するだけで、共通コンテンツを簡単に呼び出せます。

まず、functions.php にショートコードを作成します。

function load_common_part($atts) {
    $atts = shortcode_atts(
        array(
            'slug' => '', // 読み込む固定ページのスラッグ
        ),
        $atts
    );

    if (!empty($atts['slug'])) {
        $page = get_page_by_path($atts['slug']);
        if ($page) {
            return apply_filters('the_content', $page->post_content);
        } else {
            return 'パーツが見つかりませんでした。';
        }
    }

    return 'スラッグが指定されていません。';
}
add_shortcode('common_part', 'load_common_part');

これで、ショートコード [common_part slug=”common-header”] を使って、どのページでも共通のパーツを表示できます。

テンプレートパーツとして固定ページを読み込む

固定ページをテンプレートファイルとして直接呼び出す方法もあります。この方法では、指定したテンプレートファイルを直接呼び出すことができます。

手順

  1. wp-content/themes/your-theme/parts ディレクトリを作成します。
  2. そこに「共通ヘッダー」などのテンプレートファイル(例: header-part.php)を作成します。
  3. テンプレートファイル内に共通のHTMLを記述します。
  4. get_template_part() を使ってテンプレートを読み込みます。
<?php get_template_part('parts/header-part'); ?>

この方法を使えば、複数のページで同じテンプレートを簡単に再利用できます。

Advanced Custom Fields (ACF) を使用する方法

ACFプラグインを使用すれば、共通のパーツをカスタムフィールドとして管理できます。これにより、より柔軟に管理でき、非開発者でも簡単にコンテンツを更新できます。

  1. ACFでカスタムフィールドを作成します。
  2. get_field() を使用して、カスタムフィールドの内容を表示します。
<?php
$common_header = get_field('common_header', 'option');
if ($common_header) {
    echo $common_header;
}
?>

この方法では、ACFで設定した共通コンテンツをテーマ内で動的に呼び出すことができます。

まとめ

固定ページをパーツ化して他のページで再利用する方法には、さまざまな手法があります。get_page_by_path() を使う方法やショートコード、テンプレートパーツ、ACFを使った方法など、サイトの要件に合わせて使い分けることで、効率的にコンテンツの管理ができ、デザインの一貫性を保ちながら柔軟にサイトを構築できます。