【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 が返されて記事ページ上で非表示となります。

【WordPress】ショートコードの別ファイル管理でリスク低減

ショートコードとは

ショートコードは WordPress の投稿や固定ページに自分で定義した PHP の処理を呼び出せる便利な機能です。

例えば、Wordpress の PHP ファイルで「hello shortcode と表出する」コードを記述し、下記の様に記事編集ページで呼び出します。

すると、実際に公開された記事上では下記の様に表出されます。

hello shortcode


一般的に処理内容は function.php に記述しますが、function.php には他の重要な処理が書かれている為リスクを伴います。より安全で管理もシンプルになる方法がありますので紹介します。

  1. function.php に書き込むリスク
  2. ショートコード用の別ファイルを作成すればOK
    1. ショートコード用 PHP ファイルの作成
    2. function.php の編集
    3. ビフォーアフター
    4. メリットが多い
  3. 注意点

1. function.php に直接追記していくのはリスクが高い

function.php には既に WordPress にとって重要なコードが記述されており、誤った部分を削除、編集してしまったり、追記したコード自体にエラーがあるとサイトが真っ白に表示されてしまったりとリスクを伴います。さらにショートコードが増えてくるとファイルの中身自体が煩雑になりさらにリスクが高くなります。

2. ショートコード用の別ファイルを作成すればOK

もちろんバックアップを取りながら慎重にすすめていくこともできますが、少し煩わしい。そういった場合はショートコード管理専用の別ファイルを作ってしまうことをおすすめします。function.php には一行だけ追記で済み、shortcode自体は別ファイルで管理できます。

具体的な方法

function.php の一番下に include 文で別ファイルのパスを記述しておけば、あとは別ファイルの方で管理したものがそのまま function.php に読み込まれるようになります。簡単にいうと、shortcode.php の内容も function.php の一部として認識される感じです。

  1. ショートコード用 PHP ファイルの作成
  2. function.php の編集
  3. ビフォーアフター
  4. メリットが多い

1. ショートコード用 PHP ファイルの作成

まず、ショートコード用に新規の php ファイルを作成し、その中にショートコードの内容を記載します。この場では shortcode.php としましたが、ファイル名に特に決まりはありません。

2. function.php の編集

そして、function.php には下記の様に include 分で先ほど作ったショートコード用ファイルのパスを記述します。

この方法でコードを編集すると、下記のような状態になります。

3. ビフォーアフター

変更前

function.php の中にショートコード関連の定義が記載されています。

変更後

ショートコード関連のサイトのコードを別ファイルにまとめる事で、根幹を担う function.php への変更は最低限に留め、ショートコードの管理も専用ファイルでよりシンプルに行うことができます。

4. メリットが多い

こうしておくと、WordPress テーマを変えたりした時も新しい function.php に include 分の一行を書くだけで済むので管理が断然楽になります。

3. リスクが完全に無くなるわけではない

別ファイルに分けると function.php 上でエラーを起こすリスクは下げられますが、ショートコード用ファイルで間違ったコードを書いてしまうとやはりサイト自体に影響が出てしまいます。

よりリスクを減らすために

そんな時すぐさま問題を解決出来れば良いのですが、とりあえず function.php の include 文を一旦コメントアウトしてしまうのも一つの方法です。

そうするとショートコードは機能していない状態になりますが、すぐに問題の影響を断ち切ることができます。サイトを稼働させながらショートコード用ファイルの方でじっくり分析、修正を行った後で include 文のコメントアウトを外せば、影響を少なく抑えることができます。