ACF(Advanced Custom Fields)で登録したフィールドをWordPressで表示する方法

PHP

WordPressのACF(Advanced Custom Fields)を使用すると、カスタムフィールドを簡単に作成して管理することができます。特に、カスタム投稿タイプ(例えば「products」)でチェックボックスなどのフィールドを使用したい場合、フロントページ(`front-page.php`)やアーカイブページ(`archive-products.php`)でその情報を表示する方法に困っている方も多いです。

この記事では、ACFで登録したチェックボックスフィールド(フィールド名:`tags`)の情報を、`front-page.php`などの別のテンプレートファイルでも表示する方法を解説します。

ACFフィールドを表示する基本的な方法

ACFで作成したカスタムフィールドの情報を取得するには、`get_field()` や `get_field_object()` を使用します。例えば、チェックボックスフィールドである `tags` を取得する基本的な方法は以下の通りです。

$get_field = get_field_object('tags');
var_dump($get_field);

このコードを使用すると、チェックボックスに設定された情報を`$get_field`に取得することができます。`var_dump()` を使うことで、その内容をデバッグとして確認できます。

フロントページ(front-page.php)でACFフィールドを表示する方法

`archive-products.php` ではうまく表示されるACFのカスタムフィールドですが、`front-page.php` など他のテンプレートファイルで情報を表示する場合には、少し注意が必要です。

まず、`front-page.php` でカスタム投稿タイプ `products` の情報を取得する方法を確認します。例えば、`get_posts()` を使ってカスタム投稿タイプ `products` の投稿を取得し、その中からACFのカスタムフィールド(`tags`)の情報を表示することができます。

$args = array(
  'post_type' => 'products',
  'posts_per_page' => -1
);

$products = get_posts($args);

foreach ($products as $post) {
  setup_postdata($post);
  $tags = get_field('tags');
  if ($tags) {
    echo 'Tags: ' . implode(', ', $tags) . '
'; } } wp_reset_postdata();

このコードは、`products` の投稿をすべて取得し、各投稿の `tags` フィールドの値を表示します。`implode(‘, ‘, $tags)` でチェックボックスの選択肢をカンマ区切りで表示しています。

ACFフィールドをフロントページに表示するための注意点

フロントページにACFフィールドを表示する際の重要な点は、`get_field()` や `get_field_object()` を使う場所に注意することです。ACFフィールドを表示するには、表示したい投稿またはページのコンテキスト内でフィールドを呼び出さなければなりません。

そのため、`front-page.php` や他のテンプレートファイルでカスタムフィールドを表示する場合は、`get_posts()` で投稿を取得し、必要なフィールドを順番に呼び出すようにしましょう。また、`setup_postdata()` を使うことで、取得した投稿データを正しく扱えるようにします。

フィールド情報を簡単に表示するための補足

もし、ACFフィールドをより簡単に表示したい場合は、`the_field()` 関数を使用する方法もあります。これにより、`get_field()` と同じ結果を簡単に表示することができます。

the_field('tags');

`the_field()` は直接HTMLを出力するので、フィールドの値を即座にページに表示することができます。

まとめ:ACFフィールドをフロントページで表示する方法

ACFで作成したカスタムフィールドの情報は、`front-page.php` などのテンプレートファイルでも簡単に表示できます。`get_field()` や `get_field_object()` を使用して、`products` のようなカスタム投稿タイプから情報を取得し、テンプレート内で表示することが可能です。

重要なのは、ACFフィールドの値を正しい場所で取得し、投稿データのコンテキストを確保することです。これらの方法を活用することで、フロントページでもカスタムフィールドを問題なく表示できるようになります。

コメント

タイトルとURLをコピーしました