他の人に頼まれてWordpressのサイトをカスタマイズする時に一番困るのが、
子テーマを使っていない時です。
CSSのカスタマイズであれば、最近では『追加CSS』というWordpress標準機能を使えば、子テーマは無くてもカスタマイズができます。
しかし、子テーマが無いとfunction.phpのカスタマイズが必要な時に困ります。
この記事では、子テーマを使っていない他人のサイトを子テーマを使わずにカスタマイズする時に便利なプラグインをご紹介します。
他人のサイトをいじるという場面でなくとも、自分のサイトに子テーマを導入していない場合には参考になる内容となっております。
では、読み進めてください。
子テーマが無いのにfunction.phpのカスタマイズが必要になったら?
function.phpを使ったカスタマイズが必要な時に子テーマがないと本当に困ります。
親テーマのfunction.phpを直接編集すると困ったことが起きます
子テーマを使っていない場合、親テーマのfunction.phpを直接編集することになります。そうなるとテーマの更新で親テーマのfunction.phpでカスタマイズした内容はきれいさっぱり消えます。
子テーマを新規導入するリスクはある
じゃぁ、子テーマを導入すればよいじゃないかと言う話ですが、子テーマを導入するのが手間な場合もありますし、他の人のサイトで勝手に子テーマを導入して、サイトが表示されなくなったりしたら目も当てられません。
特に追加CSSでカスタマイズしていると子テーマ導入できれいさっぱり消えます。
そんなこんなで、ついつい親テーマのfunction.phpを編集してしまうことが多いです。
そもそもfunction.phpを編集するのもリスクがある
function.phpを編集する時に困るのは、最近ではサーバーによってはfunction.phpをテーマエディタから編集できない場合もあったりします。そのトラブルシュートができる場合と出来ない場合もあったりして、function.phpを編集しないと出来ないカスタマイズを他人のサイトでするのは結構地雷だったりします。
そんな時に見つけたのがCode snippetsと言うプラグイン
Code snippetsと言うプラグインがあります。
このプラグインを使うと、親テーマ、子テーマに限らずfunction.phpに書き込むコードをプラグインの中で記述することができ、さらにコードごとに分類して管理することができます。
なんと素晴らしいプラグインでしょうか。
Code snippetsプラグインを使うメリットは?
- 肥大化してスパゲティになったfunction.phpをプラグインで管理
- 子テーマがないサイトのfunction.phpのカスタマイズ
- エラーがっても画面が白くならない
- add_actionやadd_filterを使うフックの処理は、Code snippetsで完全に置き換えることができる
- snippetごとにON/OFFをプラグインから切り替えられる
Code snippetsプラグインはfunction.phpと同じ?
厳密に言うとfunction.phpで出来ることをすべてできるわけではありません。
まず、function.phpと読み込まれるタイミングが違うようで、読み込みタイミングに依存するような記述はCode snipeetsではエラーになってしまいます。
例えば、子テーマのfunction.phpで親テーマの関数定義を上書きするようなケースをCode snippetsで置き換えようとすると、親テーマの関数定義よりも遅く読み込まれるようで、関数が二重定義というエラーになり保存⇒アクティベートできません。
つまり、読み込みタイミングに依存しているようなケースはfunction.phpから置き換えることができません。
そういうケースは、function.phpに記述するか、カスタマイズ方法を変えるしかありません。
function.phpをプラグイン化する
Code snippetを導入してもWAFの影響で保存できない場合もあります。特にロリポップの場合はWAFの影響で403が出るケースが多いです。
親テーマしかなく子テーマの導入はしたくない、WAFで保存できんがな!そういう場合は、function.php自体をプラグイン化してしまう方法があります。
プラグインといっても中身は空っぽなので作るのは簡単に思えますが、いちから作るのは面倒なので先人が用意してくれたファイルを導入するのが簡単です。
導入方法
導入方法は簡単です。
- プラグインとして、アップロードして有効化
- プラグインの編集で、my-plugin.phpを編集すればOK。
function.phpに書こうとしていた内容をそのままコピペすれば大丈夫です。
まとめ
Code snippetsはとても地味ですが、function.phpの整理のツールとしてはとても使えます。