WordPressで特定の固定ページのIDを設定して読み込む方法

WordPressでは、特定の固定ページの情報を取得して表示することがよくあります。
例えば、ある固定ページのカスタムフィールドの値を取得して表示したり、
そのページのコンテンツを特定のテンプレートでカスタマイズしたりする場合です。
本記事では、特定の固定ページのIDを設定し、
そのページの情報を読み込む方法について詳しく説明します。

固定ページのIDを確認する方法

まず、特定の固定ページのIDを確認する必要があります。
固定ページのIDは、管理画面で確認できます。
以下の手順で確認できます。

1.WordPress管理画面にログイン

2.「固定ページ」メニューから「固定ページ一覧」をクリック

3.特定の固定ページをクリックして編集画面に移動

4.URLに表示される「post=数字」の部分が固定ページのID

例えば、URLが https://example.com/wp-admin/post.php?post=123&action=edit の場合、
固定ページのIDは「123」です。

特定の固定ページのIDを設定する

次に、取得した固定ページのIDを使用して、そのページの情報を取得する方法を見ていきます。
まず、固定ページのIDを変数に設定します。

<?php
// 特定の固定ページのIDを設定
$page_id = 123; // 固定ページのIDに置き換えてください
?>

固定ページの情報を取得する

特定の固定ページの情報を取得するには、いくつかの方法があります。以下に代表的な方法を示します。

1. get_post 関数を使用する

get_post 関数を使用すると、特定の投稿(固定ページ含む)の情報を取得できます。取得した情報はオブジェクトとして返されます。

<?php
$page = get_post($page_id);
if ($page) {
echo '<h1>' . esc_html($page->post_title) . '</h1>';
echo '<div>' . apply_filters('the_content', $page->post_content) . '</div>';
} else {
echo 'ページが見つかりませんでした。';
}
?>

2. get_post_meta 関数を使用する

get_post_meta 関数を使用すると、特定の投稿(固定ページ含む)の
カスタムフィールドの値を取得できます。

<?php
$meta_value = get_post_meta($page_id, 'custom_field_name', true);
if ($meta_value) {
echo '<p>カスタムフィールドの値: ' . esc_html($meta_value) . '</p>';
} else {
echo 'カスタムフィールドが見つかりませんでした。';
}
?>

3. the_field 関数を使用する

the_field 関数は、Advanced Custom Fields (ACF) プラグインを使用している場合に便利です。
特定のカスタムフィールドの値を取得して表示します。

<?php
if (function_exists('the_field')) {
the_field('custom_field_name', $page_id);
} else {
echo 'ACFプラグインがインストールされていません。';
}
?>

テンプレートファイルで固定ページの情報を表示する

特定の固定ページの情報をテンプレートファイルで表示する方法についても説明します。
例えば、トップページに特定の固定ページの情報を表示する場合です。

テンプレートファイルの作成

まず、テンプレートファイルを作成し、そこに固定ページの情報を表示するコードを追加します。
ここでは、トップページのテンプレートファイル(front-page.php)を例にします。

<?php
get_header();

// 特定の固定ページのIDを設定
$page_id = 123; // 固定ページのIDに置き換えてください

// 固定ページの情報を取得
$page = get_post($page_id);
?>

<section class="featured-page">
<div class="container">
<?php if ($page) : ?>
<h1><?php echo esc_html($page->post_title); ?></h1>
<div>
<?php echo apply_filters('the_content', $page->post_content); ?>
</div>
<?php else : ?>
<p>ページが見つかりませんでした。</p>
<?php endif; ?>
</div>
</section>

<?php
get_footer();
?>

このコードでは、get_post 関数を使用して特定の固定ページの情報を取得し、そのタイトルとコンテンツを表示しています。

固定ページのカスタムフィールドを表示する

次に、固定ページのカスタムフィールドの値を表示する方法について説明します。カスタムフィールドの値は、ページのメタデータとして保存されています。

get_post_meta を使用してカスタムフィールドを表示

テンプレートファイル内で get_post_meta 関数を使用してカスタムフィールドの値を取得し、表示することができます。

<?php
get_header();

// 特定の固定ページのIDを設定
$page_id = 123; // 固定ページのIDに置き換えてください

// 固定ページの情報を取得
$page = get_post($page_id);
?>

<section class="featured-page">
<div class="container">
<?php if ($page) : ?>
<h1><?php echo esc_html($page->post_title); ?></h1>
<div>
<?php echo apply_filters('the_content', $page->post_content); ?>
</div>
<div>
<?php
$meta_value = get_post_meta($page_id, 'custom_field_name', true);
if ($meta_value) {
echo '<p>カスタムフィールドの値: ' . esc_html($meta_value) . '</p>';
} else {
echo 'カスタムフィールドが見つかりませんでした。';
}
?>
</div>
<?php else : ?>
<p>ページが見つかりませんでした。</p>
<?php endif; ?>
</div>
</section>

<?php
get_footer();
?>

Advanced Custom Fields (ACF) プラグインの使用

ACFプラグインを使用している場合は、the_field 関数を使用してカスタムフィールドの値を簡単に表示できます。

ACFを使用したカスタムフィールドの表示

テンプレートファイル内で the_field 関数を使用してカスタムフィールドの値を取得し、表示することができます。

<?php
get_header();

// 特定の固定ページのIDを設定
$page_id = 123; // 固定ページのIDに置き換えてください

// 固定ページの情報を取得
$page = get_post($page_id);
?>

<section class="featured-page">
<div class="container">
<?php if ($page) : ?>
<h1><?php echo esc_html($page->post_title); ?></h1>
<div>
<?php echo apply_filters('the_content', $page->post_content); ?>
</div>
<div>
<?php if (function_exists('the_field')) : ?>
<?php the_field('custom_field_name', $page_id); ?>
<?php else : ?>
<p>ACFプラグインがインストールされていません。</p>
<?php endif; ?>
</div>
<?php else : ?>
<p>ページが見つかりませんでした。</p>
<?php endif; ?>
</div>
</section>

<?php
get_footer();
?>

複数のカスタムフィールドを表示する

複数のカスタムフィールドを表示する場合、同様の方法で各カスタムフィールドの値を取得し、表示することができます。

<?php
get_header();

// 特定の固定ページのIDを設定
$page_id = 123; // 固定ページのIDに置き換えてください

// 固定ページの情報を取得
$page = get_post($page_id);
?>

<section class="featured-page">
<div class="container">
<?php if ($page) : ?>
<h1><?php echo esc_html($page->post_title); ?></h1>
<div>
<?php echo apply_filters('the_content', $page->post_content); ?>
</div>
<div>
<?php
$meta_value1 = get_post_meta($page_id, 'custom_field_name1', true);
$meta_value2 = get_post_meta($page_id, 'custom_field_name2', true);
$meta_value3 = get_post_meta($page_id, 'custom_field_name3', true);

if ($meta_value1) {
echo '<p>カスタムフィールド1の値: ' . esc_html($meta_value1) . '</p>';
} else {
echo '<p>カスタムフィールド1が見つかりませんでした。</p>';
}

if ($meta_value2) {
echo '<p>カスタムフィールド2の値: ' . esc_html($meta_value2) . '</p>';
} else {
echo '<p>カスタムフィールド2が見つかりませんでした。</p>';
}

if ($meta_value3) {
echo '<p>カスタムフィールド3の値: ' . esc_html($meta_value3) . '</p>';
} else {
echo '<p>カスタムフィールド3が見つかりませんでした。</p>';
}
?>
</div>
<?php else : ?>
<p>ページが見つかりませんでした。</p>
<?php endif; ?>
</div>
</section>

<?php
get_footer();
?>

おわりに

この記事では、特定の固定ページのIDを設定し、
そのページの情報を取得して表示する方法について説明しました。
WordPressでは、固定ページのIDを使用してカスタムフィールドの値を取得し、
テンプレートファイルで表示することができます。
また、Advanced Custom Fields (ACF) プラグインを使用することで、
さらに簡単にカスタムフィールドの値を取得して表示することができます。

これらの方法を使用して、固定ページの情報を動的に表示し、
サイトのコンテンツを柔軟にカスタマイズすることができます。
ぜひ試してみてください。何か質問があれば、コメント欄にてお知らせください。