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

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

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

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

PHP

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

Q&A

解決済

2回答

2843閲覧

elseとendwhileにエラーが出てしまう

seakai

総合スコア24

WordPress

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

PHP

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

0グッド

0クリップ

投稿2021/05/07 03:55

前提・実現したいこと

WordPressで、アイキャッチ画像がある場合はそれを表示して、無い場合は指定した画像を表示させたいです。
ですが、else:の部分とendwhile;の部分にエラーが出てしまいます。

ご教示いただけますと幸いです。

発生している問題・エラーメッセージ

vscode側

Unexpected 'else'.intelephense(1001)

WordPress側

Parse error: syntax error, unexpected token "else" in /Users/sawaikai/Local Sites/engress/app/public/wp-content/themes/heighter/index.php on line 223

該当のソースコード

php

1<section class="blog"> 2 <h3 class="blog_title">ブログ</h3> 3 <div class="blog_articles"> 4 <?php if (have_posts()) : ?> 5 <?php while (have_posts()) : the_post(); ?> 6 <a href="<?php the_permalink() ;?>"> 7 <article class="blog_article"> 8 <figure class="blog_article-img-box"> 9 <?php the_post_thumbnail( 'thumbnail' ); ?> 10 <?php else:?> 11 <img src="<?php get_template_directory_uri() ; ?>img/sample01.svg" /> 12 <small class="blog_category">カテゴリー</small> 13 </figure> 14 <div class="blog_article-text-box"> 15 <p class="blog_article-title"><?php the_title(); ?> 16 </p> 17 <small class="blog_article-date"> 18 <?php the_date(); ?></small> 19 </small> 20 </div> 21 </article> 22 </a> 23 <?php endwhile; ?> 24 <?php endif; ?> 25 </div> 26 </section>

試したこと

このサイトを参考にしてみました。
参考サイト

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

vscodeを使用しています。

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

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

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

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

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

guest

回答2

0

ベストアンサー

最小限にしてインデントつけるとわかりますが、現状だと

php

1if 2 while 3 else 4 endwhile 5endif

という構成になっていて、対応があっていません。何にも所属しないelseがいきなり出ています。

参考先は下記のようになっています。

php

1if 2 while 3 if 4 endif 5 endwhile 6else 7endif

まずはhtmlを必要最小限にして動作確認されることを強くすすめます。

投稿2021/05/07 04:02

m.ts10806

総合スコア80850

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

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

seakai

2021/05/07 06:51

よく見直してコードを変更するとできました。 ありがとうございました。
m.ts10806

2021/05/07 07:09

「構造だけ抜き出す」「最小構成にする」はあらゆる場面で採用できる問題切り分け方法です。
guest

0

<?php else:?>を削除するか、参考サイトを読み直して必要なifを追加する。

投稿2021/05/07 03:58

kei344

総合スコア69407

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

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

seakai

2021/05/07 06:52

参考サイトと照らし合わせてifを追加するとできました。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問