公式キャラクター「わぷー」を表示するウィジェット
-
公式キャラクター「わぷー」を表示するウィジェットを追加するプラグインを「Plugin Directory」で公開しました。
-
こういうウィジェットが出てくることはいいですね。
でも、名前は単純に「Wapuu Widget」でよかったと思います。正直に言うと、WordPress プラグインの名前を「wp-なんちゃら」にするのは、特別な理由がない限り避けるべきです。
※「特別な理由」とは、他のプラグインより読み込み順を後ろにしたい、他の CMS でも同名のプラグインをリリースしていて WordPress 用と区別したい等。
IKEDA Yuriko さん
ご教示、有難うございます。
プラグインを作り始めて間もない初心者ですので、今後も、ご指導頂けましたら助かります。プラグインを作り始めて間もない初心者ですので、今後も、ご指導頂けましたら助かります。
プラグインは初めてでしたか。ではコードレビューしてみます。優先度の高い順に指摘しています。
(1) わぷーを表示する img 要素に alt 属性がありません。これは HTML 違反です。94行目または106行目に
echo 'alt=' . esc_attr__('Wapuu', 'wapuu_widget') . '"';
とかのコードを入れましょう。(2) 91行目
$wapuu_target
を href 属性に入れるときesc_url()
していないので、URL に"
などの文字が入った場合に出力 HTML が壊れます。(3) プラグインを格納するディレクトリー名を “wp-wapuu-widget” で決め打ちしていますが、
basename(__FILE__)
もしくは plugin_basename(__FILE__)` などで取得しましょう。ユーザーが「wp-wapuu-widget-03」とか変更したときに動かなくなります。(4) すでに画像が存在するサイズの場合、
imagecreatetruecolor()
を呼ばずに画像ファイルを直で出し方がいいと思います。また、既存のサイズがない場合も、ウィジェット設定画面を閉じたタイミングで画像を生成して、表示時はそのキャッシュを出すようにした方がいいと思います。毎回 GD で画像を作るのは非効率です。(5) GD の関数は実行する度にエラーチェックをしましょう。現状、エラーチェックが全くありません。
(6) update() メソッドでウィジェット設定画面の値を検証した方がよいです ($wapuu_size は整数かどうか etc)。
(7) プラグイン標準ヘッダーの Domain Path は末尾のスラッシュが不要です。
(8) 言語ファイルは languages というディレクトリーにするのが作法です。
以上、時間があれば直してみてください。
IKEDA Yuriko さん
有難う御座います。
恐縮です。初めてのプラグインといわけではなく、公開しているものだけでこれで4つ目なのですが、PHPの基礎も分からないまま今年の4月頃から作り始め、未だに流儀が分かっていない部分があります。
大変参考になりましたが、1箇所分からない部分が御座います。
お手数ですが、ご教示頂けましたら幸いです。(4) すでに画像が存在するサイズの場合、imagecreatetruecolor() を呼ばずに画像ファイルを直で出し方がいいと思います。また、既存のサイズがない場合も、ウィジェット設定画面を閉じたタイミングで画像を生成して、表示時はそのキャッシュを出すようにした方がいいと思います。毎回 GD で画像を作るのは非効率です。
57行目の
if (function_exists('imagecreatetruecolor') && !file_exists(WP_PLUGIN_DIR."/wp-wapuu-widget/wapuu_".$wapuu_size.".png")) {
という条件分岐で、ファイルが存在する場合は、GDを使った処理が実行されないようにしておりますが、これでは問題があるのでしょうか?
宜しくお願い致します。
初めてのプラグインといわけではなく、公開しているものだけでこれで4つ目なのですが、PHPの基礎も分からないまま今年の4月頃から作り始め、未だに流儀が分かっていない部分があります。
すでに3つあるんですね! 最初は荒削りでいいと思いますので、ちょっとずつブラッシュアップしていくことを期待します。
という条件分岐で、ファイルが存在する場合は、GDを使った処理が実行されないようにしておりますが、これでは問題があるのでしょうか?
あ、
function_exists()
を見逃していました。でも、GD 関数すべてでエラーチェックしてないので
imagepng()
で画像ファイルの生成に失敗してもそのまま先に進んでしまうわけで、これはよくありません。プラグインのインストールの仕方にもよりますが、wp-wapuu-widiget ディレクトリーに書き込み権限がないことがあり、その場合は「表示のたびに毎回」生成に失敗して GD の実行を試すことになります (サーバーの負荷がすごいことになる)。
これが、ウィジェット設定画面を閉じたときに生成するタイミングですと、生成失敗するとしてもその回数が圧倒的に少ないため、安全です。96行目の
function_exists('imagecreatetruecolor')
も不要で、単純に'wapuu_'.$wapuu_size.'.png"
ファイルの存在を確認すればいいはずです。IKEDA Yuriko さん
有難うございます。
ウィジェット設定画面を閉じたときに生成するタイミングですと、生成失敗するとしてもその回数が圧倒的に少ないため、安全です。
了解です。
GDでの処理のタイミングを変えるようにします。表示時はそのキャッシュを出すようにした方がいいと思います。毎回 GD で画像を作るのは非効率です。
の部分は、GDについての理解が不十分ですので、今すぐ書けそうにありませんが、他の指摘頂いた箇所については、すぐにでも直せそうです。
皆さんへ
次のリリースは、バージョン0.4を予定していますが、順次修正をプラグインディレクトリの「Development Version」に反映してゆきますので、そちらをお使い下さい。
「WP Wapuu Widget バージョン0.4」をリリースしましたので、古いバージョンをお使いの方はアップデートして下さい。
- トピック「公式キャラクター「わぷー」を表示するウィジェット」には新たに返信することはできません。