WordPressのfunctions.php編集には子テーマを利用
2014/11/22
WordPress™のカスタマイズを行う際に、
テーマファイルのheader.phpやfunctions.phpを直接編集する場合もあるでしょう。
しかしそうしたファイルを編集する際には子テーマを作成し、
子テーマで編集内容を反映するほうが将来的なメンテナンスも楽になります。
ここでは子テーマを利用したfunctions.phpの編集手順についてご紹介します。
はじめに
functions.phpの編集については、いろいろな方がブログなどで紹介されています。
PHPを直接記述してさまざまなカスタマイズを行えるため、
ちょうどいいプラグインが見当たらないような場合には、functions.phpを編集したくなります。
しかし、テーマファイルのfunctions.phpを直接編集していると、
万が一にもテーマをうっかりアップデートしてしまったようなときに、
functions.phpに行ってきた編集内容も失われてしまいます。
失われたfunctions.phpが力作だったりした場合にはおそらく立ち直れないでしょう。
実際にはCodexを読まれたほうがわかりやすいかもしれませんが、ご参考まで。
子テーマの準備
functions.phpを子テーマから利用するには、
まず子テーマを利用している状態にする必要があります。
子テーマの導入方法と有効化については以下でご紹介しています。
WordPressテーマファイルの編集に子テーマ利用
functions.phpの設置
子テーマを準備して有効化すると、子テーマのディレクトリは以下のようになっていると思います。
これは子テーマとして最低限の設定を行った状態です。
このディレクトリの中にはstyle.cssというファイル以外にも、
親テーマが利用している各phpファイルを含めることができ、
含めたphpファイルにて親テーマの設定を上書きすることができます。
要は親テンプレートからphpファイルをコピーし、
子テーマディレクトリ上のファイルで編集を行うことで親テーマのアップデートなどで影響を受けず、
子テーマのphpファイルで親テーマの同名phpファイルをオーバーライドし有効にすることができます。
子テーマ – WordPress Codex 日本語版#テンプレートファイル (抜粋引用)
テンプレートファイル
子テーマのテンプレート は style.css と同じように親テーマの 同名ファイルをオーバーライドします 。単純に同名のファイル名を使用すれば親テーマのテンプレートをオーバーライドできます。(注意: index.phpをオーバーライドできるのはWordPress 3.0以上です)
ただし、functions.phpだけは、他のphpファイルとは動作が異なっています。
親テーマのphpファイルをオーバーライドされることはありません。
子テーマ – WordPress Codex 日本語版#functions.php の使用方法
functions.php の使用方法
style.css と違い、functions.php は同名ファイルでオーバーライドできません。その代わり、親の functions.php に追加して読み込まれます。正確にいうと、親テーマの functions.php の直前に読み込まれます。したがって、もし親テーマの functions.php で favicon_link() という関数があるとき、子テーマのfunctions.php で同名の関数があれば、子テーマの関数が使用されます。
(中略)
12345678 <?phpfunction favicon_link() {echo '<link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />' . "\n";}add_action('wp_head', 'favicon_link');?>
functions.phpファイルを作成し子テーマディレクトリに設置します。
実際に以下のようなソースを定義しています。
1 2 3 4 5 6 7 8 |
<?php function favicon_link() { echo '<link rel="shortcut icon" type="image/x-icon" href="./wp/wp-content/uploads/2013/08/wordpress-logo-simplified-rgb.png" />' . "\n"; } add_action('wp_head', 'favicon_link'); ?> |
これによって、ファビコンの表示が以下のように変更され、
子テーマのfunctions.phpが正しく動作していることが確認できます。
さいごに
ここでは簡単な例でしたが、functions.phpに対して記述ができる処理であれば、
こうして子テーマ側のfunctions.phpに記述を行うことでオリジナルを変更してしまうことなしに、
独自のカスタマイズを行っていくことができるようになります。
WordPressはWordPress Foundation の登録商標(第5049965号)です。
WordPressロゴ、アイコンその他のマーク等はWordPress Foundation の商標であり、
WordPress Foundation の著作物です。
WordPress.comはWordPress Foundation が管理運営を行うドメインならびにサービスの名称です。
関連記事
-
04.Jetpack コメント-Jetpack by WordPress.com
Google or AdMax Promotion(it) 禁断の機能がau公式 …
-
Tumblr™への共有をJetpack by WordPress.comで行う動作
Google or AdMax Promotion(it) 禁断の機能がau公式 …
-
07.メール投稿-Jetpack by WordPress.com
Google or AdMax Promotion(it) 禁断の機能がau公式 …
-
【再投稿】投稿の前後挿入にPost6WidgetArea_v0.6.2-wordpressプラグインを利用
Google or AdMax Promotion(it) 禁断の機能がau公式 …
-
投稿の前後挿入にPostPost-wordpressプラグインを利用が(配布されなくなっていた)
Google or AdMax Promotion(it) 禁断の機能がau公式 …
-
19_05.Flickr Videoプレーヤー表示には、JetpackのFlickr動画ショートコード埋め込み
Google or AdMax Promotion(it) 禁断の機能がau公式 …
-
WordPress4.0以降のサイトの言語変更による日本語化
Google or AdMax Promotion(it) 禁断の機能がau公式 …
-
wordpress標準のコメントシステムの入力・承認フロー
Google or AdMax Promotion(it) 禁断の機能がau公式 …
-
19_08.SoundCloudジャケット表示には、Jetpackのsoundcloudショートコード埋め込み
Google or AdMax Promotion(it) 禁断の機能がau公式 …
-
Netowl™の無料WordPressサーバWPblogの利用登録
Google or AdMax Promotion(it) 禁断の機能がau公式 …
Comment
[…] 参考:WordPressのfunctions.php編集には子テーマを利用 […]