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

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

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

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

PHP

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

Q&A

解決済

1回答

323閲覧

for文にするとカスタムフィールドの値が空と認識される

yukki-1227

総合スコア52

WordPress

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

PHP

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

0グッド

1クリップ

投稿2023/05/30 02:30

編集2023/05/30 04:28

前提

wordpressでカスタム投稿の個別ページを作っています。その中でslickの二段サムネイルにカスタムフィールドを当てています
カスタムフィールド出力(空の場合はノーイメージの画像を出す)の同一の作業(8回分)をfor文にまとめたいのですがfor文にするとカスタムフィールドの値が全て空と認識されてしまいます。
どなたかお助け下さい。
(本当なら、一番最初の画像だけはカスタムフィールドに登録された画像が出力されるのが正しく、他はノーイメージ画像が出てくる)
現在は、ページのフッター近くに<div class="phptest"></div>という要素を作りそこでテストをしています。

php(8回分同じような作業をしているのでfor文にまとめたい)

1 <div class="thumbnail"> 2 <div class="thumbnail-img"> 3 <?php $value = get_post_meta($post->ID, 'pic1', true);?> 4 <?php if(empty($value)):?> 5 <!--★ここは空欄だった場合に表示されます(空でOK)。--> 6 <img style="width: 100px; height:68px;" class="prof-noimage" src="http://parnasse.conohawing.com/ap/wp-content/uploads/2023/05/img1.jpg"> 7 <?php else:?> 8 <!--●値が有る場合に表示されます。--> 9 10 <?php 11 $pic=get_field('pic1'); 12 $pic_url=$pic['sizes']['large']; 13 ?> 14 <img style="width: 100px; height:68px;" src="<?php echo $pic_url; ?>"> 15 16 17 <?php endif;?> 18 19 </div> 20 <div class="thumbnail-img thumbnail-img2"> 21 <?php $value = get_post_meta($post->ID, 'pic2', true);?> 22 <?php if(empty($value)):?> 23 <!--★ここは空欄だった場合に表示されます(空でOK)。--> 24 <img style="width: 100px; height:68px;" class="prof-noimage" src="http://parnasse.conohawing.com/ap/wp-content/uploads/2023/05/img1.jpg"> 25 <?php else:?> 26 <!--●値が有る場合に表示されます。--> 27 28 <?php 29 $pic=get_field('pic2'); 30 $pic_url=$pic['sizes']['large']; 31 ?> 32 <img style="width: 100px; height:68px;" src="<?php echo $pic_url; ?>"> 33 34 35 <?php endif;?> 36 </div> 37 <div class="thumbnail-img thumbnail-img3"> 38 <?php $value = get_post_meta($post->ID, 'pic3', true);?> 39 <?php if(empty($value)):?> 40 <!--★ここは空欄だった場合に表示されます(空でOK)。--> 41 <img style="width: 100px; height:68px;" class="prof-noimage" src="http://parnasse.conohawing.com/ap/wp-content/uploads/2023/05/img1.jpg"> 42 <?php else:?> 43 <!--●値が有る場合に表示されます。--> 44 45 <?php 46 $pic=get_field('pic3'); 47 $pic_url=$pic['sizes']['large']; 48 ?> 49 <img style="width: 100px; height:68px;" src="<?php echo $pic_url; ?>"> 50 51 52 <?php endif;?> 53 </div> 54 <div class="thumbnail-img thumbnail-img4"> 55 <?php $value = get_post_meta($post->ID, 'pic4', true);?> 56 <?php if(empty($value)):?> 57 <!--★ここは空欄だった場合に表示されます(空でOK)。--> 58 <img style="width: 100px; height:68px;" class="prof-noimage" src="http://parnasse.conohawing.com/ap/wp-content/uploads/2023/05/img1.jpg"> 59 <?php else:?> 60 <!--●値が有る場合に表示されます。--> 61 62 <?php 63 $pic=get_field('pic4'); 64 $pic_url=$pic['sizes']['large']; 65 ?> 66 <img style="width: 100px; height:68px;" src="<?php echo $pic_url; ?>"> 67 68 69 <?php endif;?> 70 </div> 71 <div class="thumbnail-img thumbnail-img5"> 72 <?php $value = get_post_meta($post->ID, 'pic5', true);?> 73 <?php if(empty($value)):?> 74 <!--★ここは空欄だった場合に表示されます(空でOK)。--> 75 <img style="width: 100px; height:68px;" class="prof-noimage" src="http://parnasse.conohawing.com/ap/wp-content/uploads/2023/05/img1.jpg"> 76 <?php else:?> 77 <!--●値が有る場合に表示されます。--> 78 79 <?php 80 $pic=get_field('pic5'); 81 $pic_url=$pic['sizes']['large']; 82 ?> 83 <img style="width: 100px; height:68px;" src="<?php echo $pic_url; ?>"> 84 85 86 <?php endif;?> 87 </div> 88 <div class="thumbnail-img thumbnail-img6"> 89 <?php $value = get_post_meta($post->ID, 'pic6', true);?> 90 <?php if(empty($value)):?> 91 <!--★ここは空欄だった場合に表示されます(空でOK)。--> 92 <img style="width: 100px; height:68px;" class="prof-noimage" src="http://parnasse.conohawing.com/ap/wp-content/uploads/2023/05/img1.jpg"> 93 <?php else:?> 94 <!--●値が有る場合に表示されます。--> 95 96 <?php 97 $pic=get_field('pic6'); 98 $pic_url=$pic['sizes']['large']; 99 ?> 100 <img style="width: 100px; height:68px;" src="<?php echo $pic_url; ?>"> 101 102 103 <?php endif;?> 104 </div> 105 <div class="thumbnail-img thumbnail-img7"> 106 <?php $value = get_post_meta($post->ID, 'pic7', true);?> 107 <?php if(empty($value)):?> 108 <!--★ここは空欄だった場合に表示されます(空でOK)。--> 109 <img style="width: 100px; height:68px;" class="prof-noimage" src="http://parnasse.conohawing.com/ap/wp-content/uploads/2023/05/img1.jpg"> 110 <?php else:?> 111 <!--●値が有る場合に表示されます。--> 112 113 <?php 114 $pic=get_field('pic7'); 115 $pic_url=$pic['sizes']['large']; 116 ?> 117 <img style="width: 100px; height:68px;" src="<?php echo $pic_url; ?>"> 118 119 120 <?php endif;?> 121 </div> 122 <div class="thumbnail-img thumbnail-img8"> 123 <?php $value = get_post_meta($post->ID, 'pic8', true);?> 124 <?php if(empty($value)):?> 125 <!--★ここは空欄だった場合に表示されます(空でOK)。--> 126 <img style="width: 100px; height:68px;" class="prof-noimage" src="http://parnasse.conohawing.com/ap/wp-content/uploads/2023/05/img1.jpg"> 127 <?php else:?> 128 <!--●値が有る場合に表示されます。--> 129 130 <?php 131 $pic=get_field('pic8'); 132 $pic_url=$pic['sizes']['large']; 133 ?> 134 <img style="width: 100px; height:68px;" src="<?php echo $pic_url; ?>"> 135 136 137 <?php endif;?> 138 </div> 139 </div>

該当のソースコード(こうするとカスタムフィールドの値が全て空と認識されてノーイメージ画像が出てしまう。)

php

1<div class="phptest"> 2 <?php 3 for($i = 1;$i < 9;$i++) : ?> 4 <div class="thumbnail-img thumbnail-img7"> 5<p>ppp<?php echo $i; ?></p> 6 <?php $value = get_post_meta($post->ID, 'pic{$i}', true);?> 7 <?php if(empty($value)):?> 8 <!--★ここは空欄だった場合に表示されます(空でOK)。--> 9 <img style="width: 100px; height:68px;" class="prof-noimage" src="http://parnasse.conohawing.com/ap/wp-content/uploads/2023/05/img1.jpg"> 10 <?php else:?> 11 <!--●値が有る場合に表示されます。--> 12 13 <?php 14 $pic=get_field('pic{$i}'); 15 $pic_url=$pic['sizes']['large']; 16 ?> 17 <img style="width: 100px; height:68px;" src="<?php echo $pic_url; ?>"> 18 19 20 <?php endif;?> 21 22 </div> 23 <?php endfor ?> 24 </div>

試したこと1($valueに{$i}をつけるとFatal error: Array and string offset access syntax with curly braces is no longer supported inエラーになります)

php

1<div class="phptest"> 2 <?php 3 for($i = 1;$i < 9;$i++) : ?> 4 <div class="thumbnail-img thumbnail-img7"> 5 <p> 6 ppp<?php echo $i; ?> 7 </p> 8 <?php $value{$i} = get_post_meta($post->ID, 'pic{$i}', true);?> 9 <?php if(empty($value{$i})):?> 10 <!--★ここは空欄だった場合に表示されます(空でOK)。--> 11 <img style="width: 100px; height:68px;" class="prof-noimage" src="http://parnasse.conohawing.com/apple-world/wp-content/uploads/2023/05/img1.jpg"> 12 <?php else:?> 13 <!--●値が有る場合に表示されます。--> 14 15 <?php 16 $pic=get_field('pic{$i}'); 17 $pic_url=$pic['sizes']['large']; 18 ?> 19 <img style="width: 100px; height:68px;" src="<?php echo $pic_url; ?>"> 20 21 22 <?php endif;?> 23 24 </div> 25 <?php endfor ?> 26 </div>``` 27 28### 試したこと2($valueに[$i]をつけるとFatal error: Uncaught Error: Cannot assign an empty string to a string offset inエラーになり、上のslickサムネイルも崩れます) 29```php 30<div class="phptest"> 31 <?php 32 for($i = 1;$i < 9;$i++) : ?> 33 <div class="thumbnail-img thumbnail-img7"> 34 <p> 35 ppp<?php echo $i; ?> 36 </p> 37 <?php $value[$i] = get_post_meta($post->ID, 'pic{$i}', true);?> 38 <?php if(empty($value[$i])):?> 39 <!--★ここは空欄だった場合に表示されます(空でOK)。--> 40 <img style="width: 100px; height:68px;" class="prof-noimage" src="http://parnasse.conohawing.com/apple-world/wp-content/uploads/2023/05/img1.jpg"> 41 <?php else:?> 42 <!--●値が有る場合に表示されます。--> 43 44 <?php 45 $pic=get_field('pic{$i}'); 46 $pic_url=$pic['sizes']['large']; 47 ?> 48 <img style="width: 100px; height:68px;" src="<?php echo $pic_url; ?>"> 49 50 51 <?php endif;?> 52 53 </div> 54 <?php endfor ?> 55 </div>

補足情報(FW/ツールのバージョンなど)

WordPress 6.2.2
カスタム投稿はACFプラグインで作成しています

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

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

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

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

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

guest

回答1

0

ベストアンサー

とりあえず'pic{$i}'はシングルクォートで囲むと変数は展開しません
ダブルクォートにしてみては?

"pic{$i}"

投稿2023/05/30 03:10

yambejp

総合スコア114784

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

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

yukki-1227

2023/05/30 03:22

ありがとうございます!! "pic{$i}"にすると一番目のカスタムフィールドが読み込まれて画像が表示されました!! ですが、二番目の画像以降が、 Warning: Trying to access array offset on value of type bool in /home/c6059473/public_html/parnasse.conohawing.com/apple-world/wp-content/themes/hello-theme-child-master/single-used.php on line 317 Warning: Trying to access array offset on value of type null in /home/c6059473/public_html/parnasse.conohawing.com/apple-world/wp-content/themes/hello-theme-child-master/single-used.php on line 317 ↑このようなエラー文が表示され、ノーイメージ画像が出力されません。 どうすればよろしいでしょうか?
yukki-1227

2023/05/30 04:21

すみません、上記のレスのエラー文が出ていたのは、 <?php $value = get_post_meta($post->ID,"pic{$i}", true);?>のtrue部分をfalseにしたからだと思います。trueに戻すと正常に表示されました、ありがとうございます!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問