‘wordpress’ カテゴリーのアーカイブ

2011.8.2 yaweb拍手 のアップデート(というか致命的なバグの修正……

切腹物の凡ミスが判明したので、バージョンが上がりました。
バグの報告者さんに土下座したい気持ちでいっぱいです、
本当に申し訳ありませんでした……。

以前のバージョンでは影も形もなかった解析画面がこれで表示されてくれる筈です。

http://trr.sakura.ne.jp/dat/yawp-webclap_0.1.1.zip

<懺悔>

バグの原因なんですけど、
リリース時にソースコード内のコメントを正規表現で掃除した際に、削ってはいけない部分が削れてしまったようです。
それに加えてリリース版でのテストを忘れていたようで……、はい、本当に申し訳ありませんでした。

細かい部分の修正含めて、近い内に ver0.2 を公開したい感じです。
出来ることならば、言語ファイル含めて wordpress の方で公開したいんですけど。

WordPress プラグイン “yaWeb拍手” « trial-run

2011.6.19 WordPress プラグイン “yaWeb拍手”

1. yaWeb拍手とは

yaWeb拍手(yet another WebClap for WordPress)は、web拍手を WordPress上に移植することを目的として作成された WordPressのプラグインです。web拍手については、web拍手公式サイトを参照して下さい。

yaWeb拍手では、web拍手のアカウントを用いることなく、WordPress上で拍手データを保持、ダッシュボードから解析結果を閲覧することが出来ます。イメージとしては、web拍手のスクリプト配布版をWordPress上に移植したものという表現がかなり近いです。

web拍手フォームとなるページの設定が、ややこしいことになっている為にインストール手順が若干煩雑になっていますが、作成者の技術力不足ということでご容赦下さい(;´∀`)

▼ ダウンロードする ▼

2. インストール手順

2.1. web拍手フォームの設定
WordPress のダッシュボードから”固定ページ”を”新規追加”。
本文の末尾にショートコード [webclap] を記述することで、コメントフォームが生成されると共に新規追加したページが web拍手送信後のページに相当する機能を持ちます。

2.2. web拍手ボタンの設定
WordPress のダッシュボードのサイドバーの項目”ウィジェット”から、”利用出来るウィジェット”の中に表示される”web拍手”をドラッグアンドドロップでサイドバーに追加して下さい。
ウィジェットの設定項目は以下のとおりです。
  • ウィジェットのタイトル
  • web拍手ボタンのリンク先(=手順1. で作成した”固定ページ”のパス)
  • 画像(ウェブ拍手ボタンに画像を使いたい場合は、パスを指定)
  • テキスト(画像を用いない場合は、テキストリンクとして表示されます)
フォームおよびボタンが設定されることで web拍手は動作します。

2.3. 解析画面について
WordPressのダッシュボードのサイドバーの項目”ダッシュボード”下に、”yaWeb拍手”の項目が表示されます。
解析画面では、
  • 今日の拍手履歴(時間毎)
  • 昨日の拍手履歴(時間毎、1日前〜14日前まで閲覧可)
  • 今月の拍手履歴(日付毎、今月〜1年前まで閲覧可)
  • 拍手コメントログ
を、閲覧することが出来ます。

2.4. web拍手フォームのカスタマイズ
“固定ページ”として”新規追加”されたweb拍手フォームは、そのままでは WordPress の規定のテンプレートを使用してページが作成されます。
WordPress 規定のテンプレートを使いたくない場合については、少々面倒ですが、プラグインに同梱されている “webclap.php” を現在使用している WordPress のテーマのディレクトリにコピーし、web拍手フォームの固定ページのテンプレートを “webclap” に変更することで、web拍手フォームの外観をシンプルに変更することが出来ます。

3. その他

web拍手ボタンの設置についてはウィジェットを使う以外にも、関数 webclap_button($url, $text, $image) および、ショートコード [webclap_button url=”” image=”” text=””] を使う方法も用意されています。既存のウィジェットでは味気ない場合は、Executable PHP widget と連携してみるとよいかもしれません。

一般的な web拍手と同様に、拍手の限度回数は 10回までとなっていますが、ワリと作りは甘いです(;´∀`)

4. 既知の問題点

  • WordPress の時間関係の関数(date()とかtime()とかgmdate()とかdate_i18n()とか)が不可解なので、時計関係は若干あやしいかもしれない(;´∀`)

5. 更新履歴

ver 0.2
多言語化に対応
ver 0.1.1
(あらゆる環境で)解析画面が表示されないバグを修正しました、死にたい……
ver 0.1
リリース、α版です。たぶん大丈夫だと思いますが、変なバグが残ってるとは思う(;´∀`)


6. 免責事項とダウンロード

自分の環境ではテストを行った上で動作していますが、使用については自己責任でお願いします。このプラグインの導入による不具合に付いては一切の責任を負うことが出来ません。
動作環境は FireFox 3.x WordPress 3.x で確認。Wordpress 2,9、Safari、Internet Explorer 8、とかでも一応動作確認は済。

ダウンロードページへ(wordpress.org > extend > plugins > Yet Another WebClap for WordPress)

7. スクリーンショットとか

web拍手フォームの設定
yaweb_01
ウィジェット(web拍手ボタン)の設定
yaweb_02 web拍手 解析画面
yaweb_03

2011.6.10 (続々)久々に WordPress と格闘する

先日の段階でも自分が要求している機能はほぼ実装出来ていたんですが、
どうせなんでログを遡る機能を追加してました

まぁくそめんどくさいんですが、
鉄は熱いうちに叩いておかないと永久にお蔵入りしてしまうので(;´∀`)

機能としては、

  • 昨日の拍手履歴から、過去2週間の毎時の拍手履歴を参照できる
  • 今月の拍手履歴から、過去12ヶ月間の日毎の拍手履歴を参照できる
  • 拍手コメントのログについて、20コメントずつ過去全てのコメントを閲覧できる
って感じで実装していきます。

実装の指針としては、
1.Ajax、2. urlの引数、3. $_POST変数、と。
Ajax で実装するのが一番いんだろうなー、と思いつつも
php での実装の2度手間になるしデータベース関連めんどくさそうだしー、と却下(;´∀`)
$_POST変数だとフォーム必須で、テキストっぽいリンクを貼るのがめんどくさいので却下、
ってことでまぁ普通に url に引数渡してます

そして困ったのが、
ダッシュボードのサブメニューなんでurlというかパスが安定しないところ
まぁなんかスマートな方法はあるんでしょうけど、如何せん php も wp も素人なんで、
str_replace( ‘%7E’, ‘~’, $_SERVER[‘REQUEST_URI’]) で url 抜いてきて& 以下を抹消するという力技で対応

あんまりロバストなやり方ではないけど、
まぁ WordPress のバージョンが多少上がっても対応は出来そうなので(;´∀`)

拍手の履歴については、過去2週間、過去1年間、
それぞれ遡れれば十分だと思ったんで、取り敢えずそこは静的にコーディング

ただ、コメントについては流石に全件アクセス出来ないと問題なのでちゃんと作ることにする、
も、三項演算子を駆使して可読性皆無なコードが生み出されていくことに

要は、アップローダとかにありがちな
<< ... [21] [22] [23] [24] [25] ... >>
みたいなのを実装したいんですけど、考えなしにやったらひどいことに

よくよく考えてみると、定義すべきは ↑ だと [21] のところ、すなわち開始地点で
表示している箇所から求められる開始地点が、始点([0])と末尾について条件を満たすのか、
ってところを考えると上手くいくんですね、うnうn

ひととーり、必要そうな機能の実装は粗方終わったっぽいんで、
しばらくは微調整ですね、いやー疲れた疲れた(;´∀`)

web拍手

2011.6.9 (続)久々に wordpress と格闘する

いきなり結論から入ると
結局のところ、自作のweb拍手α版をプラグインにして組み込みました

必要そうな機能(関数)を大別すると、

  • プラグインの起動時に、データベースのテーブルを生成する関数
  • web拍手のボタンを生成する関数 or ショートコード
  • web拍手の画面(ページ)を生成する関数
  • web拍手の結果(アクセスログ、コメント)をデータベースに投げる関数
  • 解析結果をダッシュボードに表示する関数、とフック
  • データベースからアクセスログやコメントログを取得する関数
  • 解析結果からグラフを生成する関数(24時間、月間とか)
ぐらいがあれば良さそうです。

データベース関連は WordPress のレファレンスやら、
そもそも Counterize ii に大体おんなじ機能のサンプルコードがあるんで、
改変しつつ流用させて貰ってます。

で、今回にネックになったのが web拍手 の専用ページの作成。
プラグインのディレクトリ内に webclap.php でも作ればいいじゃん、とか思ってたんですが
よくよく考えてみれば当然、独立してページ内で WordPress の関数群が使えるはずもなく……

幾つか強引に解決する手段はあると思うんですけど(;´∀`)
今回の解決作としては、

  • 固定ページ「web拍手」を作成、テキストボックスとweb拍手処理をショートコードの形で埋め込み
  • 固定ページのテンプレート「webclap.php」をテーマ内に作成、色々と誤魔化す
という形で力技してます(;´∀`)

任意のurlのページを WordPress に追加することも出来なくもないらしいのですが、
固定ページで「web拍手」を持つことでのカスタマイズの簡易さもあるんで、
まぁ悪くない落とし所かなぁ、というところ

解析画面は↓のような感じ、手作り感あふれる(;´∀`)
過去ログの表示とかは未実装なんで、簡単に出来そうであれば作る予定

まぁ最大の問題はわざわざプラグイン化するほど拍手が来ないというね……

web拍手解析

2011.6.8 久々に wordpress と格闘する

どもども、久々にコーディングなんぞをやっていたワケですが

事の発端は、web拍手が wordpress から分離してて不便だなー、ってところでして、
wp_webclapという便利っぽいプラグインがあったので
インスコしてみようとすると……、久々に拝む 500 error

重い腰を上げて原因をたどってみると、
wp-webclap-0.0.5/Wp/WebClap/data.php の174行目

    function initializePluginData()
    {
        // プラグインデータの初期化
        if (get_option('webclap_initialised') != '1') {
            update_option("webclap_claptype", '0');
            update_option('webclap_account', '');
//            update_option('webclap_default', $this->__('web clap button'));
            update_option('webclap_enabled', '1');
            update_option('webclap_viewtype', WP_WEBCLAP_CONF_VIEW_NORMAL);
            update_option('webclap_viewformat', WP_WEBCLAP_CONF_OUT_NORMAL);
            update_option('webclap_initialised', '1');
        }
    }

update_option の2つ目の引数である、$this->__(‘web clap button’) が原因っぽい感じ。
あー翻訳ファイル関係だっけー、と考えつつめんどくさいので

update_option('webclap_default', 'web拍手ボタン');

とハードコーディングしてみたら動く、まぁ当然か
も、微妙に想像していたのとプラグインの機能が違って振り出しに戻る……

そんな感じで、ついでに記事を書いていると Google Syntax Hilighter が動かない(‘A`)
取り敢えずプラグインをつけたり消したりをしていると、
Executable PHP widget を外すと Google Syntax Hilighter が動く

?と思って、ウィジェットまわりを弄っているとカウンターが癌になってるとらしい、
あるぇ〜、と色々やっているとカウンターが正常に動かなくなる(;´∀`)
エラってる箇所を再確認してみると counterize ii の関数が動作ってない模様、
嫌な予感がしつつ確認してみると一昨日ぐらいに counterize ii を無意識にアップデートしてたっぽい。

counterize ii を使う際の常套とは言え、本来実装されてない関数を勝手に追加してたり、とかだったんで
更新の際にまるっと関数が消失してエラってたらしい、初歩的やん……

結論:「個人サイトであっても考えなしに更新を適応しない」