Skip to content

wordpress ウィジェット作り

DBに登録してある値(今回はリンクURL)を吐き出すだけのシンプルなウィジェットを作成。
あまり参考にならない感じ。

作る流れを先に大まかにいうと、、
DBに表示したい情報入れるよね。そして、
プラグインファイルはまとめて入れるフォルダあるから、適当に自分の作成するプラグイン用にその下にフォルダ作るよね。そして、
そのフォルダん中のどこかにWP_Widgetってクラスのサブクラス作るともうその中で実際の処理書くだけだよね。
簡単だ。簡単じゃないけど、私は。

〜いざ、作成〜

【テーブルを作ってデータを入れてみる】

テーブルレイアウト(構造)に関しては知識が無いので何か必要そうなカラムを作成。
id、リンクデータ入れるカラムの2個が最低あればOKなのかなあー
まぁそれに足してメモ、作成日、DeleteFlagなんかも入れておいた。

【実際にプログラムの中身を作ってみる】

  • ウィジェット作成用のフォルダを作る
    まずウィジェット作成するには決まったフォルダ内での作成が必要です。
    決まったとこに作るといろいろ勝手にして管理画面でウィジェットとして項目が出てくる。ふしぎ!
    /wp-content/plugins/内にフォルダを作成してその中にプログラムファイルを配置。
    今回はpluginsフォルダ内にmyfavoriteという名前でフォルダを作成。
  • さて、作るぞー!
    さっき作ったmyfavoriteフォルダにWP_Widgetのサブクラスファイルを作成。
    #WP_Widgetクラスファイルは/wp-includes/内にあった。
    クラス名は何でもOK。今回はMy_Widgetとします。ファイル名も何でもOK。今回はMy_Widget.phpにします
    ソース先頭にあるコメントは必須っぽーです。入れないと管理画面に出てこなかった。
    ソース中に出てくるコントロールてのは管理画面のウィジェット項目でサイドバーに該当ウィジェットを入れた時に出てくるオプション設定フォーム部分のこと

実際のソース前にメソッド解説

  • My_Widget():コンストラクタ。ウィジェットの情報を設定する
  • widget($args, $instance) :ウィジェットメイン処理。パラメータはウィジェット情報なんかが渡ってきてる。
  • update($new_instance, $old_instance):管理画面での設定した情報の実処理
  • form($instance):管理画面でのフォーム出力処理
<?php
/*
 Plugin Name: [widjet名]
 Plugin URI: [プラグイン配布先URL]
 Description: [説明文]
 Version: [バージョン]
 Author: [作成者]
 Author URI: [作成者URL]
 */
class My_Widget extends WP_Widget {
	/** コンストラクタ(基本情報の設定)*/
	function My_Widget() {
		//ウィジェットの情報設定
		$widget_ops  = array('classname' => 'myFavorite', 'description' => 'お気に入り');
		//コントロールの情報設定
		$control_ops = array('width' => 400, 'height' => 300);
		// 情報を設定
		$this->WP_Widget('MyFavoriteWidget', 'MyFavorite', $widget_ops, $control_ops);
	}

	/**
	 * メイン処理
	 * @param $args
	 * @param $instance
	 */
	function My_Widget($args, $instance) {
		// DB接続情報なんか入ってる。とにかくこれ宣言すればDBアクセスできる
		global $wpdb;

		// ランダムで1件リンクURLを取得してくるSQL作成
		$query = "SELECT〜ほにゃほにゃほにゃほにゃ〜LIMIT 1;";

		// ウィジェットの名前は$args内に格納されてるので表示
		//MyFavorite 、と表示
		echo '<h3>'.$args['widget_name'].'</h3>';

		//クエリ実行。そして表示。
		echo $wpdb->get_var($query);
	}

	/**
	 * 管理画面での設定情報の実処理
	 * @param $new_instance
	 * @param $old_instance
	 */
	function update($new_instance, $old_instance) {
		//今回使わなかった
	}

	/**
	 * 管理画面でのフォーム出力処理
	 * @param $instance
	 */
	function form($instance) {
		//今回使わなかった
	}

}

// 下二つのメソッドで作成ウィジェットを呼び出す

//MyWidgetInit関数
function MyWidgetInit() {
	//ウィジェットのクラス名を登録
	register_widget('My_Widget');
}
//widgets_initアクション時にMyWidgetInit関数を実行
add_action('widgets_init', 'MyWidgetInit');
?>

おまけメモ

/*$argsの中身*/
Array
(
    [name] =>
    [id] =>
    [before_widget] =>
    [after_widget] =>
    [before_title] =>
    [after_title] =>
    [widget_id] =>
    [widget_name] =>
)

そして…やった、終わった!
管理画面にてプラグインを有効化し、ウィジェット項目を見てみるとリストに作成したウィジェットがいつの間にか登場してます。

もうすこし詳しく調べて加筆&form辺りのなんか適当に実装、よてい

参考サイト(もの凄くありがとうございます!)
となりのソフト屋さん
WordPress ウィジェットAPI

Categories: wordpressウィジェット.

Comment Feed

No Responses (yet)



Some HTML is OK

or, reply to this post via trackback.