タグ : plugin

WP-Rakuten-Link

楽天が提供しているAPIを使用し、エントリ内に指定した楽天市場、楽天ブックスの商品紹介を挿入するプラグインです。

プラグインのインストール後、投稿画面に商品の検索を行うダイアログが追加されますので、そこから商品の検索などを行うことが出来るようになっています。

Error: NotFound

楽天ブックスの書籍も対応しています。

Error: NotFound

ダウンロード : WP Rakuten Link 0.6.1

使用手順

  1. まずは楽天デベロッパーIDを入手してください。これがないことにははじまりません。
  2. ダウンロードしたファイルを解凍し、/wp-content/plugins/ にフォルダごと転送してください。
  3. /wp-rakuten-link/cache フォルダの属性を変更(chmod)。書き込みできるようにしてください。707 とかそんな感じ。
  4. WordPress 管理画面からプラグインを有効化してください。
  5. 管理画面の設定メニューにある「WP Rakuten Link」から、楽天デベロッパーID を入力してください。そのほかの設定もここからどうぞ。
    アフィリエイトID は入力しなくても動作しますが、この場合には作者のIDが利用されます。
  6. 投稿画面中に「楽天市場 商品検索」メニューが表示されるかどうかを確認してください。
  7. 検索フォームにキーワードを入れて、検索を押すことで結果が表示されます。楽天市場、楽天ブックスの商品を検索、表示することができます。
  8. [挿入] リンクをクリックすると、文中にコードが挿入されます。
  9. 投稿を保存すれば、該当箇所にテンプレート設定どおりに商品紹介が挿入されます。

機能について

  • 携帯端末で表示された場合、商品購入のリンク先が楽天の携帯サイトになります。
  • 設定画面上から、表示テンプレートを自由に変更することができます。設定画面で空欄にした場合、デフォルトテンプレートが読み込まれます。
  • cache フォルダ上には、取得したデータをキャッシュとして 24 時間保持します。キャッシュファイルが作成されてから、24 時間過ぎるともう一度データを取得しにいきます。
  • 別にそんなすごい独自機能なんてないよ。

必須環境

  • PHP 5.x 以上。バージョンが 4.x の場合には動作しません。
  • WordPress 2.8 以上

注意事項

  • cache フォルダ内には、.htaccess を設置するようにしてください。旧バージョンの方は、新しいバージョンのものに含まれていますので、それを転送するのを忘れないようにしてください。
  • バージョンアップ後は、キャッシュを一度削除するようにしてください。
  • WordPress の Plugin Directory には登録されていませんから、自動アップデート通知がありません。たまに見てもらったほうがいいかも。
  • プラグインの利用にあたっては、楽天ウェブサービスのサイト上にある利用規約を遵守 してください。

免責事項

  • 制作者は本プラグインの使用によって生じた、利用者の如何なる損害に対しても一切の責任を負わないものとします。

更新履歴

  • 2009/04/29 0.1 : こさえた。
  • 2009/05/08 0.2 : なおした。
  • 2009/12/20 0.3 : Shortcode API を使用するように変更。
  • 2009/12/23 0.4 : 商品検索時にカテゴリを選択できるように変更。
  • 2010/01/05 0.5 :
    商品表示に jQuery を使用するのを止めた。なんでこんなことをしていたんだろう。
    キャッシュのデータを XML で保持するように変更。
    商品表示をテンプレートで指定できるように変更。
  • 2010/07/10 0.6 :
    かなりなおした。
    楽天ブックスに対応してみた。
    キャッシュファイルを設定画面から削除できるようにしてみた。
    携帯端末の場合には、携帯サイトに飛ぶようにしてみた。iPhone しかないので確認できないという。
  • 2010/07/10 0.6.1 :
    「あす楽」「キャッチコピー」を新しくテンプレート上で指定できるように。
    表示、検索に使用していたAPIバージョンを「2010-06-30」に変更。
    IMG タグが適切に閉じられていなかった不具合を修正。

WP-Rakuten-Link 0.5 をリリース

WP-Rakuten-Link 0.5 をリリースしました。1.0 になる日はやってくるのでしょうか。

さて、今回のバージョンでは変更点が多くあります。スタイルシートも忘れずに更新しておいてください。

特にキャッシュファイルはフォーマットから変更されていますので、拡張子が DAT となっている旧バージョンのものはすべて使用できません。削除しちゃってください。

大きく変わった点として、商品表示のレイアウトを設定画面上から行うことができるようになりました。

Rakuten Link 0.5

設定画面のアイテム表示テンプレート内に「#ItemName#」などのタグを仕込めば、該当部分が「商品名」に置き換わって表示されます。テンプレートによっては価格を表示しないことや、データ更新日を含めないようにもできますが、設定の結果として楽天ウェブサービスの使用規約に反する可能性がありますのでご注意ください。

画像中のテンプレートが、ぼくのサイトで使用しているものです。見ていただければ何となくお分かりいただけるんじゃないでしょうか。

テンプレートの変更については、テキストエリアの下部にボタンを設けてあり、ボタンを押せばテキストエリア内にタグが挿入されます。Title 要素には簡単な説明を含めていますので、「なんだこれ?」というものにはボタンにマウスのカーソルを合わせてみてください。

テンプレートを空白にしたまま保存した場合には、これまでと同じテンプレートが読み込まれます。「なんのことかよくわからん!」場合にはそのままでも構いません。ただ、オプションの形式が一部追加・変更されている箇所がありますので、プラグインの更新後には必ず設定画面を開き、保存するようにしてください。

変更点としては以下の通りです。

  • 商品の表示に jQuery を使用しないようにした。
    問題があったとかの報告はありませんでしたが、携帯からでは読めなかったりするので。そもそもなんで jQuery で表示させていたんだろう?
  • 商品の表示部分をテンプレートで個別設定できるように変更した。
  • キャッシュのデータを XML のまま保持するようにした。(キャッシュからはデベロッパーズID 部分はマスクされます)
  • 楽天のクレジット表示を画像ではなく、文字ベースのものにした。
    他のものに変更したい場合は、rakuten-link.php の 222-224 行目を編集してください。
  • 楽天のクレジットを表示を選択画面上で選択できるようにした。
    楽天ウェブサービスの利用規約を確認のうえ、これを遵守してください。仮に ID が停止されるなどの措置を受けたとしても、当方は一切責任を持ちません。
  • 同ページ内に同一のアイテムを複数表示しようとしても表示されない不具合を修正した。
  • 細かい部分を色々と修正したりした。

WP-Rakuten-Link

そういえば、WP Super Cache なんかを使用している場合にはどうなるんだろう。都度、結果を生成して出力はしてくれませんよね。HTML で持ってた気がする。この場合は「データ更新日」と「注意文」を必ず入れておくようにしないと規約に反しますね。24 時間内に必ずキャッシュを作り直すならいいんですけど。

あ、「にゆうふの初期テンプレートがダサすぎるから、これを使え!」というのがあれば是非教えてください。ご意見やご要望についても随時。不具合の報告などもあればお願いします。

Error: NotFound

明太子食べたいなあ。

Error: NotFound

wp-rakuten-link を更新

以前に作ったまま、割と放置していた WordPress に楽天の商品を紹介する「WP Rakuten Link」を久しぶりに更新してみました。

更新したはいいものの、プラグインのバージョンアップリストには掲載されないので、たぶんすっかり忘れ去られているんじゃないでしょうか(どうやったら通知できるんだろう)。

今回は不具合の修正がメインですが、久しぶりに見てみたら検索でカテゴリ指定すらできないクソな作りになっていたので、カテゴリを指定して検索できるようにしました。このカテゴリを出力するのにも、楽天の API を使用していますので、まずは楽天デベロッパーズ ID の入力を設定画面から行うようにしておいてください。記事作成、編集画面を開いた時点で、API 経由でカテゴリのデータを取得しています。

見た目で変わっているのはここだけですので、詳しい設定の方法などはこちらを参照してください。

WP-Rakuten-Link

とりあえず、Firefox 3.5.6 と IE8 での動作確認は行っています。Google Chrome でも問題ないでしょう。WordPress は 2.9 で確認していますが、2.7 とか 2.8 でもたぶん大丈夫です。今後、手を加えるとしたら携帯端末からも見られるようにするだとか、商品表示系になるんじゃないかと思います。ご要望とかありましたら、お気軽にどうぞ。

そういえばFirefox のシェアが一位になったとかニュースで発表されていましたが、最近は Chrome の勢いが凄いですね。個人的には、Ctrl+W の連打でブラウザが終了してしまうのが気に入らないのですが、対策方法があったりするんでしょうか。

ああ、新しいナビが欲しいなあ。Air Navi にはもううんざり。

WP-DBManager 2.50 でエラーが発生してしまう

WordPress のデータベースバックアップや最適化を自動で行ってくれるナイスなプラグイン、「WP-DBManager」が 2.50 にアップデートされました。

が、アップデート後にはプラグイン管理画面や、WP-DBManager のオプション画面上で以下のようなエラーが表示されてしまうようです。

Your backup folder MIGHT be visible to the public

To correct this issue, move the .htaccess file from wp-content/plugins/wp-dbmanager to [Path To Backup]

[Path To Backup] 部分は WP-DBManager の DB Options から設定できる、データベースのバックアップデータの保存するディレクトリが表示されているかと思います。

エラーメッセージが表示されている状態でも、特に問題なくバックアップは行えるようなのですが、かといってエラく目立つメッセージを放置しておくのも気持ち悪いものです。

このエラーは Path To Backup で設定してあるディレクトリに、以下の内容の .htaccess をアップロードすることで回避することができます。

<files ~ ".*\..*">
order allow,deny
deny from all
</files>

楽天市場の商品を検索表示させるプラグイン

こんにちは、こんにちは!

色々とありましたが、にゆうふはまだ生きていますし、レウさんもバリバリ元気です!

別に何もしていなかったわけではなくて、レウさんを連れて色々な場所にお出かけしたりはしていたのですが、さぼって止ん事無き事情でブログは更新しておりませんでした。ええと、もう四ヶ月近く経っているわけですか。ははあ。ぼくが一番驚いていると思います。

まったく更新していなかった期間も、たまにメールでブログの内容について問い合わせ的なものがあったりしたので、「ああ、見てくれている人はいるんだなあ」としみじみ思ったりもしましたが、今後は定期的に何かしらのエントリーをしていくことはできるんじゃないかなーと思います。少なくとも期間中に取り溜めた写真をもとに色々と書きたいこともありますのでご期待ください。

さて、ここまでの話をブッツリと切ってしまいます。

以前から WordPress のプラグインで楽天市場を検索したりするものが欲しかったのですが、どうにも見つけられませんでした。ないのかなあ。拙作の注目させたい記事を表示させるだけのプラグイン「My Favorite Posts」の紹介記事にも、それっぽいコメントを頂いておりましたし。

無いなら勉強がてら作れるかどうかやってみようかなと調べ始めたところ、楽天がきちんと API を提供してくれていることが判明したので、さっそく暇を見つけて作ってみました。

こんな感じで表示されます



検索画面はこんな感じで

検索画面

WP-Rakuten-Link

使用手順

  1. /wp-content/plugins/ にフォルダごと転送してください。
  2. /wp-rakuten-link/cache フォルダの属性を変更(chmod)。書き込みできるようにしてください。CORESERVER では 707 で確認しています。
  3. WordPress 管理画面からプラグインを有効化。
  4. 管理画面の設定メニューにある「Wp Rakuten Link」から、楽天デベロッパーID の入力が必須です。アフィリエイトID は入力しなくても動作しますが、この場合には作者のIDが利用されます。
  5. 投稿画面中に「楽天市場 商品検索」メニューが表示されるかどうかを確認してください。
  6. 検索フォームにキーワードを入れて、検索を押すことで結果が表示されます。
  7. [挿入] リンクをクリックすると、HTML エディタ状態の場合に限り(リッチエディタに送る方法が分からなかった……)、文中にコードが挿入されます。
    リッチエディタを使用している場合には、[挿入] を押すと表示される商品コードを表示させたい箇所にコピー・ペーストしてください。

機能について

  • cache フォルダ上には、取得したデータをキャッシュとして 24 時間保持します。キャッシュファイルが作成されてから、24 時間過ぎるともう一度データを取得しにいきます。
  • そんなすごい独自機能なんてないよ。

免責事項

  • 制作者は本プラグインの使用によって生じた、利用者の如何なる損害に対しても一切の責任を負わないものとします。

プラグインの利用にあたっては、楽天ウェブサービスのサイト上にある利用規約を遵守していただくようにお願いします。

サーバーはWordPress 2.7、PHP 5 で、ブラウザはWindows 版 Firefox 3.0.10 と IE7、Google Chrome で動作確認をしています。他ブラウザでの試験はできない環境ですので、IE6 等でどうなるかが分かりません。レイアウト崩れ、エラーなどが発生してしまうようなら教えてください。その際、「こうすれば直るよ」と教えていただけると大変うれしいです(他力本願)。エラー処理はかなりさぼってます。

また、ぼくは普段 Firefox しか使っておらず、作成も Firefox を中心にしていることもあって、ところどころ表示がおかしなところがあるかもしれません。認識しているもので特に酷いのが投稿画面上にある検索フォームの IE での挙動で、検索すると下にがばっと余白でき、かつアイテム表示が妙な位置に描画されるというエキサイトな展開が待ち受けています。どうやれば直るってんだ!

ぼくは日曜プログラマなものですから、本職の方から見ると「なんぞこれ」という箇所があると思います。その際には、こっそり教えていただければ助かります。当初は商品表示もすべて jQuery でやっていたのですが、キャッシュファイルの作成やらでどうすればいいのかピンと来なかったものですから、途中でやめてしまいました。

なにかご要望とかがありましたら、コメントにでも残してあげてください。

WP-DBManager のメール文字化けを解消する

一日安静だーといいましても、一日中寝ていることもできないものなので、ネットしたりしながらゴロゴロとしているのですが、「wp-dbmanger 文字化け メールタイトル」だなんてクエリで検索があったので、そういえば気持ち悪かったものがひとつあったと思いだし、ちょっと直してみることにしてみました。

つい先日にもご紹介した、 WordPress のデータベースを自動でバックアップ・メール送信までしてくれる素敵すぎるプラグイン「WP-DBManager」ですが、やはり海外で作られたプラグインだけあって日本語のことなんかは考慮されていないつくりになっています。Gmail などで見れば問題はないようなのですが、ぼくが自宅で使用しているメールクライアント「Becky!」でバックアップメールを受け取ると、差出人と件名が壮絶に文字化けしてしまいます。

mojibakemail.gif
↑ こんなかんじ

ファイル自体は正常なのですが、メールボックスに化けに化けた件名のメールが溜まっていくにつれて、気持ちが悪いというかイライラしてきます。

原因自体は単純で、メールヘッダの From と Subject に WordPress の get_bloginfo(‘name’) (ブログ名)が指定されているからで、日本語が含まれたタイトルで運営しているとエンコードの都合で問題が出てしまうだけです。修正の方法も簡単でした。


$mail_subject = sprintf(__(‘%s Database Backup File For %s’, ‘wp-dbmanager’), get_bloginfo(‘name’), $file_date);
$mail_header = ‘From: ‘.get_bloginfo(‘name’).’ Administrator <’.get_option(‘admin_email’).’>’;

db-manager.php の 94,95 行目と database-manage.php の78,79 行目にある上記のコードから、メールの Subject, From 部分をメールヘッダ用にきちんとエンコードするべく、以下のように置き換えてあげるだけ。

$mail_subject = sprintf(__(‘%s Database Backup File For %s’, ‘wp-dbmanager’), get_bloginfo(‘name’), $file_date);
$mail_subject = mb_encode_mimeheader($mail_subject,”UTF-8″,”B”);
$mail_header = sprintf(‘From: %s Administrator <%s>’, mb_encode_mimeheader(get_bloginfo(‘name’),”UTF-8″,”B”), get_option(‘admin_email’));

mailmojibake2.gif
なおりました。:D

これでWP-DBManager を日本語化していようがいまいが、 どちらでも正常に表示されるはずです。

あくまでぼくの借りている CORESERVER 上でしか試していないので必ず直ります!とはいえませんが、 同じ問題でお悩みの方。一度おためしください :-)

CORESERVERでWP-DBManagerを動かすために

起きたらなぜか三時だった。

二度寝しようにも目がさえて眠れないので、摩訶不思議な状態に陥いり前々から気持ち悪く思っていた問題を解決することにしてみました。

WordPress のプラグインのひとつに、データベース内のデータをバックアップ、 リストア、バックアップしたデータをメールで自動送信ができるというすばらしいプラグイン「WP-DBManager」というものがあるのですが、このサイトが動いている CORESERVER ではデフォルト状態だと設定後に手動でのバックアップはできても、肝心のメール配信機能で 0byte のファイルが送られてきてしまうという問題が発生します。

これはどうも「そんな処理できねーよ!」というサーバー側からの無言の抵抗のようで、このメール自動配信機能は cron として処理する部分である以上、CORESERVER で……というよりも XREA 系のサーバーで動かすには、PHP を CGI として動作させる必要がでてきてしまうようです。

別にそうすりゃいいじゃないというお話でもあるのですが、CORESERVER のサーバーヘルプに書かれている説明だと『モジュール版PHPに比べて、動作が遅くなる。負荷が掛かる。』とあり、重くなるんかよウゲゲーと感情的に嬉しくありません。早いほうがいいですよね!

ルートに「AddHandler application/x-httpd-phpcgi .php」と書いた .htaccess を置けば実に簡単に解決するのですが、これだと全体がそう処理されてしまうわけですから、前述の負荷云々で問題が出そうです。

かといって、CGI として動作させないことにはどうにもなりません。そこで今回、その被害(?)を最小限に食い止める方法をご紹介してみます。

方法はいたって簡単。WordPress のルートフォルダに .htaccess を設置もしくは追記してあげるだけ(たぶん mod_rewrite がらみのものがあるので、追記になるはず)!

<files wp-cron.php>
AddHandler application/x-httpd-phpcgi .php
</files>

要は WordPress の cron 部分を担当しているファイルだけを指定してやるだけです。ひとまずこれでメールの 0byte 問題は解決。負荷 pt なんかもそんなに上がらないんじゃないかなーと踏んでいます。

お困りのかたは是非どうぞ、と言いたいところですが、ぼくも今し方、書き換えたばかりのものなので他にやっぱり問題が出るかもしれないというところは、念頭に置いていてくれると助かります :-)

おっと、ちなみに CORESERVER の mysql と mysqldump のパスは


mysqldump : /usr/local/mysql/bin/mysqldump
mysql : /usr/local/mysql/bin/mysql


となります。

サーバーの負荷が急に上がってしまったヨ

契約しているホスティングサービス「CORESERVER」さんですが、管理ページ上からCPUなり転送量なり、どの程度の負荷があるのかをポイントとして確認することができます。

ここ数日、投稿時もサーバーエラーが出たりと割と難儀していたこともあり、久しぶりに管理画面を見てみると、これまではずっと負荷状況的に問題がなかったところ(負荷率 0 ポイント)が 2/2 以降に急上昇。

問題になった 2/2 頃に導入したプラグインといえば、

ぐらいでしょうか(結構入れてるな!)。

このどれかが悪さしているというのも考えづらく、色々と原因を探ってみたところ、プラグイン「Smart Archives」を利用して生成しているアーカイブページでのクエリ数が異常に多いことに気がつきました。他のページなら、およそ30程度なのですが、アーカイブのみ 120 を越える勢いでクエリを発行している模様。

これはなんだろう。このページに Google の bot なりがガツガツやってきた影響で CPU 負荷が上がってしまったとか、そういうオチだったりするのか、たぶんそうだろう、そうであって欲しいと「アーカイブ」ページの一覧生成に利用していたプラグイン「Smart Archives」を急ぎ撤去し、同機能(むしろこっちのが高機能)な「wp-mosquito」に入れ替えました。

今のところ、実際にこれで負荷が収まってくれるかは分からないのですが、ちょっと一ページで吐くクエリとしては異常だと思われるので、同プラグインを利用されている場合にはちょっと注意が必要、かもしれません。一応、理由をサポートに問い合わせているところでもあるので、はっきりとした原因が分かった際にはこちらでもお知らせします。

ちなみに一ページごとにどれぐらいのクエリ、処理速度がかかっているのかは、WordPress のデフォルトテーマにもある以下のコードをテーマのフッタにでも挿入しておけば、いつでも確認することができます。

カスタムテーマを使用しているかたも、そっと挿入しておいてみてはいかがでしょーか。

<!– <?php printf(__(‘%d queries. %s seconds.’, ‘kubrick’), get_num_queries(), timer_stop(0, 3)); ?> –>

「’(シングルクォーテーション)」が全角になっているので挿入時には注意してください :D

注目させたい記事を表示するプラグイン

常にトップページ上にあげておきたいといったほどではなく、記事ごとの人気度を測って表示させるほどの必要もない。

埋もれてしまう記事を救う意味でも、特別な記事をピックアップするリストを簡単お手軽に作る方法はないものかと色々なプラグインを試していたのですが、シンプルに徹したものはどうも見つけられませんでした。

まあタグを使えば一発解決なんですが、タグの管理というのがどうも苦手というか、必要なくなったときのタグの付け替えが面倒だなあと思い、勉強がてらに「テーマのウィジェットとしてさくっと配置できて、ワンクリックで設定、出力も単純なリストで」的なプラグインをひとつ作ってみることにしました。

プラグインの作り方を解説しているサイトがないものかと探してみるも、データベースエラーで閲覧できないというステキすぎる状況……。そもそも、あまりプログラムが得意な人ではない ((コピペプログラマー))のですが、なんとか単純極まる仕組みのプラグインが完成。XAMPPがなければ、出だしで諦めていたかもしれません。

できあがったプラグインはこんな感じ。エディタ上から、注目させるかさせないかのチェックボックスで設定することができ、ウィジェットとしてぽいっと設置できるような感じになりました。早速設置してみましたが、大丈夫だよね……。

fav_plugin.gif

需要もないだろうし、これを公開する勇気まではさすがにありませんが、同じようなことで悩んでいる方がいらっしゃるようなら差し上げますので、コメント欄にでもお気軽にお知らせください。:-D

# その後、需要があったようなので公開しました。(2009/5/3 追記)

My Favorite Posts 0.3
http://blog.newf.jp/etc/favorite_posts.zip

しんしんと雪が降る中の暇つぶしには最適でした。

img_0598.jpg

豪雪のなか、散歩に行きたそうなレウさん。

眠れぬ夜の WordPress 遊び

なんでか四時ぐらいに目が覚めてしまったので、今更寝直すわけにはいかんというわけで WordPress を弄って遊んでます。 昨日もこんな感じだったなあ。

WordPress を弄るといえば、それはもう多々あるプラグインをどんどん入れて、「アッー、高機能っぽくなってるヨォ!」という遊びに尽きるわけですが、ご多分に漏れず今日もそのように遊んでいます。

そこで今日導入してみたプラグインは―

WP AJAX Edit Comments

投稿されたコメントを投稿者本人が編集できるようになるプラグインです。

本ウェブログでは20分間以内なら、投稿したコメントをちょいちょいと弄くることができるようになっています。誤字脱字の訂正などにがんがん利用してやってください。

本来なら名前欄も編集できたりするのですが、ここはそう編集することはないだろうし、ちょっと邪魔だなということで、削らせてもらいました。

昨日あたりからデザインテーマを変更したりと色々と弄くりまわしてしまっているので、何かおかしな表示になってしまっていたりするところがあれば、是非ともぼくに教えてください。いちおう、Firefox, IE7, Opera で確認しているので問題ないハズなのですけれど。