【WordPress】空の自作プラグインファイル作成のすゝめ。2つ用意すると尚良し。

シェアする

wordpress-logo

WordPressをカスタマイズする際でプラグイン化されていない関数(function)を追加する場合、多くのWordPress指南系ブログでは有効中のテーマ(テンプレート)のfunctions.php(サイドメニュー>外観>テーマの編集>テーマのための関数)に書き込む手順で紹介されている事が殆どであります。

しかし、functions.phpに書き込む方法だと、仮にfatal errorを引き起こす誤った記述をして変更保存した場合にはホワイトアウトになってWebブラウザからの一切の操作が出来なくなるリスク(※1)がありますし、他のテーマへの変更または有効中のテーマをアップデートする度に記述し直す必要がある(※2)ので思いの外面倒です。

そこで、本稿ではカスタム関数のコードを自作プラグインファイルに書き加えるメリットと方法をご提案して参ります。

※1…ホワイトアウトになった場合、FTP等でサーバー上に保存されたファイルを上書きして誤った記述を消す(誤った記述をする前の状態に復元する)作業が必要となる。

※2…前者は書き加えたfunctions.phpが読み込まれなくなるため、後者はアップデートするとfunctions.phpやstyle.css等全てのファイルのカスタマイズが上書きによりプリセットされた記述だけになるため。

スポンサーリンク

自作プラグインファイルに記述するメリット

自作プラグインファイルを用意して記述する事で以下に示したメリットにより先述の短所を解消する事ができます。

記述し直す作業が不要になる

御存知の通り、WordPressのプラグインはテーマとは独立したプログラムであるため、有効化に成功していればテーマの変更やアップデートをしても継続して機能します。

そのため、テーマのfunctions.phpに記述していた場合には必要だったテーマの変更の際の記述し直す作業が不要になるというメリットがあります。

このメリットはセキュリティ関連のコードを使用している場合に特に有意義な点となり、テーマの変更に伴うセキュリティの一時的な脆弱化を回避する事ができます。

停止中に編集すればホワイトアウトを回避できる

プラグインファイルの編集は有効中であるか停止中であるかでエラー発生時の挙動が異なります。

有効中のプラグインファイルにテーレッテー>∩(・ω・)∩<フェイタルエラーを引き起こす誤った記述をしてしまった場合はfunctions.phpの時と同様に即ホワイトアウトに陥ります。

しかしながら、停止中のプラグインファイルを編集してから有効化を試みた場合には『重大なエラーを引き起こしたため、プラグインを有効化できませんでした。』という旨の警告が出て有効化に失敗するだけで済むためホワイトアウトを回避できます。

自作プラグインの作り方

以下では公式マニュアルの解説に基いて1個のファイルで完結するプラグインの作り方を示します。

先ず、WordPressの管理者権限でのログインでなくFTP/FTPS/SFTP/SCPいずれかを用いてプラグインディレクトリ(初期設定ではwp-content直下のplugins)にアクセスします。理由は、サーバーに新規でディレクトリやファイルを設置したり任意の名称に変更したりするためには、WordPressの管理者権限をもってしても実行できないFTPコマンドを使う必要があるためです。

次に、プラグインディレクトリの直下にプラグインファイルを格納するディレクトリを作成し、作成したディレクトリの直下にPHPファイル(拡張子が.php)を作成します。この時、作成したディレクトリとファイルの名前は半角英数字であり尚且つ既存のプラグインで使用されている名称以外であれば任意であり、ディレクトリとファイルの名前が同一である必要もありません。

そして、PHPファイルを編集し、開始タグ(<?php)と終了タグ(?>)の間にヘッダー(下記の例では赤字の部分)とコードを書きます。この時、ヘッダーの記述はDescription以外を全て英語、コードはヘッダーの後の行(下記の例では/*編集ここから*//*編集ここまで*/の間)に記述しなければならない点に注意して下さい。

<?php
/*
Plugin Name: (プラグインの名前)
Plugin URI: (プラグインの説明と更新を示すページの URI)
Description: (プラグインの短い説明)
Version: (プラグインのバージョン番号。例: 1.0)
Author: (プラグイン作者の名前)
Author URI: (プラグイン作者の URI)
License: (ライセンス名の「スラッグ」 例: GPL2)
*/
/*編集ここから*/


/*編集ここまで*/
?>

裏技:自作プラグインファイルを2つ用意して使い分ける

コード追加によるカスタマイズを行う場合、自作プラグインファイルを2つ用意し、使い分ける事でコード追加によるカスタマイズがスムーズに行なえるようになります。

一方には動作に問題ないコードをまとめて常時有効化しておきます。もう一方は停止中に編集してから有効化すればホワイトアウトを回避できる点を応用して、新規に導入したいコードをそちらに一旦記述して動作確認を行い、改善箇所がある場合は停止した後で編集を行ってから再度有効化して動作確認を行うという操作をコード完成まで繰り返します。

問題がなければ乃至満足できるプログラミングができたら『カットアンドペースト』で前者に記述し直す事で、コードの一括管理と新規コードの導入及び開発を簡単且つ安全に行う事ができます。この時、後者に書いたコードを消して(空のプラグインファイルに戻して)から前者に記述しないと保存した瞬間にfunctionの重複エラーが発生してホワイトアウトとなるので絶対に忘れない様に要注意です。

なお、ヘッダーが記述されたPHPファイルは其々が別々の主たるプラグインファイルとして認識されるため、Plugin Nameを異なる名称にしておけば同一ディレクトリに並存していても前者と後者を区別して有効化と停止及び編集を行う事ができるようになります。

空のプラグインファイル、作っておきました。

以上の操作方法を想定して、GitHubに空のプラグインファイルを作っておきました。ダウンロード及びインストールの方法はいつも通りです。

Add your custom functions to here! Contribute to Kentakure/000-add-custom-functions development by creating an account on GitHub.

ちなみに、Plugin Nameを其々『000 add custom functions』及び『000 test』としています。名前の先頭を数字にしておくと、編集画面(サイドメニュー>プラグイン>プラグイン編集)右上のプルダウンの序列で上位(他に数字で始まる名称がなければ最上位)に来るため、アクセスする際の手間が省けるためです。