function.phpに必要なコードを追記することで独自のウィジェットを作成することができる。
プラグインとおなじようにプラグインファイルとして登録することも可能。
ここでは、プラグイン形式で作成する。
細かい実装までは書いてないのでここからそれぞれカスタムする感じで。
/plugins/hoge-widget/hoge-widget.php
を作成。[/plugins/hoge-widget/hoge-widget.php]
<?php
/*
Plugin Name: My Widget
Plugin URI: http://wordpress.org/extend/plugins/#
Description: This is an example plugin
Author: Your Name
Version: 1.0
Author URI: http://example.com/
*/
WP_Widget
を継承したクラスを作成する。WP_Widget_Hoge
とするのがセオリーぽい。[/plugins/hoge-widget/hoge-widget.php]
class WP_Widget_HpWidget extends WP_Widget {
function __construct() {
$widget_ops = array(
'classname' => 'hp_widget',
'description' => 'Test widget.',
);
parent::__construct('fuga', 'hoge', $widget_ops);
}
// ︙
}
[example]
function form($instance) {
var_dump($instance);
// something
}
function update($new_instance, $old_instance) {
$instance = $old_instance;
// something
return $instance;
}
function widget($args, $instance) {
if (!is_user_logged_in()) return;
extract($args);
$title = apply_filters('widget_title', empty($instance['title']) ? 'hoge' : $instance['title']);
echo $before_widget;
if ($title) {
echo $before_title . $title . $after_title;
}
echo $after_widget;
}
クラス外で実行。
add_action('widgets_init', function(){
register_widget("WP_Widget_HpWidget");
});
sidebar.php
を作成。[function.php]
if (function_exists('register_sidebar')) {
register_sidebar();
}
[sidebar.php]
<ul>
<?php if (!function_exists('dynamic_sidebar') || !dynamic_sidebar()): ?>
hoge
<?php endif; ?>
</ul>
最後までお読みいただき、ありがとうございました。
ご意見などありましたら@hippohackへDMをお願いいたします。