ようこそのお運びで、厚く御礼申し上げます。
38日目です。前回からウィジェットのお話ですが、今回はテキスト入力のウィジェットを作成してみたいと思います
サイドバーに、入力した値を表示するウィジェットを追加してみる。
まず、どこに表示するかを決めて保存します。今回は管理画面からテキストを入力。

サイドバーに文字列が表示されました。

まずはfunction.phpに書いてみます。
では、function.phpに以下のコードを書きました。
//ウィジェット生成用アクションフィルタ
add_action('widgets_init', create_function('', 'return register_widget("Paka3TextWidget");'));
class Paka3TextWidget extends WP_Widget {
//コンストラクタ:オブジェクト生成時呼び出し
public function __construct(){
//名前
$name = "テキスト入力ウィジェット";
//説明文
$widget_ops = array( 'description' => 'テキスト入力ウィジェットはじめました' );
//管理画面でのサイズ
$control_ops = array( 'width' => 400, 'height' => 200 );
parent::WP_Widget(false, $name,$widget_ops,$control_ops);
}
//ウィジェット:画面表示
public function widget($args, $instance) {
extract( $args );
$title = apply_filters('widget_title', $instance['title']);
$title = $title ? $before_title.$title.$after_title: "";
echo <<<EOS
{$before_widget}
{$title}
{$after_widget}
EOS;
}
//更新時の処理
public function update($new_instance, $old_instance) {
//入力した値を更新します
return $new_instance;
}
//管理画面:ウィジェット画面
function form($instance) {
$title = esc_attr($instance['title']);
$f_id = $this->get_field_id('title');
$f_name = $this->get_field_name('title');
$mess = _e('Title:');
echo <<<EOS
<p>
<label for="{$f_id}">{$mess}
<input class="widefat" id="{$f_id}"
name="{$f_name}" type="text"
value="{$title}" />
</label>
</p>
EOS;
}
}
ポイントはどこ?
今回も「WordPress ウィジェット API(WordPress Codex 日本語版)」と「Widgets API < WordPress Codex」を参考にして作っていきます。
前回は文字列の表示のみでしたが、今回はテキストを入力して更新した上で、また表示します。
- アクションフィルタとクラス構造
今回は更新処理を追加しました。//ウィジェット生成用アクションフィルタ add_action('widgets_init', create_function('', 'return register_widget("Paka3FirstWidget");')); class Paka3FirstWidget extends WP_Widget { public function __construct(){ //コンストラクタ:オブジェクト生成時呼び出し //初期設定 } public function widget($args, $instance) { //画面表示 } //更新時の処理 public function update($new_instance, $old_instance) { //入力した値を更新します return $new_instance; } function form($instance) { //管理画面:ウィジェット画面 } } - コンストラクタで初期設定行う際、名前、説明文、画面のサイズなどを設定することがか可能です。
//コンストラクタ:オブジェクト生成時呼び出し public function __construct(){ //名前 $name = "テキスト入力ウィジェット"; //説明文 $widget_ops = array( 'description' => 'テキスト入力ウィジェットはじめました' ); //管理画面でのサイズ $control_ops = array( 'width' => 400, 'height' => 200 ); parent::WP_Widget(false, $name,$widget_ops,$control_ops); } - >更新処理はそのまま入力した値を返します。
//更新時の処理 public function update($new_instance, $old_instance) { //入力した値を更新します return $new_instance; }
コードをプラグイン用のファイルにします
それではfunction.phpに書いたコードを消して、
「paka3_textWedget.php」というファイルを作成し、以下のコードを記入します。
このファイルを[wp-content]>「plugins」ディレクトリに入れ、管理画面で有効にして完了です。
今回のまとめ
テキスト入力のウィジェットが確認されました。ウィジェットは意外と簡単に入出力ができますね。もうちょっとウィジェットをいじくってみようと思います。