WordPressプラグイン作成入門
∼とりあえず「出来そう!」「簡単そう!」って思ってもらいたい∼
はじめに

‣   本資料は、WordPress のプラグイン作成の基本を解説して
    います。エンジニア寄りの解説ですが、デザイナーさんにも
    読んで頂ける内容かと思います。

‣   セッション内容の出典は WordBench 神戸の元管理人
    @horike37 さんです。ご本人に確認して本セッションでの
    利用の許可いただきました。

‣   僕自身は、@horike37 さんのセッションでWordPress に
    感動し、WordPress の活用に目覚めた人でございます。本
    セッションでも、その感動を共有できたらと思っています。
自己紹介

‣   ノジマユウジ                ‣   システム開発、
    @yuka2py                  グラフィックデザイン、
                              DTPや印刷なども
‣   株式会社フォーエンキー
    代表                    ‣   最近はiPhone/Android
                              のアプリ開発とかスマホ
‣   PythonとJavascriptが大       系のWebとか、WinDTア
    好き(Dartに興味深々)             プリなど作っています
‣   おしゃれも大好き☆             ‣   リボンやお花が好き☆
自己紹介

‣   ノジマユウジ                ‣   システム開発、
    @yuka2py                  グラフィックデザイン、
                              DTPや印刷なども
‣   株式会社フォーエンキー
          絶賛
    代表   お仕事募             ‣   最近はiPhone/Android
            集中
                              のアプリ開発とかスマホ
‣   PythonとJavascriptが大       系のWebとか、WinDTア
    好き(Dartに興味深々)             プリなど作っています
‣   おしゃれも大好き☆             ‣   リボンやお花が好き☆
最近のボク
                            Python
                      Design  1%
 お嫁                       15%
 Windows(C#)      iOS                お嫁
 Web(PHP/JS)
                   4%
 Android
                Android              40%
 iOS
 Design
                 10%
 Python
                Web(PHP/JS)
                   10%
                       Windows(C#)
2012年11月2日
株式会社フォーエンキー調べ               20%
WordPressのインストール
…は、出来てる前提です (*́ `*)テヘ♪




                  Σ(゚Д゚;)
こちらで丁寧に解説されてますよ♪


http://wpdocs.sourceforge.jp/WordPress のインストール
WordPressのプラグインとは?
WPの動作の大まかな理解

     初期化
WPの動作の大まかな理解

       初期化



 URLに対応するデータが検索される
WPの動作の大まかな理解

       初期化



 URLに対応するデータが検索される



URLに対応するテンプレートが開かれる
WPの動作の大まかな理解

       初期化



 URLに対応するデータが検索される



URLに対応するテンプレートが開かれる



      レスポンス
WPの動作の大まかな理解
                      割り込み

       初期化
                      フ ク
                       ッ


 URLに対応するデータが検索される    フ ク
                       ッ



URLに対応するテンプレートが開かれる   フ ク
                       ッ



                      フ ク
                       ッ
      レスポンス
WPの動作の大まかな理解
                      割り込み

       初期化
                      フ ク
                       ッ


 URLに対応するデータが検索される    フ ク
                       ッ



URLに対応するテンプレートが開かれる   フ ク
                       ッ



                      フ ク
                       ッ
      レスポンス
WPの動作の大まかな理解
                      割り込み
              これ!!
       初期化
                      フ ク
                       ッ


 URLに対応するデータが検索される    フ ク
                       ッ



URLに対応するテンプレートが開かれる   フ ク
                       ッ



                      フ ク
                       ッ
      レスポンス
WPのプラグインとは?


 「フック」を利用して、
WordPressに様々な機能を
     追加するもの
どんなプラグインを作る?
顔文字チェンジャー
顔文字チェンジャー

‣ WordPressの投稿の本文に、表示前にアクセス。
顔文字チェンジャー

‣ WordPressの投稿の本文に、表示前にアクセス。

‣ 本文中の「。」を顔文字に変換して表示する。
顔文字チェンジャー

‣ WordPressの投稿の本文に、表示前にアクセス。

‣ 本文中の「。」を顔文字に変換して表示する。




 。           (´・ω・`)
プラグイン作成の準備
プラグインファイルの作成

‣ WPのプラグインディレクトリに、
        任意の名前のディレクトリを作成
‣ 作成したディレクトリ内に、
        任意の名前のPHPファイルを作成



/wp-content/plugins/moji-changer/moji-changer.php
プラグインファイルの作成

‣ WPのプラグインディレクトリに、
        任意の名前のディレクトリを作成
‣ 作成したディレクトリ内に、
        任意の名前のPHPファイルを作成



/wp-content/plugins/moji-changer/moji-changer.php

  プラグインディレクトリ
プラグインファイルの作成

‣ WPのプラグインディレクトリに、
        任意の名前のディレクトリを作成
‣ 作成したディレクトリ内に、
        任意の名前のPHPファイルを作成



/wp-content/plugins/moji-changer/moji-changer.php

  プラグインディレクトリ       任意のディレクトリ

                        作成
プラグインファイルの作成

‣ WPのプラグインディレクトリに、
        任意の名前のディレクトリを作成
‣ 作成したディレクトリ内に、
        任意の名前のPHPファイルを作成



/wp-content/plugins/moji-changer/moji-changer.php

  プラグインディレクトリ       任意のディレクトリ      任意のPHPファイル

                        作成              作成
プラグインファイルの作成

‣ WPのプラグインディレクトリに、
        任意の名前のディレクトリを作成
‣ 作成したディレクトリ内に、
        任意の名前のPHPファイルを作成

                  この例では一緒にしてますが、全然違う名前でもOK!


/wp-content/plugins/moji-changer/moji-changer.php

  プラグインディレクトリ       任意のディレクトリ      任意のPHPファイル

                        作成              作成
メタデータを記述する

‣ moji-changer.php
           を開いて、以下のように、
 プラグインのメタ情報を記述する
 <?php
 /*
 Plugin Name: 顔文字チェンジャー
 Plugin URI: http://foreinkey.jp/
 Description: 投稿本文中の「。」を顔文字に変換するおもろプラグイン♪
 Author: yuka2py
 Version: 1.0.0
 Author URI: http://foreinkey.jp/
 */
メタデータを記述する

‣ moji-changer.php
           を開いて、以下のように、
 プラグインのメタ情報を記述する
                              WPはこの
 <?php                       メタ情報でプ
 /*                          ラグインを認
                               識する
 Plugin Name: 顔文字チェンジャー
 Plugin URI: http://foreinkey.jp/
 Description: 投稿本文中の「。」を顔文字に変換するおもろプラグイン♪
 Author: yuka2py
 Version: 1.0.0
 Author URI: http://foreinkey.jp/
 */
 以上。



       Σ(゚Д゚;)
これだけで...
(*-`д-;)
ス スゲェ…




 WPから
プラグインが
認識される!
(*-`д-;)
ス スゲェ…




 WPから
プラグインが
認識される!



  でもまだ
 何もしない
投稿の本文テキストを加工する
   ∼フィルターフックの利用∼



                     WPの
                   カスタマイズ
                   はフックから
フックを追加

‣ moji-changer.php      に以下のコードを追加する


add_filter('the_content', 'moji_changer_content_filter');



function moji_changer_content_filter($content) {

    return str_replace('。', '(́・ω・`)', $content);

}
フックを追加

‣ moji-changer.php       に以下のコードを追加する


add_filter('the_content', 'moji_changer_content_filter');
    フィルター
    フックの
    登録関数

function moji_changer_content_filter($content) {

     return str_replace('。', '(́・ω・`)', $content);

}
フックを追加

‣ moji-changer.php       に以下のコードを追加する


add_filter('the_content', 'moji_changer_content_filter');
    フィルター      【フック名】
    フックの     投稿本文の出力前の
    登録関数      フィルターフック

function moji_changer_content_filter($content) {

     return str_replace('。', '(́・ω・`)', $content);

}
フックを追加

‣ moji-changer.php       に以下のコードを追加する


add_filter('the_content', 'moji_changer_content_filter');
    フィルター      【フック名】
    フックの     投稿本文の出力前の                  実行したい関数を定義して
    登録関数      フィルターフック                  フックに関数名を指定する

function moji_changer_content_filter($content) {

     return str_replace('。', '(́・ω・`)', $content);

}
フックを追加

‣ moji-changer.php       に以下のコードを追加する


add_filter('the_content', 'moji_changer_content_filter');
    フィルター      【フック名】
    フックの     投稿本文の出力前の                  実行したい関数を定義して
    登録関数      フィルターフック                  フックに関数名を指定する

function moji_changer_content_filter($content) {
                                                     投稿本文
                                                     の文字列
     return str_replace('。', '(́・ω・`)', $content);

}
フックを追加

‣ moji-changer.php       に以下のコードを追加する


add_filter('the_content', 'moji_changer_content_filter');
    フィルター      【フック名】
    フックの     投稿本文の出力前の                  実行したい関数を定義して
    登録関数      フィルターフック                  フックに関数名を指定する

function moji_changer_content_filter($content) {
                                                     投稿本文
                                                     の文字列
     return str_replace('。', '(́・ω・`)', $content);
               投稿本文 $content に必要な処理を行って返す
}
 以上。



       Σ(゚Д゚;)
試してみます




有効化
する
変わった!!
 d(*・` ・
APIを確認するには?
∼エンジニアだったら気になるその確認方法∼
まずはCodexで検索
ソースコードを読む




  the_contentフックの引数を確認
ソースコードを読む
                          良くも悪
                          くもWPの
                         ソースコード
                         は読み易い




  the_contentフックの引数を確認
設定画面を追加する
∼アクションフィルタの利用∼
管理画面にメニューを追加する

‣ moji-changer.php         に以下のコードを追加する

      add_action('admin_menu', 'moji_changer_admin_menu');

      function moji_changer_admin_menu() {
         add_menu_page(
            '顔文字チェンジャー', //HTMLのページタイトル
            '顔文字チェンジャー設定', //管理画面メニューの表示名
            'administrator', //この機能を利用できるユーザー
            'moji_changer_admin_menu', //urlに入る名前
            'moji_changer_edit_setting' //機能を提供する関数
         );
      }

      function moji_changer_edit_setting() {
         echo "設定画面をここに書くよ!";
      }
add_action('admin_menu', 'moji_changer_admin_menu');

function moji_changer_admin_menu() {
  add_menu_page(
     '顔文字チェンジャー', //HTMLのページタイトル
     '顔文字チェンジャー設定', //管理画面メニューの表示名
     'administrator', //この機能を利用できるユーザー
     'moji_changer_admin_menu', //urlに入る名前
     'moji_changer_edit_setting' //機能を提供する関数
  );
}

function moji_changer_edit_setting() {
   echo "設定画面をここに書くよ!";
}
add_action('admin_menu', 'moji_changer_admin_menu');
管理画面にメニューページを追加するフィルターフック

function moji_changer_admin_menu() {
  add_menu_page(
     '顔文字チェンジャー', //HTMLのページタイトル
     '顔文字チェンジャー設定', //管理画面メニューの表示名
     'administrator', //この機能を利用できるユーザー
     'moji_changer_admin_menu', //urlに入る名前
     'moji_changer_edit_setting' //機能を提供する関数
  );
}

function moji_changer_edit_setting() {
   echo "設定画面をここに書くよ!";
}
add_action('admin_menu', 'moji_changer_admin_menu');
管理画面にメニューページを追加するフィルターフック

function moji_changer_admin_menu() {
  add_menu_page( 投稿本文の出力前のフィルターフック名
     '顔文字チェンジャー', //HTMLのページタイトル
     '顔文字チェンジャー設定', //管理画面メニューの表示名
     'administrator', //この機能を利用できるユーザー
     'moji_changer_admin_menu', //urlに入る名前
     'moji_changer_edit_setting' //機能を提供する関数
  );
}

function moji_changer_edit_setting() {
   echo "設定画面をここに書くよ!";
}
add_action('admin_menu', 'moji_changer_admin_menu');
管理画面にメニューページを追加するフィルターフック

function moji_changer_admin_menu() {
  add_menu_page( 投稿本文の出力前のフィルターフック名
     '顔文字チェンジャー', //HTMLのページタイトル
     '顔文字チェンジャー設定', //管理画面メニューの表示名
     'administrator', //この機能を利用できるユーザー
     'moji_changer_admin_menu', //urlに入る名前
     'moji_changer_edit_setting' //機能を提供する関数
                                    add_menu_page のオプション
  );
}

function moji_changer_edit_setting() {
   echo "設定画面をここに書くよ!";
}
add_action('admin_menu', 'moji_changer_admin_menu');
管理画面にメニューページを追加するフィルターフック

function moji_changer_admin_menu() {
  add_menu_page( 投稿本文の出力前のフィルターフック名
     '顔文字チェンジャー', //HTMLのページタイトル
     '顔文字チェンジャー設定', //管理画面メニューの表示名
     'administrator', //この機能を利用できるユーザー
     'moji_changer_admin_menu', //urlに入る名前
     'moji_changer_edit_setting' //機能を提供する関数
                                    add_menu_page のオプション
  );
                         実行したい関数を定義して
}                        指定する


function moji_changer_edit_setting() {
   echo "設定画面をここに書くよ!";
}
 以上。



       Σ(゚Д゚;)
これだけで...
管理画面に
メニューが
追加され
管理画面に
 メニューが
 追加され




クリックすると...
管理画面に
 メニューが
 追加され




         個別の設定
         画面が開く

クリックすると...
管理画面に
 メニューが
 追加され




           個別の設定
           画面が開く

クリックすると...




  moji_changer_edit_setting()
         関数内での出力
管理画面に
 メニューが
 追加され



                             add_menu_page()の
           個別の設定
                            第4引数で指定した文字列
           画面が開く

クリックすると...




  moji_changer_edit_setting()
         関数内での出力
設定機能を実装する
∼データの永続化。Option API の利用∼
データを保存する

‣ moji_changer_edit_setting()                   関数を以下に変更

    function moji_changer_edit_setting() {
       if (isset($_POST['kaomoji'])) {
           update_option('kaomoji_changer_plugin_value', $_POST['kaomoji']);
       }
       $kaomoji = get_option('kaomoji_changer_plugin_value');
       echo <<<EOD
    <div>
       <h2>顔文字チェンジャー</h2>
       <form action="" method="post">
           <p><input type="text" name="kaomoji" value="{$kaomoji}" /></p>
           <p><input type="submit" value="登録" /></p>
       </form>
    </div>
    EOD;
    }
function moji_changer_edit_setting() {
    if (isset($_POST['kaomoji'])) {
        update_option('kaomoji_changer_plugin_value', $_POST['kaomoji']);
    }
    $kaomoji = get_option('kaomoji_changer_plugin_value');
    echo <<<EOD
<div>
    <h2>顔文字チェンジャー</h2>
    <form action="" method="post">
        <p><input type="text" name="kaomoji" value="{$kaomoji}" /></p>
        <p><input type="submit" value="登録" /></p>
    </form>
</div>
EOD;
}
function moji_changer_edit_setting() {
    if (isset($_POST['kaomoji'])) {
        update_option('kaomoji_changer_plugin_value', $_POST['kaomoji']);
    } $_POSTされてきたデータをオプションAPIで保存する
    $kaomoji = get_option('kaomoji_changer_plugin_value');
    echo <<<EOD
<div>
    <h2>顔文字チェンジャー</h2>
    <form action="" method="post">
        <p><input type="text" name="kaomoji" value="{$kaomoji}" /></p>
        <p><input type="submit" value="登録" /></p>
    </form>
</div>
EOD;
}
function moji_changer_edit_setting() {
    if (isset($_POST['kaomoji'])) {
        update_option('kaomoji_changer_plugin_value', $_POST['kaomoji']);
    } $_POSTされてきたデータをオプションAPIで保存する
    $kaomoji = get_option('kaomoji_changer_plugin_value');
    echo <<<EOD                       オプションAPIから値を取得する

<div>
    <h2>顔文字チェンジャー</h2>
    <form action="" method="post">
        <p><input type="text" name="kaomoji" value="{$kaomoji}" /></p>
        <p><input type="submit" value="登録" /></p>
    </form>
</div>
EOD;
}
function moji_changer_edit_setting() {
    if (isset($_POST['kaomoji'])) {
        update_option('kaomoji_changer_plugin_value', $_POST['kaomoji']);
    } $_POSTされてきたデータをオプションAPIで保存する
    $kaomoji = get_option('kaomoji_changer_plugin_value');
    echo <<<EOD                       オプションAPIから値を取得する

<div>
    <h2>顔文字チェンジャー</h2>
    <form action="" method="post">
        <p><input type="text" name="kaomoji" value="{$kaomoji}" /></p>
        <p><input type="submit" value="登録" /></p>
    </form>
</div>                                                  フォームの出力

EOD;
}
function moji_changer_edit_setting() {
    if (isset($_POST['kaomoji'])) {
        update_option('kaomoji_changer_plugin_value', $_POST['kaomoji']);
    } $_POSTされてきたデータをオプションAPIで保存する
    $kaomoji = get_option('kaomoji_changer_plugin_value');
    echo <<<EOD                       オプションAPIから値を取得する

<div>                                        【ポイント】
                                         formのactionを空にして
    <h2>顔文字チェンジャー</h2>                   同じ画面を呼び出している
    <form action="" method="post">
        <p><input type="text" name="kaomoji" value="{$kaomoji}" /></p>
        <p><input type="submit" value="登録" /></p>
    </form>
</div>                                                  フォームの出力

EOD;
}
保存したデータを利用する

‣ moji_changer_content_filter()          関数を以下に変更



function moji_changer_content_filter($content) {

    $kaomoji = get_option('kaomoji_changer_plugin_value');

    return str_replace('。', $kaomoji, $content);

}
保存したデータを利用する

‣ moji_changer_content_filter()          関数を以下に変更



function moji_changer_content_filter($content) {

    $kaomoji = get_option('kaomoji_changer_plugin_value');
                                       オプションAPIから値を取得する
    return str_replace('。', $kaomoji, $content);

}
保存したデータを利用する

‣ moji_changer_content_filter()          関数を以下に変更



function moji_changer_content_filter($content) {

    $kaomoji = get_option('kaomoji_changer_plugin_value');
                                       オプションAPIから値を取得する
    return str_replace('。', $kaomoji, $content);

}
 以上。



       Σ(゚Д゚;)
結果...
入力
フォーム
が表示
入力
フォーム
が表示




 値を
登録保存
できる
完成ー!!
        ヽ(*´∀`)/
まとめ
<?php


完成した
         /*
         Plugin Name: 顔文字チェンジャー
         Plugin URI: http://foreinkey.jp/
         Description: 投稿本文中の「。」を顔文字に変換するおもろプラグイン♪


プラグインの
         Author: yuka2py
         Version: 1.0.0
         Author URI: http://foreinkey.jp/
         */


ソースコード   add_filter('the_content', 'moji_changer_content_filter');

         function moji_changer_content_filter($content) {
               $kaomoji = get_option('kaomoji_changer_plugin_value');
               return str_replace('。', $kaomoji, $content);
         }

         add_action('admin_menu', 'moji_changer_admin_menu');

         function moji_changer_admin_menu() {
               add_menu_page(
                    '顔文字チェンジャー',
                    '顔文字チェンジャー設定',
                    'administrator',
                    'moji_changer_admin_menu',
                    'moji_changer_edit_setting'
               );
         }

         function moji_changer_edit_setting() {
           if (isset($_POST['kaomoji'])) {
               update_option('kaomoji_changer_plugin_value', $_POST['kaomoji']);
           }
           $kaomoji = get_option('kaomoji_changer_plugin_value');
           echo <<<EOD
         <div>
           <h2>顔文字チェンジャー</h2>
           <form action="" method="post">
               <p><input type="text" name="kaomoji" value="{$kaomoji}" /></p>
               <p><input type="submit" value="登録" /></p>
           </form>
         </div>
         EOD;
         }
<?php


完成した
         /*
         Plugin Name: 顔文字チェンジャー
         Plugin URI: http://foreinkey.jp/
         Description: 投稿本文中の「。」を顔文字に変換するおもろプラグイン♪


プラグインの
         Author: yuka2py
         Version: 1.0.0
         Author URI: http://foreinkey.jp/
         */
                                                    プラグインメタ情報

ソースコード   add_filter('the_content', 'moji_changer_content_filter');

         function moji_changer_content_filter($content) {
               $kaomoji = get_option('kaomoji_changer_plugin_value');
               return str_replace('。', $kaomoji, $content);
         }

         add_action('admin_menu', 'moji_changer_admin_menu');

         function moji_changer_admin_menu() {
               add_menu_page(
                    '顔文字チェンジャー',
                    '顔文字チェンジャー設定',
                    'administrator',
                    'moji_changer_admin_menu',
                    'moji_changer_edit_setting'
               );
         }

         function moji_changer_edit_setting() {
           if (isset($_POST['kaomoji'])) {
               update_option('kaomoji_changer_plugin_value', $_POST['kaomoji']);
           }
           $kaomoji = get_option('kaomoji_changer_plugin_value');
           echo <<<EOD
         <div>
           <h2>顔文字チェンジャー</h2>
           <form action="" method="post">
               <p><input type="text" name="kaomoji" value="{$kaomoji}" /></p>
               <p><input type="submit" value="登録" /></p>
           </form>
         </div>
         EOD;
         }
<?php


完成した
               /*
               Plugin Name: 顔文字チェンジャー
               Plugin URI: http://foreinkey.jp/
               Description: 投稿本文中の「。」を顔文字に変換するおもろプラグイン♪


プラグインの
               Author: yuka2py
               Version: 1.0.0
               Author URI: http://foreinkey.jp/
               */
                                                          プラグインメタ情報

ソースコード         add_filter('the_content', 'moji_changer_content_filter');

               function moji_changer_content_filter($content) {
                     $kaomoji = get_option('kaomoji_changer_plugin_value');
                     return str_replace('。', $kaomoji, $content);
  投稿の本文の加工処理   }

               add_action('admin_menu', 'moji_changer_admin_menu');

               function moji_changer_admin_menu() {
                     add_menu_page(
                          '顔文字チェンジャー',
                          '顔文字チェンジャー設定',
                          'administrator',
                          'moji_changer_admin_menu',
                          'moji_changer_edit_setting'
                     );
               }

               function moji_changer_edit_setting() {
                 if (isset($_POST['kaomoji'])) {
                     update_option('kaomoji_changer_plugin_value', $_POST['kaomoji']);
                 }
                 $kaomoji = get_option('kaomoji_changer_plugin_value');
                 echo <<<EOD
               <div>
                 <h2>顔文字チェンジャー</h2>
                 <form action="" method="post">
                     <p><input type="text" name="kaomoji" value="{$kaomoji}" /></p>
                     <p><input type="submit" value="登録" /></p>
                 </form>
               </div>
               EOD;
               }
<?php


完成した
               /*
               Plugin Name: 顔文字チェンジャー
               Plugin URI: http://foreinkey.jp/
               Description: 投稿本文中の「。」を顔文字に変換するおもろプラグイン♪


プラグインの
               Author: yuka2py
               Version: 1.0.0
               Author URI: http://foreinkey.jp/
               */
                                                          プラグインメタ情報

ソースコード         add_filter('the_content', 'moji_changer_content_filter');

               function moji_changer_content_filter($content) {
                     $kaomoji = get_option('kaomoji_changer_plugin_value');
                     return str_replace('。', $kaomoji, $content);
  投稿の本文の加工処理   }

               add_action('admin_menu', 'moji_changer_admin_menu');

               function moji_changer_admin_menu() {
                     add_menu_page(
                          '顔文字チェンジャー',
                          '顔文字チェンジャー設定',
                          'administrator',
                          'moji_changer_admin_menu',
                          'moji_changer_edit_setting'
      管理画面への         );
  メニューページの追加   }

               function moji_changer_edit_setting() {
                 if (isset($_POST['kaomoji'])) {
                     update_option('kaomoji_changer_plugin_value', $_POST['kaomoji']);
                 }
                 $kaomoji = get_option('kaomoji_changer_plugin_value');
                 echo <<<EOD
               <div>
                 <h2>顔文字チェンジャー</h2>
                 <form action="" method="post">
                     <p><input type="text" name="kaomoji" value="{$kaomoji}" /></p>
                     <p><input type="submit" value="登録" /></p>
                 </form>
               </div>
               EOD;
               }
<?php


完成した
               /*
               Plugin Name: 顔文字チェンジャー
               Plugin URI: http://foreinkey.jp/
               Description: 投稿本文中の「。」を顔文字に変換するおもろプラグイン♪


プラグインの
               Author: yuka2py
               Version: 1.0.0
               Author URI: http://foreinkey.jp/
               */
                                                          プラグインメタ情報

ソースコード         add_filter('the_content', 'moji_changer_content_filter');

               function moji_changer_content_filter($content) {
                     $kaomoji = get_option('kaomoji_changer_plugin_value');
                     return str_replace('。', $kaomoji, $content);
  投稿の本文の加工処理   }

               add_action('admin_menu', 'moji_changer_admin_menu');

               function moji_changer_admin_menu() {
                     add_menu_page(
                          '顔文字チェンジャー',
                          '顔文字チェンジャー設定',
                          'administrator',
                          'moji_changer_admin_menu',
                          'moji_changer_edit_setting'
      管理画面への         );
  メニューページの追加   }

               function moji_changer_edit_setting() {
                 if (isset($_POST['kaomoji'])) {
                     update_option('kaomoji_changer_plugin_value', $_POST['kaomoji']);
                 }
                 $kaomoji = get_option('kaomoji_changer_plugin_value');
                 echo <<<EOD
               <div>
                 <h2>顔文字チェンジャー</h2>
                 <form action="" method="post">
                     <p><input type="text" name="kaomoji" value="{$kaomoji}" /></p>
                     <p><input type="submit" value="登録" /></p>
                 </form>
  メニューページ関連の   </div>
       実際の処理   EOD;
               }
まとめ
まとめ

‣ WPプラグインは「フッ
ク」を使って開発する
●
    必要な関数をフック登録
まとめ

‣ WPプラグインは「フッ
 ク」を使って開発する
 ●
     必要な関数をフック登録

‣ WordPress
       の組込関数
 やオブジェクトを利用し
 て機能を実現する
 ●
     add_menu_page 関数
 ●
     Option API
まとめ

‣ WPプラグインは「フッ           ‣ フックやWP組み込み
 ク」を使って開発する             関数の使い方を除くと、
 ●
     必要な関数をフック登録        やっぱりただのPHP

‣ WordPress
       の組込関数                   大事!!
 やオブジェクトを利用し
 て機能を実現する
                        ●
                            フックや組み込み関数沢
                            山はたくさんあるけど、
 ●
     add_menu_page 関数       基本的な考え方は非常に
 ●
     Option API             シンプル
注意点・補足
‣   key/value ストアの        ‣   外部入力データは
    key名の重複を避ける               クオートされてます
    ●
        key名はテーマやプラグイン毎       ●
                                  WordPress が独自に
        に名前空間が分かれてはいない            magic_quotesする!
    ●
        一般にはプラグイン名のプリ         ●
                                  戻す関数があります。
        フィックスを付ける
                          ‣   Option API はプリミティブな
‣   他のプラグインやテーマの関数            値以外に、配列なども保存可能
    との重複を避ける
                          ‣   説明の簡単の為に、サンプル等
    ●
        一般にはプラグイン名のプリ
        フィックスを付ける             のコードは最低限のものですの
                              でご注意ください
エンジニア的な発展
∼キレイに書きたきゃ書けば良い∼
<?php
               /*
               Plugin Name: 文字チェンジャー
               Plugin URI: http://foreinkey.jp/


moji-changer.php
               Description: 投稿本文中の任意のテキストを任意のテキストに置換する
               Author: yuka2py
               Version: 1.0.0
               Author URI: http://foreinkey.jp/
               */

               define('MOJI_CHANGER','MOJI_CHANGER');

               add_filter('the_content', 'moji_changer_content_filter');
‣ 変換元文字も指定     add_action('admin_menu', 'moji_changer_admin_menu');

               function moji_changer_content_filter($content) {

できるようにした         $moji_changer_vars = get_option(MOJI_CHANGER);
                 if (!empty($moji_changer_vars['from'])) {
                     $content = str_replace(
                       $moji_changer_vars['from'],
 ●
     1つのキーに            $moji_changer_vars['to'],
                       $content);
                 }
     配列を保存して   }
                 return $content;


     みてました。    function moji_changer_admin_menu() {
                 add_menu_page(
                    '文字チェンジャー',
                    '文字チェンジャー設定',
                    'administrator',
‣ Viewを分離した         'moji_changer_admin_menu',
                    'moji_changer_edit_setting'
                 );
               }

               function moji_changer_edit_setting() {
                 if (isset($_POST['moji_changer_vars'])) {
                     update_option(MOJI_CHANGER, $_POST['moji_changer_vars']);
                 }
                 $moji_changer_vars = get_option(MOJI_CHANGER);
                 include 'setting.html.php';
               }
setting.html.php

‣ WP管理画面の
             <div class="wrap">
                <?php screen_icon('edit'); ?>
                <h2>文字チェンジャー</h2>

CSSクラス等を
                <p>記事本文中の任意の文字を、別の文字に変換するプラグインです。<br />
                   「置き換えする文字」を空欄にすると、置換処理は行われません。</p>
                <form action="" method="post">

適用して、管理画面          <table class="form-table">
                      <tr>
                         <th><label for="moji_changer_vars[from]">置き換えする文字</

らしくしてみた      label></th>
                         <td><input id="moji_changer_vars[from]" type="text"
                            name="moji_changer_vars[from]"
                            value="<?php echo isset($moji_changer_vars['from'])
                              ? $moji_changer_vars['from'] : '' ?>" /></td>
                      </tr>
                      <tr>
                         <th><label for="moji_changer_vars[to]">置き換える文字</label></th>
                         <td><input id="moji_changer_vars[to]" type="text"
                            name="moji_changer_vars[to]"
                            value="<?php echo isset($moji_changer_vars['to'])
                              ? $moji_changer_vars['to'] : '' ?>" /></td>
                      </tr>
                   </table>
                   <p><input type="submit" class="button-primary" value="登録" /></p>
                </form>
             </div>
もし良かったら遊んでください♪


 @yuka2py
 https://twitter.com/yuka2py

 http://www.facebook.com/yuka2py

 http://gplus.to/yuka2py
                               (´∀`〃)ゝキャハ
ご静聴、ありがとうございました!
この文書は クリエイティブ・コモンズ 表示 - 継承 2.1 日本 ライセンスの下に提供されています。

WordPressプラグイン作成入門