2009年9月7日 月曜日

AmazonLink 2.0.0 beta2 リリース

カテゴリー: AmazonLink
タグ:,
時間:23時30分
投稿者:よしとも
AddClips 経由でソーシャルブックマークに登録

すでに昨夜の話になってしまいますが、AmazonLink 2.0.0 beta2 をリリースしました。ダウンロードは、いつものようにWordPress Plugins/JSeriesのサイトからどうぞ。

ページ投稿画面での検索フォーム追加や、AmazonLink コードの変更などをしています。また、アップグレードが進むとの予測から、急いで WordPress 2.8.4 での動作検証も行いました。2.8系は投稿画面の幅が狭くなっているため、ボタンなどのレイアウトも少し変えてあります。

AmazonLinkコードの変更ですが、商品ごとにテンプレートを変える機能を思いついたためです。テンプレートは複数行になる可能性が高いため、属性値とするには不向きです。そのため、コードに挟むことができるようにしました。

なお、内部で変換処理を行っているので、今までの形式も使用することはできます。

ASIN は Amazon Standard Item Number の略で、Amazon の商品コードです。

以前の形式
CODE:
  1. [amazon]ASIN[/amazon]

新しい形式
CODE:
  1. [amazon asin="ASIN"][/amazon]
  2. [amazon asin="ASIN" /]

現在は個別のテンプレートには対応できていませんが、TODOには入れておこうと思います。手を出しすぎると切りがないので、正式リリースまでは触らない予定です。

コメント (0)

2009年9月5日 土曜日

AmazonLink のテンプレート

カテゴリー: AmazonLink
タグ:, ,
時間:16時17分
投稿者:よしとも
AddClips 経由でソーシャルブックマークに登録

8月14日に公開となった AmazonLink 2.0.0 beta では、テンプレート機能によってある程度自由にデザインを作ることができるようになっています。

管理画面上の説明でどこまで伝わるのか自信がないので、現在このサイトで使用しているテンプレートを公開しようと思います。

CODE:
  1. <table class="amazonLink" width="468">
  2.     <tr>
  3.         <td colspan="2">
  4.             <strong><span class="itemName"><a href="[DETAIL_PAGE_URL]">[ITEM_NAME]</a></span>[IF_AUTHOR/] <span class="author">[AUTHOR]</span>[/IF_AUTHOR]</strong><br />
  5.             [IF_PUBLISHER/]発売:[PUBLISHER][IF_RELEASE_DATE/] [RELEASE_DATE][/IF_RELEASE_DATE] [/IF_PUBLISHER]
  6.             販売数ランク:[SALES_RANK]
  7.         </td>
  8.     </tr>
  9.     <tr>
  10.         <td rowspan="3" width="[MEDIUM_IMAGE_WIDTH]" valign="top">
  11.             <a href="[DETAIL_PAGE_URL]"><img src="[MEDIUM_IMAGE_URL]" width="[MEDIUM_IMAGE_WIDTH]" height="[MEDIUM_IMAGE_HEIGHT]" alt="『[ITEM_NAME]』の商品写真" /></a>
  12.         </td>
  13.         <td valign="top">
  14. [IF_CREATOR/]
  15.             <ul class="creator">
  16. [CREATOR/]        <li>[CREATOR_ROLE][CREATOR_NAME]</li>
  17. [/CREATOR]
  18.             </ul>
  19. [/IF_CREATOR]
  20.         </td>
  21.     </tr>
  22.         <td valign="top">
  23. [IF_REVIEW/]
  24. 平均評価:<img src="/wp-content/themes/custom01/images/evaluation_[AVERAGE_RATING].gif" width="59" height="11" alt="[AVERAGE_RATING]">
  25.             <ul class="evaluation">
  26. [REVIEW/]            <li><img src="/wp-content/themes/custom01/images/evaluation_[REVIEW_RATING].0.gif" width="59" height="11" alt="評価:[REVIEW_RATING]"> [REVIEW_SUMMARY]</li>
  27. [/REVIEW]
  28.             </ul>
  29. [/IF_REVIEW]
  30.         </td>
  31.     </tr>
  32.     <tr>
  33.         <td valign="bottom">
  34.             <span class="powerdBy">[POWERD_BY]</span>
  35.         </td>
  36.     </tr>
  37. </table>

テーブルの幅が固定であったりしますが、別のサイトにも流用可能かと思います。WordPress や プラグイン同様に GPL ライセンスとしますので、ご自由にお使いください。

コメント (0)

2009年8月14日 金曜日

AmazonLink 2.0.0 beta リリース

カテゴリー: AmazonLink, アフィリエイト
タグ:, ,
時間:18時33分
投稿者:よしとも
AddClips 経由でソーシャルブックマークに登録

JSeries サイトの更新はまだですが、先ほど AmazonLink 2.0.0 beta をリリースしました。
現在 SourceForge.JP の以下のアドレスからダウンロードができるようになっています。

http://sourceforge.jp/projects/wppluginsj/downloads/43119/AmazonLink-2.0.0beta.zip/

19時25分追記

Jseries サイトを更新しました。メジャーバージョンアップと言うことで、新規にページを作成してあります。
http://wppluginsj.sourceforge.jp/amazonlink2/

コメント (2)

2009年8月9日 日曜日

AmazonLink 2.0 beta もうすぐ・・・

カテゴリー: AmazonLink
タグ:, , , ,
時間:18時28分
投稿者:よしとも
AddClips 経由でソーシャルブックマークに登録

平日は忙しくてまったく時間はないわ、休日は平日できてないことをやってると終わってしまうわでほぼ停止状態でしたが、昨日と今日で AmazonLink を Amazon の Product Advertising API に対応させました。

ついでに WordPress 2.7 にも対応させたので、近いうちにベータ版として公開することができそうです。2.8 は未テストなので、対象外の予定です。

また、サイドバーでやってたアンケートの結果を元に、今回から動作環境条件として PHP 5.1 以上とします。これにより、Amazon とのやり取りの処理が PHP のネイティブ関数を使えるようになるので処理が早くできるはずです。PHP 4.x の環境しかない方はごめんなさい。

ベータ版として公開したあとの予定ですが、プログラムの整理と PHP 5.x らしい書き方への変更をしたいと思っています。一緒に WordPress 2.8 にも対応したいですね。

今後も使っていただけるという方は、Product Advertising API アカウントの取得をしておいてください。8月15日以降は、アカウントがないと投稿画面での検索ができなくなります。

コメント (0)

2009年5月31日 日曜日

PHPバージョンアンケート

カテゴリー: AmazonLink, プログラミング
タグ:,
時間:3時21分
投稿者:よしとも
AddClips 経由でソーシャルブックマークに登録
Popularity: 11%
by Popularity Contest 日本語版

AmazonLink を Product Advertising API(旧 Amazon アソシエイト Web サービス)に対応させるに当たり、PHPのバージョンの傾向を知るためのアンケートを開始しました。アンケートはサイドバーにも掲載されます。

PHPは4.x がすでに公式に開発終了となっていますが、まだまだ生き残っています。5.x に移行するべきではありますが、サーバー側で対応していなければどうしようもありません。大手レンタルサーバーはすでにかなり対応していますが、4.x しか使えないところも残っているようです。

現時点でどれくらいのサーバーが移行できているのかを知ることが目的です。ご協力よろしくお願いします。

メインサーバーで使えるPHPのバージョンは?
View Results
コメント (0)

2009年5月10日 日曜日

”Amazon アソシエイト Web サービス”が”Product Advertising API”に

カテゴリー: AmazonLink, アフィリエイト, プログラミング
タグ:, , , , ,
時間:17時46分
投稿者:よしとも
AddClips 経由でソーシャルブックマークに登録
Popularity: 16%
by Popularity Contest 日本語版

Amazon.co.jp からいろいろな情報を取得することができる”Amazon アソシエイト Web サービス”というサービスがありますが、”Product Advertising API”という名称に変わるとのことです。そして、情報のリクエストには署名による認証が必要になるとのこと。

拙作 WordPress プラグインの AmazonLink でもこのサービスを使用しているので他人事ではありません。

基本方式はほとんど変わらないとのことですが、認証で使用する電子署名の作成には、開発者登録をしたときに作成した Secret Access Key というものが必要になるようです。リクエスト時のデータによって変わるため、電子署名データだけをプログラムに埋め込んでおくことができません。また、Secret Access と言うくらいなのでこれを公開するのも駄目でしょう。

詳しい情報がまだ得られていないのでなんとも言えませんが、ただ使うだけの人にも開発者登録をしてもらわないと駄目になるかもしれません。

今のところは、たつをさんによる記事が一番詳しそう。

電子署名データの作成には RFC 2104-compliant HMAC with the SHA256 hash algorithm という変換処理のようなものが必要で、これを行うための関数である hash は PHP5 でないと標準では使用できません。PHP4 はすでに終了宣言が出ているのですが、まだ PHP5 が使用できないサーバーもあるので悩みどころです。

コメント (0)

2008年11月29日 土曜日

WordPress 用プラグイン monthchunks のバグを修正

カテゴリー: WordPress, ハック, プラグイン
タグ:, , ,
時間:3時45分
投稿者:よしとも
AddClips 経由でソーシャルブックマークに登録
Popularity: 24%
by Popularity Contest 日本語版

 このブログでは、月ごとアーカイブをコンパクトに表示してくれるプラグイン monthchunks を使用していますが、記事がないのに表示されている月があることが判明しました。

 問題の月は、2006年の9月。Google ウェブマスターツールのリンクエラー報告によると、76箇所で表示されているとのこと。さすがに数が多いので、本腰を入れて調べてみることにしました。久しぶりのプラグインハックです。

 何はともあれ、まずはプラグインのコードを読みます。使用しているバージョンは、最新の2.1。関数が1つ定義してあるだけでコメントを含めても154行と非常に短いので、初めてのハックにはお勧めかもしれません。

 大まかな流れは、SQL 文を生成して実行するだけ。オプションによって多少分岐がありますが、上から追いかけていけば大したことはありません。101行目からと114行目(110行目から始まる foreach の中)からの2箇所でデータベースにアクセスしています。1箇所目は記事のある年度の取得、2箇所目は各年度別に記事のある月の取得をしています。

PHP:
  1. // get an array of the years in which there are posts
  2.     $wpdb->query("SELECT DATE_FORMAT(post_date, '%Y') as post_year
  3.                   FROM $wpdb->posts
  4.                   WHERE post_status = 'publish'
  5.                   GROUP BY post_year
  6.                   HAVING post_year <> '0000'
  7.                   ORDER BY post_year $year_order");
  8.     $years = $wpdb->get_col();

PHP:
  1. // get an array of months for the current year without leading zero
  2.         // sort by month with leading zero
  3.         $months = $wpdb->get_results("SELECT DATE_FORMAT(post_date, '%c') as post_month,
  4.                                       $month_format AS display_month,
  5.                                       DATE_FORMAT(post_date, '%M') as post_month_name
  6.                                       FROM $wpdb->posts
  7.                                       WHERE DATE_FORMAT(post_date, '%Y') = $year
  8.                                       AND post_type = 'post'
  9.                                       GROUP BY DATE_FORMAT(post_date, '%m')
  10.                                       ORDER BY post_date");

 今回問題になっているのは月の情報なので、2箇所目を詳しく見ていきます。PHP のコードと SQL が混在してわかりにくいので、最終的な SQL 文を記述してみます。オプションを特に指定しない場合は、次のようなものが出来上がります。(改行やインデントなどを加えてあります)

SQL:
  1. SELECT
  2.     DATE_FORMAT(`post_date`, '%c') AS `post_month`,
  3.     DATE_FORMAT(`post_date`, '%c') AS `display_month`,
  4.     DATE_FORMAT(`post_date`, '%M') AS `post_month_name`
  5. FROM `wp_posts`
  6. WHERE
  7.     DATE_FORMAT(`post_date`, '%Y') = 2006
  8.     AND `post_type` = 'post'
  9. GROUP BY DATE_FORMAT(`post_date`, '%m')
  10. ORDER BY `post_date`;

 実際にこの SQL 文を手がかりに検索してみると、記事ではなく固定ページが見つかりました。記事と固定ページを区別していないため、固定ページしかない月も表示してしまっていたのです。

 ここまでわかればあとは簡単。検索条件に記事であることを加えればいいのです。記事の場合は post_type というフィールドの値が post となるので(WordPress 2.1以降)、post_type = 'post' を加えます。変更後は次のようになります。私は120行目に加えました。

PHP:
  1. // get an array of months for the current year without leading zero
  2.         // sort by month with leading zero
  3.         $months = $wpdb->get_results("SELECT DATE_FORMAT(post_date, '%c') as post_month,
  4.                                       $month_format AS display_month,
  5.                                       DATE_FORMAT(post_date, '%M') as post_month_name
  6.                                       FROM $wpdb->posts
  7.                                       WHERE DATE_FORMAT(post_date, '%Y') = $year
  8.                                       AND post_status = 'publish'
  9.                                       AND post_type = 'post'
  10.                                       GROUP BY DATE_FORMAT(post_date, '%m')
  11.                                       ORDER BY post_date");

 これにより、その年の公開されている記事という条件で絞り込むことができるようになりました。現在2006年の9月は表示されなくなっています。

コメント (0)

2008年11月15日 土曜日

アンケートを設置しました

カテゴリー: WordPress, プラグイン
時間:16時10分
投稿者:よしとも
AddClips 経由でソーシャルブックマークに登録
Popularity: 16%
by Popularity Contest 日本語版

 WordPress のシェアを知りたかったので、アンケートを設置しました。右ペインのカレンダーの下にありますので、気が向いたらお願いします。

 アンケートは、Democracy AJAX Poll というプラグインを使用しています。Ajax を使用することで、ページのリロードなしで投票できます。導入方法などについては、ぼのさんによる記事が参考になると思います。

 なお、日本語リソースは配布していたサイトが閉鎖してしまったため導入していません。普通に日本語が使えましたので、とりあえずはこのままで行く予定です。

コメント (0)

2008年8月13日 水曜日

WordPress 2.6 の投稿ページはシステムが変わったらしい

カテゴリー: AmazonLink, WordPress
時間:0時15分
投稿者:よしとも
AddClips 経由でソーシャルブックマークに登録
Popularity: 36%
by Popularity Contest 日本語版

 久しぶりの WordPress ネタです。ちょっとだけですが・・・。

 昨日、拙作プラグインの AmazonLink のテストをするために、ローカル環境に WordPress 2.6 をインストールしました。そして、ざっと管理画面を眺めたらおもむろに AmazonLink をインストール。真っ先に記事投稿ページへ飛んで、フォームが表示されていることを確認。早速検索!

 「wordpress」(テストはいつもこれです)とキーワードフォームに打ち込んで、エンター!

 クルクルとあの画像が回転し始めそのまま待っていると、なぜか記事管理ページへ。投稿されてしまったようです。ここは検索結果が出るだけで画面遷移は起こらないはずなのですが。

 とりあえず戻ってキーワードを入力。今度は検索ボタンをクリック。でも何も起こりません。検索は始まらないし、送信中でもなさそうです。この瞬間頭の中は疑問符がいっぱいでした。

 ここでふと思い出したのが、2.6では submit は専用の JavaScript プログラムを経由することが推奨されているとどこかに書かれていたはず。どうやら簡単には動いてくれないようです。

 すでに2.6にしてしまった方ごめんなさい。対応は2.0以降にします。

2008年8月14日 追記

JavaScript ではなく PHP だったようです。

 よくわかりませんが、アクションフックに登録すればいいんでしょうか。日本語での詳しい説明がほしいところです。

コメント (1)

2008年5月24日 土曜日

Amazon Web Service の価格情報と発送時期

カテゴリー: AmazonLink, アフィリエイト, プログラミング
時間:17時25分
投稿者:よしとも
AddClips 経由でソーシャルブックマークに登録
Popularity: 42%
by Popularity Contest 日本語版

 AmazonLink 2.0 を開発中ですが、価格情報と発送時期の表示で悩んでしまっています。

 基本的に、Amazon Web Service では商品情報を24時間までキャッシュとして所持することが可能です。めったに変更されない情報については1ヶ月まで可能ですが、現時点では24時間を基準として更新するという実装をしています。

 今のところはうまく動いているのでこのまま価格についても実装するつもりだったのですが、途中で価格情報と発送時期はキャッシュ禁止となっていることが判明しました。規約に、other than pricing or availability information とあります。

 キャッシュが出来ないとなると毎回取得することになるのですが、1秒に1回というリクエスト制限があるために表示に時間がかかってしまいます。WordPress プラグインの仕様上記事単位の処理となり、1ページに複数の記事がある場合では1回のリクエストで一括して取得するという方法が使えません。

 現在の選択肢は次の2つ。

  1. 表示時間がかかってもいいから毎回リクエスト
  2. 価格情報および発送時期の表示機能をつけない

 今のところ1のやり方で出来ないかと検討しています。テンプレートに価格情報か発送時期のコードがあるときにだけリクエスト処理をすれば、使う人が選択することが出来ます。プログラムが汚くなりそうなのが心配ですが・・・。

 一番いいのはキャッシュをさせてくれるようになることですね。期限を1時間とか30分とかにしたとしても、アクセスの多い大手ブログでは効果が出ると思うのです。
 規約によると、表示された価格と発送時期を1時間ごとに強制更新する必要があるのだそうです。逆に言えば、1時間は同じままでもいいということですよね。だったら、「価格と発送時期は1時間までキャッシュ可能」とすればいいはず。

 いい解決手段があればぜひご連絡ください。

コメント (0)
次ページへ »

HTML convert time: 0.730 sec. Powered by

Images is enhanced with WordPress Lightbox JS by Zeo