WordPress の Post Snippets で PHP Code 使う際、ヒアドキュメントを使うと「unexpected $end 〜」が出る:解決

この記事を書いた背景

WordPress には、自作のショートコードを簡単に作ることができる Post Snippets と言うプラグインがあります。

しかも、PHP コードを利用したショートコードを作ることもできるので大変重宝しているのですが、ヒアドキュメントを使うと「unexpected $end 〜」が出るという問題に当たったので、原因の確認と解決方法について調べたのでメモします。

原因

PHP におけるヒアドキュメントというのは、変数などに対して複数行の文字列をまとめて渡すことのできる言語機能です。

次の様に書くことで、3行表示させることができます。

echo <<<_EOT_
ここに
複数行の
コンテンツ
_EOT_;

このコードを Post Snippets プラグインの Snippet の最後書こうとすると、Post Snippets の動作として Snippet の文字列に Trim (空白文字列の除去)を行うらしく、終了文字列がないというエラーを吐きます(unexpected $end〜)。

Post Snippets PHP Code ヒアドキュメントでエラー

解決方法

となると、様は Trim されても大丈夫にすれば良いと言うことで、今回は次の様に最終行に「;」を追加しました。

echo <<<_EOT_
ここに
複数行の
コンテンツ
_EOT_;
;

これで、Trim されても「EOT」のあとの改行が消されなくなるので、エラーしなくなります。
「;」はステートメントの終了を表す記号なので、複数あっても問題はありません。

まとめ

解決方法としてあまりスマートではないかも知れませんが、まぁ一つの方法かと思います。

え?Webサイトのバックアップ、してないの!?

いざという時には復旧までしてくれる
『ワードプレス外部バックアップサービス』

■3つの特長
・自分でやらなくて良い
・いざという時の復旧付き
・外部サーバーにバックアップ

コメントを残す