WordPressでショートコードがそのまま表示される原因と対処法を、次の3つのケースに分けて解説していきます。
- 一般的なケース
- 投稿ページ・固定ページ
- テンプレートファイル
一般的なケース
原因①:ショートコードが登録・定義されていない
そもそも使おうとしているショートコードが登録・定義されていない場合です。
対処法
ショートコードの登録方法に従い、登録を行いましょう。
特にadd_shortcode()
で呼び出している関数と、定義した関数が同じになっているかしっかりと確認しましょう。
foo_func()
のことです。//[foo] function foo_func( $atts ){ return "foo"; } add_shortcode( 'foobar', 'foo_func' );
原因②:ショートコードが削除・抹消されている
ショートコードの登録はされているけど、その後の記述でショートコードが削除・抹消されている場合です。
ショートコードの削除は、以下の関数で行えます。
function remove_shortcode( $tag )
function remove_all_shortcodes()
対処法
ファイル検索などを行い、該当のショートコードを削除している関数があれば、関数の削除を行いましょう。
原因③:ショートコードのタグの記載が間違っている
ショートコードは指定の方法で記述をしないと実行されません。正しく記述されているか確認をしましょう。
対処法
タグを正しく記載しましょう。
タグの確認を行う際には、次のポイントに注意してください。
- 全角になっていないか。半角で記載を行う
- 紛らわしい数字と英語を間違っていないか
原因④:入れ子になっている
デフォルトの設定では、入れ子のショートコードはそのまま表示されてしまいます。
対処法
呼び出し元のショートコードの関数の$content
にdo_shortcode()
関数を実行しましょう。
詳しくは次の記事で解説しています。
原因⑤:ショートコードが閉じていない
複数の囲み型ショートコードの記載がある場合に、前のショートコードが閉じられていないと、後ろのショートコードがそのまま表示されてしまうケースがあります。
対処法
囲み型ショートコードを使う場合は、しっかりと閉じましょう。
投稿ページ・固定ページ
大半は、一般的なケースで解説した原因によるものです。
テンプレートファイル
テンプレートファイルなどのPHPファイル内では、ショートコードをそのまま表示するようになっています。
PHPファイル内でショートコードを実行する場合は、echo
関数とdo_shortcode()
関数を利用する必要があります。
<?php echo do_shortcode('[myshortcode]'); ?>
詳しくは、次の記事で解説しています。