WordPressで記事や固定ページを作っていて、1つの記事にPHPのコードを書いて動作させる部分とショートコードで動作させる部分を混在させるとPHPで書いた部分はきちんと動作するのにショートコードは動作せずショートコードのまま表示されることありませんか?
PHPを記事や固定ページの中で動作させるには「EXEC PHP」などのプラグインを使う必要があるのですが、こうしたコード変換プラグインとショートコードの競合などからこうした状況が生まれることがあるようです。
ショートコードがそのまま表示されてしまうケース
詳しく書いてある文献を探しましたが残念ながら公式フォーラムにもありませんでした。今まで公開したコンテンツに1つショートコード追加したら表示されなくなった・・・といったケースが私の経験でもあります。主な発生原因としては次のようなことが考えられます。
- WordPressのバージョンによって発生する
- 使用しているテーマによって発生する
- 1つのコンテンツの中で実行できるショートコードやPHP関数の数に制限がある
- 挿入したPHP関数の1つまたは複数で不具合(コードの間違いなど)がある
4の場合にはきちんと対応しないとページ自体の表示に関わりますから修正すべきなのですが、思い当たる節がないときには以下のように対処するとほとんどの場合は上手く動作します。
ショートコードのPHPプログラム化
この方法はショートコードをテーマの中で使う方法として知られていますが、ショートコードをPHPプログラムとして認識させて動作させることで不具合が解消されます。
動作させるには
<?php echo do_shortcode("ここにショートコードを入れる"); ?>
というコードでショートコードを挟んで(入れ子にして)使います。「ここにショートコードを入れる」の場所にショートコードをそのまま置き換えるだけです。
こうした不具合の原因自体が分かっているわけではないですし、いろいろなテーマやいろいろなプラグインで試したわけでもないので根本解決ではないのかもしれませんが、動くことが大事なので、エラーが出たときにはこの方法で対処しています。
【WordPress】ショートコードをPHPプログラムとして動作させる方法

