WordPress の管理ページにメニューを追加し、データベースから SQL によって取得したデータを表示するプラグインの作成
WordPress の管理ページにメニューとサブメニューを追加し、データベースのWordPress 以外のテーブルから SQL によって取得したデータを表示する、プラグインを作成する手順のメモ。
[code lang=’php’] < ?php /* Plugin Name: プラグインの名前 Plugin URI: http://example.com/ Description: プラグイン一覧で表示される詳細情報 Author: DREAMHIVE CO., LTD. Version: バージョン情報 Author URI: http://www.example.com/ */ add_action('admin_menu', 'my_plugin_menu_show_requests'); function my_plugin_menu_show_requests() { add_menu_page('トップレベルメニューのタイトル', 'トップレベルメニュー', 1, FILE, ‘my_plugin_dosomething’);add_submenu_page(FILE, ‘サブメニューのタイトル’, ‘サブメニュー’, 1, FILE, ‘my_plugin_dosomething’);
}
function my_plugin_dosomething() {
global $wpdb;
echo '';
echo '目次
ページのタイトル
';
$wpdb->query('use データベース名;');
$results = $wpdb->get_results("
SELECT *
FROM テーブル名
WHERE 条件句
");
echo '';
echo '列1 列2 ・・・ ';
echo '';
foreach ($results as $row) {
print("{$row->列1} {$row->列2} {$row->・・・} ");
}
echo '';
echo '
';
echo '';
}
?>
[/code]
プラグインの作成部分
プラグインを作るだけなら非常に簡単です。
手順は次の通り。
- プラグイン用のコメントを書いた PHP ファイルを作成する。
中身が全くなくてもとりあえずプラグインとなります。 - WordPress のプラグインディレクトリにアップロードする。
「/wp-content/uploads/plugins/」の下にプラグインの名前のディレクトリを作成してその中に入れます。 - WordPress の「プラグイン」メニューからプラグインを「有効化」する。
メニューの作成部分
詳しくは 本家 Wiki の管理メニュー を参照してください。
ぱっと見ですぐにできなかったので、情報として残しておきます。
WordPress に独自のメニューを登録するプログラムの作成手順は次の通りです。
- プラグインが呼び出された際に実行されるコードをメソッドとして記述する
上記のサンプルの場合は実行するプラグイン本体の関数である「my_plugin_dosomething()」を登録していますが、トップレベルメニュー選択時の関数とサブメニュー選択時の関数を分けることもできます。 - プラグインをメニューに表示するためのコードを関数として記述する
「add_menu_page()」でトップレベルメニューの登録ができます。
「add_submenu_page()」でサブメニューの登録ができます。 - WordPress にメニューを登録する
「add_action(‘admin_menu’, メニュー呼び出し時に実行されるメソッド名)」で WordPress がフックしてくれるようになります。
ちなみにadd_submenu_page()」の呼び出しが1回だけしかないと、サブメニューが表示されず、トップレベルメニューのみしか表示されないようです。
データベースからデータを取得する部分
通常の PHP によるデータベース プログラミングと違うところは、wpdb と言う WordPress の定義済みクラスを使うことで、データベースへの接続などは全て自動化される点です。
wpdb はグローバルで初期化されたクラスですので、プラグイン用の関数内では global キーワードを指定しておきましょう。
[code lang=’php’] global $wpdb;[/code]
今回自分が作ったプラグインでは、WordPress とは別のデータベースに接続する必要があったので、最初に query() メソッドで use SQL を実行しています。
[code lang=’php’] $wpdb->query(‘use データベース名;’);[/code]
その後、get_results() メソッドで戻り値のある SQL を実行し、foreach() ステートメントでループ表示させています。
[code lang=’php’] $results = $wpdb->get_results(”SELECT *
FROM テーブル名
WHERE 条件句
);
foreach ($results as $row) {
print(“{$row->フィールド名}”);
}
[/code]
日付なら「date(‘Y/m/d’, strtotime($row->日付フィールド名)」、
複数行なら「nl2br($row->複数行フィールド名)」の様にしても良いでしょう。
まとめ
いくつかの技術の紹介をしましたが、プラグインの作成も非常に簡単にできますね。
10年集客し続けられるサイトを、ワードプレスで自作する9つのポイント プレゼント
あなたは、24時間365日、自分の代わりに集客し続けてくれるWebサイトを作りたい!と思ったことはありませんか?
私はこれまで500以上のWebサイトの構築と運営のご相談に乗ってきましたが、Webサイトを作ってもうまく集客できない人には、ある一つの特徴があります。
それは、「先を見越してサイトを構築していないこと」です。
Webサイトで集客するためには、構築ではなく「どう運用するか」が重要です。
しかし、重要なポイントを知らずにサイトを自分で構築したり、業者に頼んで作ってもらってしまうと、あとから全く集客に向いていないサイトになっていたということがよく起こります。
そこで今回、期間限定で
『10年集客し続けられるサイトをワードプレスで自作する9つのポイント』
について、過去に相談に乗ってきた具体的な失敗事例と成功事例を元にしてお伝えします。
・ワードプレスを使いこなせるコツを知りたい!
・自分にピッタリのサーバーを撰びたい!
・無料ブログとの違いを知りたい!
・あとで悔しくならない初期設定をしておきたい!
・プラグイン選びの方法を知っておきたい!
・SEO対策をワードプレスで行うポイントを知りたい!
・自分でデザインできる方法を知りたい!
という方は今すぐ無料でダウンロードしてください。
期間限定で、無料公開しています。
※登録後に表示される利用条件に沿ってご利用ください
お世話様です。初心者です。
プラグインを有効にすると、下記の様なエラーが出ますが、どうすれば直りますか?
あと、固定ページに表示したいのですが、どうやって関数を呼び出すのかお教え願います。
エラー
「Warning: call_user_func_array() expects parameter 1 to be a valid callback, function ‘my_plugin_menu_dosomething’ not found or invalid function name in C:\xampp\htdocs\wordpress\wp-includes\plugin.php on line 525
」
takuzohさん
エラーメッセージは「my_plugin_menu_dosomething」がないと言われていますので、
作られたメニュー表示用のメソッド名を正確に指定してみてください。