質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

2423閲覧

ACF 柔軟コンテンツに繰り返しフィールドを表示させたい

yesma

総合スコア16

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2021/05/25 09:22

WordPressのオリジナルテーマ開発をしています。

プラグイン Advanced Custom Field PRO版の機能である「柔軟コンテンツ」に入れ子で「繰り返しフィールド」を入れたいのですが
表示がされません。
https://designsupply-web.com/media/knowledgeside/6680/
参考ページをもとに色々試してみたのですが、問題が解消できなかったので、
投稿しました。

WordPress 5.7
php 7.4.2

■症状
プラウザの開発ツールで確認すると、<div class="co_common_3column">までは表示されているので
「繰り返しフィールド」のループから表示できていないのでそこが原因かと予測してます。

以下がコードですがご確認お願いいたします。
不足している情報等ありましたら、お知らせください。

柔軟コンテンツのコード

php

1<?php if(have_rows('products_contents')): ?> 2 <?php while(have_rows('products_contents')): the_row(); ?> 3 4 <?php if(get_row_layout() === 'layout_main'): ?> 5 <!-- // レイアウト内で指定したフィールドの値を出力 --> 6 <div class="main_img"> 7 <img class="" src="<?php echo get_sub_field('products_main01'); ?>" alt=""> 8 </div> 9 <?php endif; ?> 10 11 <?php if(get_row_layout() === 'layout_read_txt'): ?> 12 <!-- // レイアウト内で指定したフィールドの値を出力 --> 13 <div class="main_read_item"> 14 <p> 15 <?php echo get_sub_field('products_read_txt01'); ?> 16 </p> 17 </div> 18 <?php endif; ?> 19 20 <?php if(get_row_layout() === 'layout_2column01'): ?> 21 <!-- // レイアウト内で指定したフィールドの値を出力 --> 22 <div class="main_read_item"> 23 <p> 24 <?php echo get_sub_field('products_read_txt01'); ?> 25 </p> 26 </div> 27 <div class="co_product_2column"> 28 <img src="<?php echo get_sub_field('products_2column_img01'); ?>" alt=""> 29 <div class="item_2column_box"> 30 <?php if(get_sub_field('products_2column_img02')): ?> 31 <img src="<?php echo get_sub_field('products_2column_img02'); ?>" alt=""> 32 <?php endif; ?> 33 <?php if(get_sub_field('products_2column_txt01')): ?> 34 <?php echo get_sub_field('products_2column_txt01'); ?> 35 <?php endif; ?> 36 </div> 37 </div> 38 <?php endif; ?> 39 40 <?php if(get_row_layout() === 'layout_3column01'): ?> 41 <!-- // レイアウト内で指定したフィールドの値を出力 --> 42 <div class="co_common_3column"> 43 <?php if( have_rows(get_sub_field('co_3column01_repeat')) ): //リピーターフィールドの値を持っているかどうかをチェック ?> 44 <?php while ( have_rows(get_sub_field('co_3column01_repeat')) ) : the_row(); //値のループ ?> 45 <div class="item_3column_box"> 46 <img src="<?php echo get_sub_field('products_3column_img01'); ?>" alt=""> 47 <?php if(get_sub_field('products_3column_txt01')): ?> 48 <p><?php echo get_sub_field('products_3column_txt01'); ?></p> 49 <?php endif; ?> 50 </div> 51 <?php endwhile; ?> 52 <?php endif; ?> 53 </div> 54 <?php endif; ?> 55 56 <?php if(get_row_layout() === 'layout_sectionA'): ?> 57 <!-- // レイアウト内で指定したフィールドの値を出力 --> 58 <section class="co_product_bg"> 59 <style> 60 .co_product_bg::before{ 61 background:<?php echo get_sub_field('products_sectionA_bg'); ?> !important; 62 } 63 </style> 64 <h4 class="co_common_title"><?php echo get_sub_field('products_sectionA_title'); ?></h4> 65 <div class="co_product_2column"> 66 <img src="<?php echo get_sub_field('products_sectionA_img'); ?>" alt=""> 67 <div class="item_2column_box"> 68 <p> 69 <?php echo get_sub_field('products_sectionA_txt'); ?> 70 </p> 71 </div> 72 </div> 73 </section> 74 <?php endif; ?> 75 76 <?php if(get_row_layout() === 'layout_sectionB'): ?> 77 <!-- // レイアウト内で指定したフィールドの値を出力 --> 78 <section class="co_product_table"> 79 <h4 class="co_common_title"><?php echo get_sub_field('products_sectionB_title'); ?></h4> 80 <div class="table_wrapper"> 81 <?php echo get_sub_field('products_sectionB_txt'); ?> 82 </div> 83 </section> 84 <?php endif; ?> 85 86 <?php endwhile; ?> 87 <?php else: ?> 88 <?php endif; ?>

「繰り返しフィールド」を利用している箇所を抜粋したコード

php

1<?php if(get_row_layout() === 'layout_3column01'): ?> 2 <!-- // レイアウト内で指定したフィールドの値を出力 --> 3 <div class="co_common_3column"> 4 <?php if( have_rows(get_sub_field('co_3column01_repeat')) ): //リピーターフィールドの値を持っているかどうかをチェック ?> 5 <?php while ( have_rows(get_sub_field('co_3column01_repeat')) ) : the_row(); //値のループ ?> 6 <div class="item_3column_box"> 7 <img src="<?php echo get_sub_field('products_3column_img01'); ?>" alt=""> 8 <?php if(get_sub_field('products_3column_txt01')): ?> 9 <p><?php echo get_sub_field('products_3column_txt01'); ?></p> 10 <?php endif; ?> 11 </div> 12 <?php endwhile; ?> 13 <?php endif; ?> 14 </div> 15 <?php endif; ?> 16コード

以上になります。
ご回答よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

<?php if( have_rows(get_sub_field('co_3column01_repeat')) ): //リピーターフィールドの値を持っているかどうかをチェック ?>


これは何を参考にされましたか?

通常は、

<?php if( have_rows('co_3column01_repeat')):

になると思うのですが...

投稿2021/05/25 10:02

編集2021/05/25 10:05
CHERRY

総合スコア25171

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yesma

2021/05/25 10:44

ご確認ありがとうございます。 以下の参考ページの「異なるカスタムフィールドを自由に組み込むことができる柔軟コンテンツ」という 見出しがあるセクションの2番目のコードです。 https://designsupply-web.com/media/knowledgeside/6680/ 記載いただいたコードでも試しても解消できなかったので、試してみました。 柔軟コンテンツの中に繰り返しフィールドを取得していたので、get_sub_fieldとして扱いになるかと思っていましたが違うようでした・・・
CHERRY

2021/05/25 20:21

カスタムフィールドは、ACF でどのように定義されているのでしょうか?
yesma

2021/05/26 01:31

管理画面にて登録されているACFの内容は以下のようになっています。 対象箇所を抜粋したものになります。 柔軟コンテンツ products_contents →レイアウト layout_3column01 →繰り返しフィールド co_3column01_repeat →画像 products_3column_img01 →テキスト products_3column_txt01
yesma

2021/05/26 03:22

すみません。 再度<?php if( have_rows('co_3column01_repeat')):こちらのコードに変更して 記事登録をしてみたところ表示されました。 原因がはっきり分からないでしたが、色々検証いただきありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問