WordPressにはアクションやフィルター、いろんな関数が用意されており、かんたんにカスタマイズできます。ググればいくらでも情報が出てくるでしょう。
でも、それらの情報でよく出てくるのは『テーマのfunctions.phpにコードを追加する』というもの。
いや、これはやめようよという話です。
テーマ(theme)とは何か?
テーマとは元来、『行動や創作などの基調となる考え。主題。また、論文の題目、楽曲の主旋律など。』という意味です。
何かの基本になるものですね?
システムやアプリケーションでは少し意味が違います。どちらかと言えば見た目を変えるもの。
たとえば、Windowsのデスクトップの待受画像のことをテーマと言うし、アプリケーションの基調色(フォント変更も含む)を変えるものもテーマと呼ばれます。
(プログラミング用のエディタではプラグインとしてテーマが配布されている。)
これらのテーマに独自の機能が入ってたりしたらどう思うでしょうか?
色味を変えるつもりだったのに大事な機能まで失ってしまっては大変です。テーマを変えるだけで機能が変わってしまうのも迷惑です。
WordPressのテーマも同じ
WordPressのテーマも考え方は同じです。テーマのfunctions.phpにカスタマイズ機能を書くのは止めようというのはこういうこと。
テーマを変えたら、SNSボタンが無くなった、カスタムの投稿タイプ、タクソノミー(カテゴリやタグのこと)が消えたなんて困るじゃないですか。
WordPressだけテーマの意味が違うのも混乱するのでダメだし、テーマはHTMLの構成やCSSでのスタイルの変更に専念すべきです。
機能はプラグインに入れるべし!
機能はテーマ専用のプラグインを作ってそこに実装しましょう。テーマが変わってもプラグインが有効化されていればカスタム機能はそのまま残ります。
ただし、テーマでカスタム機能を表示する変更は必要です。
『どうせ修正するんだったらテーマに入れといていいじゃん。』という声もあるでしょうが、もってる機能を表示する修正をするのと機能を移植するのでは作業量がちがいます。
コーディング規約では機能は入れないようになっている。
また、WordPressのテーマ作成の規約では『テーマに独自機能を入れてはいけない』となっています。
WordPress.orgのリポジトリに公開するときには審査があるんですが、こういうところは厳しく修正を求められるらしい。
(審査の申請を出したこと無いけど。)
WordPressには非公式で販売されている有料テーマや無料テーマが星の数ほどあるのですが、規約を無視しているものは多いです。
とくに、SEO対応を取り入れているものはガンガン機能が詰められている。
こういうところじゃないのかな? 『WordPressできます』より『Laravelできます』のほうがエンジニアの信頼が大きいのは。
(セキュリティとかもっと他にも理由はあるが。)
こういうこと言ってるボクもfuncsions.phpに追加しましょうというセリフを何度も言ってます。
一応、その内容を見つけたら修正していますが完全に消えていません。
もし見つけても、『言ってることと違う!』はご勘弁して下さい。