ワードプレスに自作プラグインを作る
更新作業を楽に(汗)というよりこれから作成していくサイトにサービスを増やすためワードプレスのプラグインを作ってみることにしました。
外部から読み込んでも良いのですが、どうしてもワードプレスのカテゴリーを使用したかったのでいっそのことプラグインを作ってみようということで。
結果的に簡単に自作プラグインを作ることができました。というよりまだ作ってますが・・・備忘録的にメモしておきます。
普通のワードプレスの記事だけも重要だけどサブとして記事を彩るデータなどを表示すればもっとユーザーが喜んでくれると思ったのでプラグインからデータを記事に挿入することにしました。
プラグインを置くディレクトリ
まずは、プラグインを置く場所を確認します。
public_html/wp-content/plugins
ここになります。ある程度ワードプレスをいじっている方はすでにご存知ですよね。
他のプラグインと同じように自作プラグインもこのディレクトリに設置します。
自作プラグインを設置してみる
まぁ、例によって以前から外部ツールとして使っていた価格調査のプラグインを作ってみます。
外部ツールとしては完成されていたスクリプトですがプラグインとして設置しただけじゃ動かないのでまずは設置してどのように修正したら良いのかゴニョゴニョやってみます。
プラグイン名を決めてプラグイン情報を記述する
WordPressCodex日本語版プラグインの作成ページを参考に自作プラグインを作っていきます。
- プラグイン名:kakaku-tyousa
- プラグインディレクトリ名:kakaku-tyousa
- プラグインディレクトリ設置場所:wp-content/plugins/
- プラグインメインファイル名:kakaku-tyousa.php
プラグインのメインファイルにヘッダーを記入する
メインファイルにヘッダーを記入しないとプラグインとして有効化されないようです。
メインファイルの<?phpの下に記入
/*
Plugin Name: (プラグインの名前)
Plugin URI: (プラグインの説明と更新を示すページの URI)
Description: (プラグインの短い説明)
Version: (プラグインのバージョン番号。例: 1.0)
Author: (プラグイン作者の名前)
Author URI: (プラグイン作者の URI)
License: (ライセンス名の「スラッグ」 例: GPL2)
*/
まだ未定なので以下のように記入しておきました。
/*
Plugin Name: kakaku-tyousa
Plugin URI:
Description:
Version: 0.2
Author: GO
Author URI: https://bey.jp
License:
*/
プラグイン有効化設定完了
上記を設定しただけで「インストール炭のプラグイン」の欄に表示されるようになりました。
簡単です♪ 自作プラグイン完成したみたいでちょっと嬉しい❤
自作プラグインのスクリプト作成
まずは最低限やったことは、スタイルシートの読み込みと、ワードプレスの管理画面の「設定 > 価格調査」を作ってページを表示させるようにしました。
スタイルシートとJavaScriptを読み込む
function kakakuStyle(){//スタイルシート
wp_enqueue_style('kakakuStyle', plugins_url('style.css', __FILE__));
wp_enqueue_script( 'kakakujs', plugins_url('js.php', __FILE__));
}
add_action('admin_head','kakakuStyle');//admin_headで管理画面のCSSを追加
スタイルシートのフックを呼びます。重要なのはadmin_head関数を使ってスタイルシートを読みこまないと管理画面で読まれません。
管理画面に表示するスクリプトを書く
管理画面に設定などのスクリプトを表示させるにはadmin_menuのフックを作る必要があるようです。
WordPressCodex日本語版管理メニューの追加
管理画面に表示させるには上記のマニュアルを読むと早く作ることができます。
こんなふうに作ってみました。
function kakakutyousa() {
add_options_page('価格調査のプラグイン', '価格調査', 8, __FILE__, 'kakakutyousa_plugin');
}
add_action('admin_menu', 'kakakutyousa');
function kakakutyousa_plugin() {
global $kakakudata;//global化忘れないように
//PHPスクリプト 中身
}
add_options_page(‘タブに表示されるタイトル’, ‘左メニュー設定の中のタイトル’, 数字(管理レベル), __FILE__, ‘関数名’);
上記add_options_pageの中身はこのようになってます。
あと、管理画面の関数kakakutyousa_plugin()もグローバル化しておかないと変数が使えなくなる。(気付かずちょっとハマった。)
あとは、PHPスクリプトを上記の中に入れれば外部PHPの作り方と変わらないようです。
ワードプレスのカテゴリーSelect表示
テンプレートタグ/wp dropdown categories
ワードプレスのカテゴリーも簡単に引っ張ってこれて便利!すぐ忘れるのでメモ的に書いておきます。
$category=wp_dropdown_categories('hide_empty=0&echo=0&hierarchical=true&depth=2&class=catesel&name=catesel&selected='.$_REQUEST['catesel']);
- hide_empty=0:投稿のないカテゴリーを表示
- echo=0:エコーしないで値を返す
- hierarchical=true:階層形式のカテゴリーをインデント表示
- depth=2:カテゴリー階層レベル(hierarchical=trueの時のみ有効)
- class=catesel:classの名前を決める(初期値: ‘postform’)
- name=catesel:nameの名前を決める(初期値: ‘cat’)
- selected=’.$_REQUEST[‘catesel’]:前の画面で選んだカテゴリーをセレクト
残念なのはmultipleに対応していないこと・・・3つのジャンルの大カテゴリーから各1つずつの小カテゴリー合計3つ選ぶようにしたかったけど1つしか選べない・・・どうしよう。
こちらにmultipleにするパッチがあるようだけど、適用しても大丈夫なのだろうか?どうするか検討中
ちょっと古くて現在のワードプレスのバージョンと合わないみたい。
Function Reference/wp dropdown categories
codex.wordpress.orgのページに「value_field」というオプションがあるのが気になる。日本語のページには無いオプション。
このオプションを使ってwp_dropdown_categoriesでmultipleできるかやってます。できなさそうだけど(汗)
ともあれ、ものすごく簡単にセレクトのカテゴリーリストができました。
自作プラグイン制作途中
とりあえずはここまでできました。
これでAmazonとかYahooとか楽天とかの情報引っ張ってきて価格順に商品を並べるだけです(汗)
この設定を独自MySQLテーブルに保存しておいて、商品を紹介したりレビューしたりした最後に掲載するのに呼びだす価格比較表。
今までもやってましたが今度はワードプレスのカテゴリーを絡めるようにしたのでもっと便利に、1ページだけこの情報を使うのではなく、カテゴリーごとに分けたり分類できるので使い回しができるようになります。
これできたら全部のツールプラグイン化すればもっと特徴のあるサイト作れそう。
コメント