WordPress Plugin」タグアーカイブ

Head Cleaner (仮) で、なぜ速くなるのか?

WordPress Plugin には、WP-Cacheや、WordPress Super Cache と言った高速化を実現するためのプラグインが多数あります。
これらのプラグインは、本来は動的に生成している WordPress のコンテンツをサーバ上にキャッシュしておいて、サーバ負荷を減らし、クライアントからのリクエストに対して、素早く返答しようというモノです。
つまりは、サーバ側の処理(バックエンド)の高速化。

Head Cleaner (仮) は、これらのプラグインとは違い、クライアント側の処理(フロントエンド)を高速化しようと言うのが狙いです。
多分、今まで無かったタイプの高速化プラグインでは無いでしょうか?
この辺のフロントエンドの高速化の解説は、以下のエントリが詳しいです。

これらで、提案されている基本的な技法は

  • クライアント側のキャッシュを活用したり、無駄な HTTP リクエストを減らして、ネットワークボトムを解消しよう
  • ページレンダリングに関連するもの(CSS)は先に読み込ませ、関係ないもの(JavaScript)は後で読み込んで、見た目の表示を速くしよう

と言うことになります。

では、 Head Cleaner (仮) の高速化技法について、当サイトのトップページを例に検証してみましょう。
続きを読む

Head Cleaner (仮) – ここまでのまとめ

さて、先日から「Head Cleaner (仮)」を、夜半になると Twitter 上で公開しては修正、機能アップを繰り返してきたのですが、盛り込みたかった機能もかなり盛り込めたので、これより熟成期間に入ります。
で、熟成期間に入る前に今までの経緯をまとめておきます。
まずは、このプラグインの基本的な動作原理。

  1. WordPress のテーマテンプレート inex.php や single.php に <?php get_header(); ?> って記述があると思いますが、これが呼ばれた時に動作を開始します。
    この時は、まだ ob_start で、バッファ取得開始するだけ。
  2. header.php の <?php wp_head(); ?> が呼ばれた時点でバッファ取得を終了し、書き出された文字列を解析して整形します。

やってることは、これだけ。
まだまだ開発途上のプラグインですが、人柱になっていただいている方々、ありがとうございます m(_ _)m
不具合は色々と出てきましたが、私は元気です。

さて、では以降は今までの経緯のまとめ。
続きを読む

Head Cleaner (仮)

WordPress にプラグインをガンガンと突っ込んでいくと <head> 部に、JavaScript やら CSS やらが、ドンドン追加されて、カオスなことになってしまいます。
そんな状態の自サイトを「YSlow for Firebug」で診断してみると、とても低いスコアになったりしてガックリ来るわけです。
プラグインを外したりしたくなかったりするので、チマチマと修正したりして使っていたんですが、プラグインのバージョンアップのたびに修正するのも面倒です。

そんな折、「WordPress Head Cleaner」というプラグインを見かけました。
これは、ひょっとして <head> 部を自動でキレイにしてくれるのか?と期待してダウンロードしてみたんですが、ソースを見てガッカリ。
ついカッとなって、こんなプラグインを作ってしまいました。

ダウンロード

Head Cleaner@WordPress Plugins
または
Head Cleaner (最適化&高速化)@JSeries

[2/24 6:00 追記] コメント蘭での、ゆりこさんからの指摘により、 Safari では拡張子が .gz の css, JavaScript を認識できないことが判明。
多分 「.gz」の Content-Type が 「text/javascript」 or 「text/css」 になっていないからだと思われます。
Ver.0.3.2 以降で、Safari に対しては gzip 圧縮されたファイルを転送しないように修正しました。
なお IE, Firefox, Opera, Chrome では、問題無いようです。

[2/25 8:00 追記]Ver. 0.4.0 から CSS もすべて結合することができるようになりました。
# ただし、デフォルトでは OFF になっています。
CSS 内の画像ファイル等への相対パスはすべて絶対パスに置き換えます。
制限事項としては、media 属性を気にせずにすべて結合し、media="screen" にしてしまうため、想定外の表示になる可能性もあります。
この辺は、後々修正します。

[2/26 12:30 追記]Ver. 0.5.x から、CSS と JavaScript をそれぞれ CSSTidyjsmin-php で圧縮できるオプションを付けました。
また、コメント欄でのゆりこさんからの指摘により、ユーザエージェントに「AppleWebKit」を含むブラウザ(ただし chrome は除く)からのリクエストがあった場合は .gz ファイルを転送しないように修正しました。
あと、簡単な注意書きを書いた「readme_ja.txt」を同梱したので、読んでやってください。

[3/4 18:30 追記]正式版のリリース準備版を公開しました。
今まで、php ファイルを直接修正していた各種設定は、管理画面の「設定」>「Head Cleaner」から行えます。
また、競合が報告されているプラグインと、その対処法について「readme_ja.txt」に書いてあります。
そちらも、ご一読ください。

[3/5 23:00 追記]正式版リリースしました。
続きを読む

wp-kougabu 導入

「逆光は勝利」「世はなべて三分の一」「ピーカン不許可」「頭上の余白は敵だ」

と言うわけで、投稿やページにアップロードされた画像ファイルを抽出し、サムネイルで一覧表示する WordPress 用プラグイン wp-kougabu を導入しました。
このプラグインによるサムネイルの一覧表示は こちら

で、このプラグイン導入したページをページ分割しようと思ったんですが、私が使っているテーマ(ほぼ自作)はページ分割に対応していないことが判明。
慌てて、テンプレートタグ wp_link_pages() を追記したんですが、これが吐き出す (X)HTML が、気にくわない。
カレントページ番号に対して CSS でスタイル指定しづらいマークアップになってしまうので、ゴニョゴニョして何とかしました。
続きを読む

Twicon for WordPress

WordPress 2.5 以降では、コメント欄で Gravatar が簡単に利用できるようになった。
Gravatar とは、以下のようなもの。要するにコメント欄に表示する投稿者固有のアイコンだ。

Gravatarとは?

Gravatar(Globally Recognized Avatar)とは、広い範囲で利用できるアバター(化身)です。アバターまたはGravatarはアイコンであり、フォーラム、チャット、ウェブサイトのような仮想現実上のオンライン・コミュニティの中で、そのユーザーの身代わりとなって、他のユーザーと自分自身を区別できるようにします。

twittar っておもしろい気もするが、 - Masayanこの Gravatar の代わりに Twitter のアイコンを表示できるプラグイン 「Twitter Avatars In Comments WordPress Plugin」 についてMasayan さんが、Twitter でつぶやいたのを読んで、コレは!と思い色々試してみた。
が、仕様が気にくわない点が色々とあったので作り直し。
まったく別の WordPress プラグインが出来上がったので JSeries で公開します。

使用方法、ダウンロードは以下から。
WordPress Plugins/JSeries » Twicon for WordPress (アバター表示)
続きを読む

WordPress 2.7 で smilies 入りのコメントが承認待ちになる

yutaka さんが、ちょっと前から頻繁にコメントが承認待ちになると言っていたので、原因を調べてみました。
実はこの現象、私のサイトでも WordPress 2.7 にバージョンアップしてから、たびたび発生していました。
# おもに yutaka さんのコメント。

ちらっと WordPress のソースを眺めたところ wp-includes/comment.phpcheck_comment() 関数に問題があることがわかりました。
具体的には 😀 などのいわゆる smilies がコメント中に複数あると、必ず「承認待ち」になってしまいます。
# WordPress 2.7.1 以降のバージョンではこのバグは解決されたため、このプラグインは不要です。

で、どこが悪いかと言うと
続きを読む

wp-shot 0.4 alpha リリース

wp-shot で、定期チェックに使っている Pseudo-cron.php が WP 2.7 で正常に動作しないと言う報告があったので、wp-shot を wp-cron 対応にしたのですが、他にも色々手を加えたので、JSeries で公開することにしました。
wp-cron 対応にしたため WordPress 2.1 以降にのみ対応になってしまいましたが、WordPress 2.0.x では Pseudo-cron.php が正常に動作しているようなので、ヨシとしてください。
今回、手を入れたモノをそのまま眠らせておくのも、もったいないので JSeries リリースしましたが、元々の作者では無いため、細かい仕様や不具合を完全には把握して居ません。
PHP5 が利用できる環境の場合は、wp-shot の実質的な後継プラグイン「Ktai Entry」への移行をオススメします。

今回の仕様変更は以下のとおり。

  • wp-cron 対応 (これにより WordPress 2.1 以降が必須要件になります)
  • メディアライブラリ対応
  • 添付画像の回転保存対応
  • wp-content/plugins//wp-shot/wp-shot.php を直接叩いてもメール取得スクリプトが動作しないように修正
  • norida さんが提起されている「wp-mail 問題」への対応
  • WordPress 管理画面での各種設定値の一括削除

ダウンロードは、以下からお願いします。
WordPress Plugins/JSeries » wp-shot (メール投稿プラグイン)

続きを読む

wp-cron で定期実行

Twitter / みなみ: @wokamoto WP 2.7 にしたら、ついに ...みなみさんが WP 2.7 にしたら、wp-shot が動作しなくなったとのことなので、多少修正して WP 2.7 でも動作するようにしてみました。
どうやら wp-shot で、定期チェックに使っている Pseudo-cron.php が WP 2.7 では、正常に動作しないっぽい。
そんなわけで Pseudo-cron.php をバッサリ切り捨てて、WordPress 2.1 からある標準機能 wp-cron を使用することにしました。
ついでに、今までのバージョンだと http://example.com/wp-content/wp-plugins/wp-shot/wp-shot.php に直接アクセスすると、メールチェックが動作していたので、これも動作しないようにしました。
しかし、人のソースを読むのは勉強になるなぁ。

で、その際に wp-cron についてアレコレ試してみたので自分用にメモ。
続きを読む

Quick Comments 0.7.0 リリース

WordPress のコメント投稿後、リロードせずにコメント欄を更新するプラグイン Quick Comments の Ver.0.7.0 をリリースしました。
ダウンロードと詳細な使用方法は WordPress Plugins/JSeries » Quick Comments よりお願いします。

今回の変更点は以下のとおりです。

  • 処理を高速化させるために新規投稿時、および編集時にサーバから返すコメントを1件のみにしました。
    ただし wp.Vicuna を使用している場合のみ、全件を返します。
    (以前のバージョンでは、毎回すべてのコメントを返していた。)
    これにより、大量にコメントが付いているポストへの新規コメント投稿・コメント編集が高速になるはずです。
  • テーマ変更時に以下のテーマへの変更であれば、各種設定が自動的に変更されるよう修正しました。
    ※対応テーマ:default, classic, easyall, k2, wp.vicuna, sandbox, iNove
  • mg12さんが作成してくださった簡体中国語の言語パックを同梱しました。
    Quick Commentsの紹介もしてくれてるようですね。

Quick Comments も、そろそろ機能が固まってきたので、近い内に正式バージョン 1.0.0 にするかもしれません。
# しかし、当初よりもだいぶ大掛かりなプラグインになってきてしまったなぁ。

Simple Tweet

WordPress 2.7 にバージョンアップしたら、「WP Post to Twitter」のtwitterへの通知機能が動作しないと言っている人が居たので、新規投稿があったら Twitter にポストするだけのプラグイン「Simple Tweet」を作ってみました。
管理画面も何も無いそっけないプラグインですが、もしよろしければお使いください。
そのうち管理画面をつけて WordPress Plugins/JSeries でリリースするかもしれないし、このまま開発を止めるかもしれません。

# 特に仕様変更していませんが、管理を JSeries に移しました。

ダウンロード

WordPress Plugins/JSeries » Simple Tweet (Twitter ポスト)
続きを読む