美人時計プラグインの詳細説明
このプラグインを作成するにあたり、既存プラグインのソースを参考に、またネット上に多数存在する 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', ), ), );