美人時計プラグインの詳細説明
このプラグインを作成するにあたり、既存プラグインのソースを参考に、またネット上に多数存在する WordPress の「プラグインの作り方」を参考にしました。言語ファイル(説明文に相当する)とスタイルファイルのディレクトリの位置については、解凍したソースをご覧ください。この位置構成は既存プラグインを参考に、同様の配置になっています。
- function plugin_bijinclock_widget() {} 部分が、ウィジェットとして登録されます。
- if (class_exists('AdminPanelAction')){ 以降は、デフォルトとして"tokyo"を設定値に保存し、内部変数を用意して入力(クリック)」された変更値を保存(かつ、確認)している部分です。
- 冒頭のコメント行については必須であって、WordPress の入門説明を参考にすれば意味が分かります。

ソースの全体
plugin.bijinclock.php
<?php
/*
Plugin Name: Bijin Clock
Version: 1.0
Plugin URI: http://flatpress.info/
Type: Widget
Description: "Bigin" clock FYI: http://www.bijint.com/en/
Author: Flatpress.info
Author URI: http://flatpress.info
*/
function plugin_bijinclock_widget() {
$lang = lang_load('plugin:bijinclock');
$widget = array();
$widget['subject'] = $lang['plugin']['bijinclock']['subject'];
include 'drawbijinclock.php';
$h=plugin_geturl('bijinclock').'res/css/bijinclock.css';
echo '<link rel="stylesheet" type="text/css" href="'.$h."\" />\n";
return $widget;
}
register_widget('bijinclock', 'bijinclock', 'plugin_bijinclock_widget');
if (class_exists('AdminPanelAction')){
class admin_plugin_bijinclock extends AdminPanelAction {
function setup() {
$this->smarty->assign('admin_resource', "plugin:bijinclock/admin.plugin.bijinclock");
$bc_config = plugin_getoptions('bijinclock');
if(!$bc_config['localtime']) {
$localtime = "tokyo";
plugin_addoption('bijinclock', 'localtime', $localtime);
plugin_saveoptions('bijinclock');
}
}
function main() {
$bc_config = plugin_getoptions('bijinclock');
$this->smarty->assign('bc_config', $bc_config);
}
function onsubmit() {
if ($_POST['bc-localtime']){
$localtime = $_POST['bc-localtime'];
plugin_addoption('bijinclock', 'localtime', $localtime);
plugin_saveoptions('bijinclock');
$this->smarty->assign('success', 1);
} else {
$this->smarty->assign('success', -1);
}
return 2;
}
}
admin_addpanelaction('plugin', 'bijinclock', true);
}
?>
描画ルーチン
drawbijinclock.php
「美人時計」の描画ルーチンは、同オリジナルサイトで指示される内容をコピーしたに過ぎません。ただ、「ローカル時計」の選択設定については、fp-content/config/settings.conf.php に保存しておいた値を利用しています。
<?php
global $fp_config;
$widget['content'] = '
<div id="bijin_clock">
<div class="bijin_blog_part" data-width="180" data-bcid="' .
$fp_config['plugins']['bijinclock']['localtime']
. '"></div>
<script type="text/javascript">
(function(d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) return;
js = d.createElement(s);
js.id = id;
js.async = true;
js.src = "http://blogparts.bijint.com/blogparts/js/script.js";
fjs.parentNode.insertBefore(js, fjs);
}
(document, "script", "bijint-widget"));
</script>
</div>';
?>
スタイルファイル
スタイルファイルは、表示される「美人時計」の位置合わせのために用意しました。ご存じのように FireBug(Firefox)を利用するのが便利なところですね。
bijinclock.css
#column #bijin_clock {
height: 260px;
margin: 0px;
}
#column #bijin_clock p, #column #bijin_clock div {
margin: 0px;
}
#column #widget-bijinclock {
margin-top: 0px;
}
#widget-bijinclock h4 {
display:none;
}
言語ファイル(説明文)
lang.ja-jp.php
言語ファイルの設定値において、「ローカル時計」の選択の説明をしています。また、プラグインの表示名もここで設定しています。
<?php
$lang['admin']['plugin']['bijinclock'] = array(
'discription' => 'ローカル美人時計',
'area' => '
2011全国(2011jp)<br>
北海道(hokkaido)<br>
青森(aomori)<br>
岩手(iwate)<br>
宮城(sendai)<br>
秋田(akita)<br>
茨城(ibaraki)<br>
栃木(tochigi)<br>
群馬(gunma)<br>
埼玉(saitama)<br>
千葉(chiba)<br>
東京(tokyo)<br>
神奈川(kanagawa)<br>
新潟(niigata)<br>
金沢(kanazawa)<br>
福井(fukui)<br>
長野(nagano)<br>
静岡(shizuoka)<br>
愛知(nagoya)<br>
京都(kyoto)<br>
大阪(osaka)<br>
神戸(kobe)<br>
奈良(nara)<br>
岡山(okayama)<br>
広島(hiroshima)<br>
山口(yamaguchi)<br>
香川(kagawa)<br>
福岡(fukuoka)<br>
佐賀(saga)<br>
長崎(nagasaki)<br>
熊本(kumamoto)<br>
鹿児島(kagoshima)<br>
沖縄(okinawa)<br>
Thai(thailand)<br>
テレビ朝日(tv-asahi)<br>
美魔女(bimajo)<br>
サーキット(cc)<br>
花嫁(hanayome)<br>
キッズ(kids)<br>',
'submit' => 'Save',
'msgs' => array(
1 => 'successful saved.',
-1 => 'not saved.'
)
);
$lang['plugin']['bijinclock'] = array(
'subject' => 'Bijin Clock',
);
?>
コンフィグレーションの様子
fp-content/config/settings.conf.php
設定値の保存はこのファイルに書き込まれます。以下に関係する部分を提示しましたが、
global $fp_config;
$fp_config['plugins']['bijinclock']['localtime']
として設定された内容を参照できます。
),
'bbcode' =>
array (
'escape-html' => true,
'comments' => false,
'editor' => true,
'url-maxlen' => 40,
),
'bijinclock' =>
array (
'localtime' => 'thailand',
),
),
);





