【WordPress】ショートコードの表示・非表示を一発で切り替えたい

使用していたショートコードの処理結果を記事上で非表示にしたい場合、一番基本的なやり方は投稿の編集画面でショートコードの […] の部分を削除する方法。

ただ、複数のページで使用しているショートコードを全て非表示にしたい場合等では、一つ一つのコードを全記事で削除していくわけにはいきません。

関数のコメントアウトでは非表示にはならない

(通常)function.php に記載しているショートコードの関数をいじれば一括で管理できますが、関数部分を丸ごとコメントアウトして関数の呼び出しを無効化すると、記事上にshortcodeが残ってしまいます。

上の画像の様にショートコード関連のコード全体をコメントアウトすると確かに処理は行われませんが下の画像の様、投稿の編集画面で記載している hello shortcode が表出されてしまいます。

ショートコードの関数から null を返せばOK

ではどうすれば良いのかですが、ショートコード関数の return 文で null を返してあげると綺麗さっぱり無くなります。

【基本編】元の return 文をコメントアウト + return null; を記述

一番直感的なのは元の return 文をコメントアウトし、新たに「return null;」をそのまま記述してしまう方法。

上記の様に null を返してあげると、記事上でも綺麗さっぱりショートコードが無かったことになります。

【応用編】if 条件で表示・非表示の切り替えをシンプルに

関数のコードが長かったりすると return 文を探すのが大変だったりするので、関数の頭に表示・非表示を切り替えるフラグの様な変数を入れても良いと思います。

上記のコードの場合は、変数 $visible に true を入れれば "hello shortcode" のストリングが返され、false を渡せば null が返されて記事ページ上で非表示となります。