設定画面を持つ簡単なプラグインの作成 : WordPress
WordPressのプラグイン作成に関するメモ。
作成するプラグインの機能
プラグインの設定画面(以下プラグインページ)で入力した値を管理画面のフッターに表示する。プラグインのメニューは管理メニューの[ 設定]メニューにサブメニューとして追加する。
プラグインの作成
Exsampleプラグインのファイル構成
サンプルのファイル構成次のようにプラグインファイルを配置する。
WordPressインストールディレクトリ
|
|-- wp-content
|
|-- plugins
|
|-- exsample
|
|-- exsample.php
ソースコード
<?php
/*
Plugin Name: Exsample
Version: 1.0
Plugin URI: http://www.exsample.com
Description: プラグインページに入力された値を管理画面のフッターに表示。
Author: Example
Author URI: http://www.exsample.com
*/
//--------------------------------------------------------------------------
//
// 管理画面>設定>Exsampleプラグインページを追加
//
//--------------------------------------------------------------------------
// 管理メニューのアクションフック
add_action('admin_menu', 'admin_menu_exsample');
// アクションフックのコールバッック関数
function admin_menu_exsample () {
// 設定メニュー下にサブメニューを追加:
add_options_page('サンプルプラグイン', 'サンプルプラグイン', manage_options, __FILE__, 'exsample');
}
// プラグインページのコンテンツを表示
function exsample () {
// 設定変更画面を表示する
?>
<div class="wrap">
<h2>Exsample</h2>
<form method="post" action="options.php">
<?php wp_nonce_field('update-options'); ?>
<table class="form-table">
<tr valign="top">
<th scope="row">キー</th>
<td><input type="text" name="key" value="<?php echo get_option('key'); ?>" /></td>
</tr>
</table>
<input type="hidden" name="action" value="update" />
<input type="hidden" name="page_options" value="key" />
<p class="submit">
<input type="submit" class="button-primary" value="<?php _e('Save Changes') ?>" />
</p>
</form>
</div>
<?php
}
?>
<?php
//--------------------------------------------------------------------------
//
// プラグイン削除の際に行うオプションの削除
//
//--------------------------------------------------------------------------
if ( function_exists('register_uninstall_hook') ) {
register_uninstall_hook(__FILE__, 'uninstall_hook_exsample');
}
function uninstall_hook_exsample () {
delete_option('key');
}
//--------------------------------------------------------------------------
//
// フッターへの表示
//
//--------------------------------------------------------------------------
add_action('admin_footer', 'admin_footer_exsample');
function admin_footer_exsample () {
$key_value = get_option('key');
if ( $key_value ) {
echo "<p>キー : " . esc_html($key_value). "</p>";
}
}
?>
ソースコードを個別に検討
/* Plugin Name: Exsample Version: 1.0 Plugin URI: http://www.exsample.com Description: プラグインページに入力された値を管理画面のフッターに表示。 Author: Example Author URI: http://www.exsample.com */
プラグインに必須の記述。プラグインファイルであることを宣言する。
//--------------------------------------------------------------------------
//
// 管理画面>設定>Exsampleプラグインページを追加
//
//--------------------------------------------------------------------------
// 管理メニューのアクションフック
add_action('admin_menu', 'admin_menu_exsample');
// アクションフックのコールバッック関数
function admin_menu_exsample () {
// 設定メニュー下にサブメニューを追加:
add_options_page('サンプルプラグイン', 'サンプルプラグイン', manage_options, __FILE__, 'exsample');
}
add_options_page関数(Function Reference/add options page « WordPress Codex)[1]
呼び出し add_options_page( $page_title, $menu_title, $capability, $menu_slug, $function );
パラメーター
$page_titele : 追加するプラグインページのtitleタグに表示するテキスト。
$menu_title : メニューに表示するテキスト。
$capability : 追加するメニューを表示するcapability。
$menu_slug : メニュー内では一意になるように付けたスラッグ名。
$function : 追加するプラグインページが表示されるときに呼び出されるコールバック関数。
例ではスラッグ名は一意の値を付けるためPHPの定義済み定数__FILE__を使って自身(exsample.php)のパスを設定している。
// プラグインページのコンテンツを表示
function exsample () {
// 設定変更画面を表示する
?>
<div class="wrap">
<h2>Exsample</h2>
<form method="post" action="options.php">
<?php wp_nonce_field('update-options'); ?>
<table class="form-table">
<tr valign="top">
<th scope="row">キー</th>
<td><input type="text" name="key" value="<?php echo get_option('key'); ?>" /></td>
</tr>
</table>
<input type="hidden" name="action" value="update" />
<input type="hidden" name="page_options" value="key" />
<p class="submit">
<input type="submit" class="button-primary" value="<?php _e('Save Changes') ?>" />
</p>
</form>
</div>
<?php
}
?>
exsampleはコールバック関数。
form要素のaction属性options.phpはwordpressインストールディレクトリ/wp-admin/options.phpを呼び出す。
データベースのoptionsテーブルへのデータの追加はプラグインページの「変更を保存]をクリックした際に行われる。
»Adding Administration Menus – WordPress Codex 日本語版
»Creating Options Pages – WordPress Codex 日本語版
//--------------------------------------------------------------------------
//
// プラグイン削除の際に行うオプションの削除
//
//--------------------------------------------------------------------------
if ( function_exists('register_uninstall_hook') ) {
register_uninstall_hook(__FILE__, 'uninstall_hook_exsample');
}
function uninstall_hook_exsample () {
delete_option('key');
}
プラグインをアンインストールしたときに設定したオプションをデータベースから削除する。 » register_uninstall_hook() – WordPress Codex
参考資料
- プラグインの作成 – WordPress Codex 日本語版
- プラグイン API – WordPress Codex 日本語版
- プラグイン API/アクションフック一覧 – WordPress Codex 日本語版
- プラグイン API/フィルターフック一覧 – WordPress Codex 日本語版
- Adding Administration Menus – WordPress Codex 日本語版
- Creating Options Pages – WordPress Codex 日本語版
- Function Reference/delete option « WordPress Codex
- Function Reference/register uninstall hook « WordPress Codex
関連記事
»投稿画面のタイトル入力域の幅とビジュアルリッチエディタ入力域の幅を変更するWordPressプラグイン : WordPress,プラグイン
[1] 管理メニューのトップレベルにメニューを追加するときはadd_menu_page関数が用意されている。
関連記事
- 関連記事は見つかりませんでした。
検索ボックスからの検索もお試しください。
コメント
Trackbacks
-
[...] WordPressで簡単なプラグインの作成 : WordPress | findxfine -Web制作に関する覚書- [...]
コメントの投稿
改行と段落タグは自動で挿入されます。
メールアドレスは表示されません。
トラックバックURL
http://www.findxfine.com/programming/wp/1300.html/trackback