トップへ戻る
BLOGS

WordPress Plugin開発してみた

WordPress Plugin開発してみた

こんにちは
タイトル通りWordPressプラグインをはじめて作成してみたので
その過程で学んだ内容を書き記しておこうと感じました

今回作成したのはまだWordPress公式にアップしていないいわゆる「野良プラグイン」と呼ばれているものですがいずれは公式にアップすることも見据えていますのでその際はまた記事にしようと思っております

プラグインを読み込ませる

さてまずは作成するプラグインファイルを作ってWordPressに読み込ませます

今回作成するのは「投稿が公開された際に指定したメールアドレスにお知らせメールを送信する」というような内容を作成しました

まずはプラグインファイルを作成してWordPressの「wp_content」の中にある「plugins」ファイルの中に今回作成するプラグインファイルを入れていきます

「plugins」には今までインストールしたプラグインが入っていますね

プラグインファイルを認識してもらうためにPHPファイルの先頭に決まりごとを記述します

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

必ず必要なのは一番最初のPlugin Name: (プラグインの名前)です

このプラグインの名前は必ずユニーク(一意)な名前であり他のプラグインとかぶってしまってはエラーになります
ちなみにプラグインファイルの名前とは合わせなくても問題ないようですが紛らわしいのでなるべくなら空白のスペース以外は揃えておきましょう

一応日本語でも大丈夫そうですが、、あまりおすすめされていなかったので無難に英語にしておきましょう

次にライセンスです上記の決り文句のあとに続けて書きましょう

<?php
/*  Copyright 作成年 プラグイン作者名 (email : プラグイン作者のメールアドレス)

    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License, version 2, as
	published by the Free Software Foundation.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
*/
?>

上で「License: GPL2」を指定したら下記の記述をコピーライトの西暦、作者メールアドレスを書き換えて使用します

そしてここからはテーマをカスタムする際に記述する「functions.php」に書くのと同じですね

プラグインとしての注意点は関数や変数を定義していく中でも他に使用しているプラグインの内容とかぶらないようにするという点です

これは処理を書いていく際にCLASSで定義しそのインスタンスから実行することで解決できそうです

ここからはプラグイン作成に役立つメソッドなどを紹介していきます

プラグインの初期設定

//クラス定義
class OjaPluginInits {
  public function __construct() {
    register_activation_hook (__FILE__, array($this, 'oja_plugin_start'));
  }
  public function oja_plugin_start() {
    //インストールする際に行う処理
    $mail_setting =  get_option('ojako_mail_options');
    if ( !$mail_setting ) {
      // 設定のデフォルトの値
      $default_setting = [
        'mail_subject' => '記事を更新しました',
        'p_type'       => array('post'),
        'mail_address' => null,
        'mail_send'    => array('new')
      ];
      update_option( 'ojako_mail_options', $default_setting );
    }
  }
}
//インスタンスの生成
new OjaPluginInits;

WordPressにプラグインを認識してもらえたら管理画面で有効化します

この時点ではまだ何も書いていないので表示はしないのですがもしWordPressのデータベースを使用するプラグインの場合は管理画面で「有効化」された時に行われる処理があります

register_activation_hook (ファイルパス, コールバック関数);

関数register_activation_hookはプラグインが有効化されたときに実行される関数を登録します

今回はメールの送信設定の例で初期設定をWordPressのデータベースに登録します

この例ではプラグインを有効化した際にWordPressのデータを登録するためにCLASSを定義し、インスタンスを生成した際にすぐに実行されるように__construct()で
register_activation_hook を実行しています

update_option( ‘登録するキー’, 値 )

update_option()はWordPressのデータベース「wp_options」へデータを登録できます

また登録したキーで更新、キーがなければ作成されます

ちなみに返り値は登録が成功すればtrueを、失敗すればfalseが返ります

おそらく殆どのプラグインのデータはこの「wp_options」テーブルだけでまかなえるということで、自分でDBやテーブルなどを作成するのはやめておきましょう

登録したデータは簡単に引き出せます

get_option(‘登録したキー’)

これだけで登録したデータが配列として渡ってきます

無効化や削除された際の処理

同じようなアクションフックでプラグインを無効化、削除された際の処理も書いておきます

何故か有名なプラグインでも削除したはずなのにデータベースにはデータが残っている事がままあり、これではデータベースにどんどん使わないゴミデータが残り続ける事になります

そうならないように無効化、削除された際にはそのデータごと削除する機能を実装します

register_deactivation_hook (ファイルパス, コールバック関数);

register_uninstall_hook (ファイルパス, コールバック関数);

それぞれ使用方法は上のregister_activation_hook と同じです

ここでは先に有効化した際に登録した「wp_options」テーブルのデータを削除しようと思います

delete_option('ojako_mail_options');

delete_option(‘削除するテーブルのキー’);

この関数を上で設定したコールバック関数で実行するようにすると登録したデータを削除することができます

長くなってきましたが初期設定としてはこんな感じですかな
後編の記事も書いて後編でもプラグイン作成に便利そうな事柄を紹介していきます

お疲れさまでした

コメントをお待ちしております

お気軽にコメントをどうぞ。

CAPTCHA