はじめに
WordPressには便利なプラグインが様々ありますが、
そういった高度な機能のプラグインを見ていると自作するの難しそうと感じると思います。
しかし、基本的な機能のプラグインを自作するのは意外と簡単です。
functions.php について理解できていれば、自作できます。
このページはこんな人向けです
- WordPressでの基本的なテーマ制作できる
- WordPress の functions.php をコード記述できる
- WordPress の themes(テーマ)がどこのディレクトリ(フォルダ)にあるかわかる
例えば、functions.php にカスタム投稿タイプを追加する functionとフックがあるとします 。
※カスタム投稿タイプ追加に必要な register_post_type について詳しくは 関数リファレンス(外部サイト)
<?php
//カスタム投稿
function add_custom_post_type() {
register_post_type(
'news', //WordPressデータベース内でのカスタム投稿名
array(
'label' => 'お知らせ', //管理画面での表示名
'public' => true, //管理画面から編集を許可(true)・許可しない(false)切り替え
'exclude_from_search' => false, //サイト内検索からの除外(true)・除外しない(false)
'has_archive' => true, //アーカイブあり(true)・なし(false)
'show_in_rest' => true, //ブロックエディタ(true)・旧エディタ(false)
'menu_position' => 5, //管理画面でのメニュー位置
'taxonomies' => array('category', 'post_tag'), //カテゴリー・タグ等の有効にするタクソノミー
'supports' => array(
'title', //タイトルあり
'editor', //本文あり
'author', //ページ制作者入力あり
'excerpt', //抜粋あり
'revisions', //編集履歴あり
'thumbnail', //アイキャッチ画像あり(テーマで有効である場合)
)
)
);
}
add_action('init', 'add_custom_post_type');
プラグイン化の準備
- 任意のディレクトリ(フォルダ)にpluginsフォルダを作成
- pluginsフォルダの中にプラグイン名(例:add-custom-post-type)のフォルダを作成
- プラグインフォルダの中にプラグイン名.php (例:add-custom-post-type.php)を作成
※readme.txtは必須ではないですが、プラグインの内容・使い方・バージョン更新情報などを記述して同梱しておくとベター
ラベル(コメントアウト)でプラグイン化する
- functions.php からプラグイン化する箇所をコピー
- 作成した プラグイン名.php に貼り付け(ペースト)
- プラグイン名.php の最初の方にコメントアウトで必要な情報を記述
- コードの重複を避けるためにfunctions.php からコピーした箇所を削除
function と 関連のフック(どの場面でfunctionを作動させるかの指定)はセットで同一のプラグインに記述します
ただし、ショートコードなど関連のフックがないfunctionの場合はプラグインにフックの記述は不要です
functionの中で別のfunctionを呼び出している場合は呼び出されている別のfunctionもセットで同一のプラグインに記述します
<?php
/*
Plugin Name: add_custom_post_type
Version: 1.0.0
Author: kamiyakoh
Description: Add custom-post-type
License: GPLv2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
*/
//カスタム投稿
function add_custom_post_type() {
register_post_type(
'news', //WordPressデータベース内でのカスタム投稿名
array(
'label' => 'お知らせ', //管理画面での表示名
'public' => true, //管理画面から編集を許可(true)・許可しない(false)切り替え
'exclude_from_search' => false, //サイト内検索からの除外(true)・除外しない(false)
'has_archive' => true, //アーカイブあり(true)・なし(false)
'show_in_rest' => true, //ブロックエディタ(true)・旧エディタ(false)
'menu_position' => 5, //管理画面でのメニュー位置
'taxonomies' => array('category', 'post_tag'), //カテゴリー・タグ等の有効にするタクソノミー
'supports' => array(
'title', //タイトルあり
'editor', //本文あり
'author', //ページ制作者入力あり
'excerpt', //抜粋あり
'revisions', //編集履歴あり
'thumbnail', //アイキャッチ画像あり(テーマで有効である場合)
)
)
);
}
add_action('init', 'add_custom_post_type');
コメントアウトの内容の解説
- Plugin Name: プラグイン名(必須)
- Version: バージョン
- Author: 制作者名
- Description: 管理画面で表示される簡易説明文
つまり、functions.phpの記述とほぼ同等のコードをひとまとまりにしてラベル(コメントアウト)を付けるだけでプラグインになる。
functions.phpの記述できる ≒ 基本的なプラグインが自作できる
自作プラグインをインストール
プラグインフォルダをZIPに
プラグインフォルダ名のフォルダを圧縮してZIP化
管理画面からZIP形式でインストール
- 管理画面左側のメニューから「プラグイン」の中にある「新規追加」をクリックします
- プラグインを追加ページ上部の「プラグインのアップロード」をクリックします
- 「ファイルを選択」をクリックします
- 表示されるファイル選択ダイアログにて、プラグインフォルダ名.zipを選択します
- 「今すぐインストール」をクリックします。
- インストール済みプラグインページでインストールしたプラグインを「有効化」します
functions.phpに記述 と プラグイン化 の比較
- 1つのファイルで管理できる(モジュール化で小分けにしていない場合)
- 案件でのテーマ制作場合、納品後のサイト管理者によって勝手に無効化・削除されにくい
- テーマを変更しても動作する
- 別のサイトに必要な機能ごとに流用しやすい
- 機能ごとに小分けされており、必要に応じて個別に無効化・更新できる
(WordPress自体・テーマのアップデートで大きな変化がある際に、サイトが崩れても個別に無効化してみて原因特定・応急処置しやすい)
function.phpにカスタム投稿タイプやカスタムタクソノミーの追加の記述をして、
テーマチェックした際に「このテーマは〇〇関数を使っていますが、これはプラグインの領域に含まれる機能です。」と表示されることがあります。
これは別のテーマに着せ替えるとカスタム投稿タイプやカスタムタクソノミーが
テーマに依存してしまっているため、表示できなくなるために警告がでます。
つまり、プラグイン化すればテーマを着せ替えても表示できます。
カスタム投稿タイプやカスタムタクソノミーの追加はプラグイン化で行いましょう。
functions.phpに記述 と プラグイン化 に処理速度にほぼ違いはありません。
プラグインを入れると遅くなると言われるのは、
配布されている既存のプラグインは幅広く状況に対応できるように
機能を多く入れているのでコードが複雑で記述量が多いからです。
しかし、自作プラグインなら必要な機能だけに絞って記述できるので、
モジュール化で小分けしたfunctions.phpと処理速度は同じです。
コメント