WordPressプラグインを作ってみる:第一回

【第一回】WordPressの機能を追加するものにプラグインがありますが今回はこのプラグインの作り方を解説します。

WordPressの管理画面にrootでログインして「プラグイン」>「インストール済みプラグイン」で表示されているプラグインを「showDB.php」として作成します。

【解説】

プラグインはインストール済みプラグインに表示される概要説明を作る場所と一回だけ実行されるコンストラクタという場所と実行される関数部で構成されます。今回試作するプラグインはwordpressのDBを全て読み込んで表示するだけのプラグインです。

プラグインは

/wordpress/wp-content/plugins

にディレクトリを作ってshowDB.phpを入れると表示されます。

↑こんな感じ

【プラグイン全体のコード】

<?php
/*
Plugin Name: Show WordPress DataBase
Plugin URI: https://wspri.dip.jp/?p=155
Description: wordpress.*データベースを読んで一覧を表示するプラグイン
Author: jack.Amano
Version: 0.0
Author URI:https://wspri.dip.jp
*/

//オブジェクトを作成
new showtables;

//クラスを作る
class showtables{
    //コンストラクタ
    function __construct(){
        global $wpdb;//インスタンスを呼んでログイン
        $this->tables=$wpdb->get_results("SHOW TABLES FROM wordpress");//テーブルを呼び出して$thisの中に格納しとく
        add_action('admin_menu', array($this, 'add_admin'));//管理者メニューに追加する準備
    }
    //メニューを追加する関数
    function add_admin(){
        //level_8から10が管理者
        add_menu_page('DB一覧表示','DB一覧表示','level_9', __FILE__, array($this,'show_DB'));
    }
    //DBを表示する関数
    function show_DB(){
        $tables=$this->tables;//$thisからテーブルを取り出しておく
        echo <<<TABLE
        <h1>Show WordPress All Table<h1>
        <hr width="98%">
        <table width="98%" cellpadding="10" cellspacing="4" border="0" bgcolor="#888888">
TABLE;
        for ($i=0;$i<count($tables);$i++){//カウントアップしながら配列を分解
            echo <<<TABLE
            <tr><td bgcolor="#ffffff">{$i}</td><td bgcolor="#ffffff">{$tables[$i]->Tables_in_wordpress}</td></tr>
TABLE;
        }
        echo <<<TABLE
        </table>
TABLE;
    }
}

【各部解説】

<?php
/*
Plugin Name: Show WordPress DataBasePlugin 
URI: https://wspri.dip.jp/?p=155
Description: wordpress.*データベースを読んで一覧を表示するプラグイン
Author: jack.Amano
Version: 0.0
Author URI:https://wspri.dip.jp
*/

↑がインストール済みプラグインで表示される場所

//クラスを作る
class showtables{
    //コンストラクタ
    function __construct(){
        global $wpdb;//インスタンスを呼んでログイン
        $this->tables=$wpdb->get_results("SHOW TABLES FROM wordpress");//テーブルを呼び出して$thisの中に格納しとく
        add_action('admin_menu', array($this, 'add_admin'));//管理者メニューに追加する準備
}

↑がコンストラクタ

    //メニューを追加する関数
    function add_admin(){
        //level_8から10が管理者
        add_menu_page('DB一覧表示','DB一覧表示','level_9', __FILE__, array($this,'show_DB'));
    }

↑が管理者メニューに追加している

    //DBを表示する関数
    function show_DB(){
        $tables=$this->tables;//$thisからテーブルを取り出しておく
        echo <<<TABLE
        <h1>Show WordPress All Table<h1>
        <hr width="98%">
        <table width="98%" cellpadding="10" cellspacing="4" border="0" bgcolor="#888888">
TABLE;
        for ($i=0;$i<count($tables);$i++){//カウントアップしながら配列を分解
            echo <<<TABLE
            <tr><td bgcolor="#ffffff">{$i}</td><td bgcolor="#ffffff">{$tables[$i]->Tables_in_wordpress}</td></tr>
TABLE;
        }
        echo <<<TABLE
        </table>
TABLE;
    }
}

↑が実際に表示する関数。$thisからtablesオブジェクトを取り出して配列に格納。配列分だけloopしてカウントアップしている。->Tables_in_wordpressはvar_dump()で配列の中身をみたらテーブル名はTables_in_wordpressに格納されていたから。

↑こんな感じで一覧で所得できるんで応用すればいろいろ出来ます。

WSPRIについて

WSPRIはWEBサーバプログラミング研究所でしたが、特定のカテゴリにとらわれずUE4やサーバ関連の管理者の備忘録として情報を掲載していきます。
普段はあまり時間がないので応答が悪いですがその点はご理解ください。