実践的なサンプルコードでプラグイン開発に触れてみましょう。
functions.phpでやっていることをプラグインで
HTMLが先行してできあがっている開発の場合は、どうしても不要になりがちな自動整形機能、これを無効化する処理です。// 本文の自動整形を無効化する remove_filter('the_content', 'wpautop'); // 抜粋の自動整形を無効化する remove_filter('the_excerpt', 'wpautop');
これをプラグインにしてみましょう。
<?php /* Plugin Name: Control AUTOP Plugin Description: 自動整形機能を無効化するプラグイン */ // 本文の自動整形を無効化する remove_filter('the_content', 'wpautop'); // 抜粋の自動整形を無効化する remove_filter('the_excerpt', 'wpautop');
これをプラグインとしてインストールすると、「Control AUTOP Plugin」を有効化した場合に、自動整形機能が無効化されます。無効化した場合に、自動整形機能が有効化されます。
functions.phpでできないことをプラグインで
標準でバックアップをとれる利点はあるものの、放っておくとDBを圧迫しかねない投稿のリビジョン、これを制限する処理です。// リビジョンの数を3つに制限する define( 'WP_POST_REVISIONS', 3 );
リビジョンを保存しないようにする処理です。
// リビジョンの保存を無効化する define( 'WP_POST_REVISIONS', false );
これをfunctions.phpに書き込むことはできません。'WP_POST_REVISIONS'はテーマを読み込むより先にwp_functionality_constants()の中で定義済みなので、定数の再定義ということになってしまい、これは不可能なのです。
書き込むなら、wp-config.phpに。ですが、コアファイルをあまり汚したくない人もいるでしょう(筆者)。
ならばプラグインだ。
<?php /* Plugin Name: Control Revision Plugin Description: リビジョンの保存を無効化するプラグイン */ // リビジョンの保存を無効化する define( 'WP_POST_REVISIONS', false );
これをプラグインとしてインストールすると、「Control Revision Plugin」を有効化した場合に、リビジョンの保存が無効化されます。無効化した場合に、リビジョンの保存が有効化されます。
functions.phpでやること
こうなると、いろんなことをプラグインでやって、functions.phpでやることがなくなりそうですが。テーマと密接に関わるものは、プラグインではなくfunctions.phpでやったほうがよいでしょう。
例えば、カスタム投稿タイプの定義とか。htmlのコードを生成する関数とか。
別のテーマで再利用されたり当該テーマで不要になったりならなかったりが考え難いものですね。
こんな感じで、適宜プラグインの作成をしてみましょう。