Amazon E-Commerce Service が、先日オープンしたアパレル&シューズストアに対応しました。
対応するようになったのは、API Version: 2007-10-29 。検索対象を指定する SearchIndex
の値は Apparel
です。
AmazonLink に早速組み込みました。何度か検索してみましたが、うまく動いているようです。もう少しテストを繰り返して、土日あたりで公開したいと思っています。
Amazon E-Commerce Service が、先日オープンしたアパレル&シューズストアに対応しました。
対応するようになったのは、API Version: 2007-10-29 。検索対象を指定する SearchIndex
の値は Apparel
です。
AmazonLink に早速組み込みました。何度か検索してみましたが、うまく動いているようです。もう少しテストを繰り返して、土日あたりで公開したいと思っています。
このサイトの場合、スパムのほとんどはシングルバイト文字のみです。つまりは、非日本語スパムがほとんどを占めています。そこで、間違ってスパムではないものを Akismet が捕獲してしまっていないか確認するために、マルチバイトのコメントだけを表示できるようにしています。以前は自作のプラグインを、現在はひろまささんによる akismet-multibyteview を使用しています。
プラグイン導入により平穏な日々をすごせていたのですが、最近その平穏を脅かす存在が現れました。それは、マルチバイトの非日本語スパムです。
ポルトガル語かスペイン語らしい言語で書かれていて、作文なんじゃないかと思うほど長いものです。また、スペイン語版Googleのアドレスと、ポルトガルドメインのメールアドレスを伴い、83.*.*.* のIP アドレス(ヨーロッパ圏に割り当てられているようです)からやってきます。定期的に来ているようで、常に8件あります。
もともとコメントもトラックバックも少なく、スパムでない外国語のものがあったことはありません。思い切って、特に多い IP アドレス範囲を拒否対象としてしまうことに。 .htaccess の Deny ディレクティブで次のように指定しました。
しばらくこれで様子を見てみることにします。
Amazon.co.jp でアパレル&シューズストアが先日オープンしていました。
拙作 WordPress プラグインのAmazonLink では Amazon E-Commerce Service(以降、ECS と表記します)を使って検索機能を実現しているのですが、残念ながら現時点で最新の ECS でも Amazon.com にしか対応していません。対応バージョンが公開されたら、AmazonLink でも対応したいと思います。
検索はできませんが、コードがわかれば普通に個別商品リンクを表示することは可能です。ECS を使わないで表示するようにしている強みですね。
ファッション系は、このブログだと浮いてしまいますね・・・・。
WordPress プラグイン AmazonLink の 0.9.0 をリリースしました。
すでに記事を書いたりしているのでご存知の方もいらっしゃると思いますが、今回の目玉は Amazon.co.jp 検索機能です。ASIN をその場で調べることができるので、記事投稿画面で完結できます。個人的にもお気に入りの機能です。
配布ページにも書いてあるのですが、動作確認は Windows 環境でのみ行ってあります。Mac でもしたいところですが、持ってないのでごめんなさい。もしかすると、Safari で検索がうまくいかないかもしれません。直せるかどうかわかりませんが、報告だけでもいただけると助かります。
このブログにくるスパムのほとんどは英語圏のものですが、正当な日本語のトラックバックやコメントもいただくことがあります。なので、スパム対策は必須。でも、たまに正当なものが Akismet に引っかかってしまうことがあって困ります。
一応自作プラグインの ApamAnalytics でマルチバイトのものの件数を見ることができるので確認するようにしていますが、スパム扱いになっているのを解除するには Akisumet の管理画面でやる必要があります。数百件の中から探すだけでも大変。さすがにうんざりして来たので、SpamAnalytics のマルチバイト抽出アルゴリズム(元をたどれば、ひろまささんによる Akismet de-spam view Hack)と Akisumet の管理画面のソースコードを利用して、リストアップするのを作ってみました。とりあえず MbSpams と命名。今回も安直なネーミングです。
10分ぐらいで作った割には結構便利です。AmazonLink の開発に切りが付いたら、スパム扱い解除機能をつけてみたいですね。日本語専用ではありませんが、やっと JSeries を名乗るにふさわしいものになるかもしれません。
世の中には、『作者のプロフィール』というものが溢れています。本を買えば著者のプロフィールが、企業サイトを見れば会社情報が。最近は農作物なども『私が作っています』のような情報を見ることができるようになってきています。プログラムでも、ソースコードに簡単なプロフィールが入ってることがあります。
私はプロフィールページをできるだけ用意するようにしています。もちろん個人情報のすべてを晒すようなものではなく、趣味とかがちょっとわかるくらいのものです。このブログにも用意してあります。
プロフィールページを用意する理由は、私自身がトラックバックやコメントなどをするときに見たいからです。特に名前ですね。『○○さんのサイトで』といった感じに呼びかけ調で書きたいときに名前を探します。サイト名でも困りはしませんが、名前があったほうが見に行ってみようという気になりませんか?
いつものように WordPress ダッシュボードに表示される記事リストを見ていると、『「wp-tmkm-amazon」プラグイン導入』というタイトルが目に留まりました。名前からして Amazon 系であることは間違いなさそう。しかも聞いたことが無い。
Amazon 系プラグイン開発中の私としては、非常に気になるわけで。早速記事を見てみることにしました。
記事によると、やはり新規に公開が始まったもののようです。しかも、配布場所は WordPress Plugins/JSeries となっています。拙作の AmazonLink と同じ場所。身内でしたか。
記事ではプラグインを使った商品紹介もあります。G-Tools を使ったものに近い表示で、Amazon アフィリエイトセントラルのツールを使ったものではないようです。コードを生成するタイプでしょうか。
気になるので配布ページを見に行ってみることに。
むぅ。AmazonLink 並に手軽に使えて、さらに高機能ですね。良いものができることはうれしいですが、作者としてはちょっと複雑な心境です。
まだコードは見ていないのですが、毎回 Amazon Web Service(以降、AWS と表記します)でデータを取ってきて、それを使ったコードで置換するタイプのようです。実は、AmazonLink も初めは同じことをやろうとしていました。レイアウトをブログの管理者が管理画面でデザインできるといったアイデアもあったりします。
なぜそれをやめてしまったかというと、AWS には1秒に1回とか、1日に何回までという制限があるのです。この制限を超えてしまった場合は、何らかのペナルティを受ける可能性があります。うちのような小さなところでは大したことはないと思いますが、アクセスが殺到する人気サイトでは無視できないと思ったわけです。
また、1秒に1回という制限をどうやって回避するかの解決ができていません。記事単位であれば対策はありますが、トップページのように複数記事がいっぺんに表示される場合にどうしたらいいかわかりません。この問題が解決できれば、2つの方式を選択できるようにしたいと考えています。
とりあえず、今は AmazonLink の検索機能の完成を目指します。
AWS の制限に1日のリクエスト回数があると記事中で書きましたが、現在はこの制限はなくなっていたようです。現時点での制限項目としては、1秒に1回以上のリクエスト禁止ということのみとなります。
納期がないといろいろいじってしまって、公開が伸びてよくないですね。ひとまず現状報告です。
動作対象とする WordPress のバージョンは、ME 版の 2.0.x ~ 2.2.x としています。2.0.10 と 2.1.3 で確認済みで、リリース前には 2.2.1(りリース前に ME での公開があれば 2.2.2)での動作確認も行う予定です。
2.1.x 以降では、JavaScript ライブラリの読み込みを wp_enqueue_script で行うようにしています。
現在公開中の0.5.0から追加された新機能は2つあります。
まず、オプションページのリンクや背景色を入力するフォームに、カラーピッカー機能が追加されました。フォームの横のリンクをクリックすると、近くにカラーピッカーウィンドウが開きます。ポップアップウィンドウになってしまうので、ブロックされてしまう可能性があります。DHTML による擬似ウィンドウ表示もできるようですが、うまくいかなかったためポップアップとなっています。
なお、この機能は WordPress が標準で持っている JavaScript ライブラリを使用しています。
もう1つの機能が、投稿ページでの Amazon.co.jp 検索機能です。Firefox 2・IE6・Opera9 での動作を確認してあります。キーワードを入力して検索ボタンを押すことで、選択されているジャンルでの検索結果を Ajax にて表示します。IE6 と Firefox 2 では、キーワード入力フォームでのエンターキー入力でも検索が行えます。検索結果は10件ずつの表示で、ボタンクリックによるページ切り替えも対応しています。
Ajax ということから、検索機能では JavaScript によるプログラムコードもそれなりの量(改行の多いコーディングスタイルで222行あります)になっています。多数の変数や関数がグローバルでアクセスされる状態になってしまっているめ、ほかのプラグインによって関数が上書きされてしまうといったトラブルの可能性が高くなっています。
この対策として、現在 prototype.js を使用したオブジェクト指向プログラミング化に挑んでいます。うまくいけば、トラブル発生の率をかなり抑えることができるはずです。
さすがにそろそろ WordPress を 2.2 にアップグレードしたいと思い、ローカルサーバーに複製を作って挑んでみました。
消えても平気ということで、いきなり 2.0.x から 2.2.1 にアップグレード。見事にこけました。文字化け+日本語リソースファイル読まない+プラグイン動かない。わかりやすいことです。
やっぱり間を飛ばしちゃだめだよねと、今度は 2.1.3 にアップグレード。WP Paginate .2.2 を有効にすると表示が真っ白になるのと WP-AddQuicktag 0.2 のバージョンアップが必要なの以外はとりあえずOK。WP-AddQuicktag は乙彼さんによる日本語版の WP-AddQuicktag (ja) 0.4 にしました。WP Paginate の代わりは検討中です。お勧めのがあったらぜひ教えてください。
一番やばいのは、自作の AmazonLink(未公開バージョン)の Ajax 部分です。UTF-8 でデータを返すはずなのに、なぜか Shift_JIS で処理されてます。当然文字化けしてしまって、検索結果が表示できなくなってます。原因究明のためしばし研究します。リリースが伸びてしまいました。期待していただいている BoozerBlog の方(お名前が見つけられませんでした)申し訳ないです。
プラグイン以外での悩みは、テンプレートタグ(正確には PHP のユーザー関数)の wp_list_categories()
。
2.1.x からは wp_list_cats()
が非推奨となり、wp_list_categories()
を使うようにとのお達しがありました。それじゃあと使ってみたのですが、children
に相当するパラメーターがありません。第一階層のカテゴリだけをメニューのように表示させたいのですが、それにはこのパラメーターの機能が必須なのです。wp_list_cats()
でしばらく済ませるということも考えましたが、普通に children
が効きませんでした。これはどういうことだと調べてみると、wp-includes/deprecated.php
で次のように定義されていました。パラーメーターが完全に無視されています。互換性をなくしておいて非推奨はひどい。
どうしようもない状況です。仕方がないのでタグを無効にしました。
2.2.1 への道は険しいです。果たしてたどり着けるのはいつのことでしょうか。
AmazonLink の原因が判明。JavaScript からの検索リクエストを中継するためのプログラムに書いてある PHP 関数 header()
の使い方が間違っていました。
正しいのがこれ。
これを、このように間違えていました。引数の数とかはあっているので、これだと構文エラーにはならないのです。
最近よく見かける ClickComments を導入してみました。よく見かける割には導入の仕方についての説明を見たことがないので、ついでに解説記事を書いてみることにします。解説不要なくらい簡単でしたが、せっかくスクリーンショットも用意しましたので。
初めに、導入したいブログサイトの情報を送信します。ClickComments のページにフォームがあります。メールアドレスの欄もありますが、これは必須でないので空のままでも大丈夫です。入れておくとユーザー登録されるのかもしれません。このサイトにはログインページがあります。
Category は、サブのカテゴリでなくても大丈夫です。私は大まかに Technology にしました。サブカテゴリのほとんどが当てはまりますので。
入力が終わったら、ボタンを押して送信します。
このサービスは、現在8種類のブログシステムに対応しています。導入先のブログを選択するように促されますので、今回は WordPress を選択します。
ブログシステムを選択すると、使えるようにするための説明ページが表示されます。説明にはプラグインをダウンロードするためのリンクも含まれています。
ここにある説明は、一般的なプラグインの導入方法となんら変わりありません。ファイルをダウンロードして、プラグインファイルをアップロードして、管理画面で有効化。それだけです。有効化すると、記事本文の下に表示されるようになります。
おまけ項目です。
ついでにプラグインの中身を見てみました。ややこしいことをやっていると思いきや、メインのコードはわずか12行でした。ほとんどの処理を JavaScript で行っているのでしょうか。ブログサイトのアドレスや記事の情報を引数で渡しているので、ブログページのソースから JavaScript を見てみます。
またもや単純なコードです。インラインフレームのタグを表示しているだけでした。アマゾンの個別商品リンクと同じ方式ですね。インラインフレームの中身のアドレスには、blog
というパラメーター名で ID らしきものが渡されています。これが初めに送信した情報と結びついていて、言語にあわせた表示にしたりしているのでしょう。
最終的な構造は次のようになります。div.postreachclickcomments
にスタイル設定をすれば、多少のデザインは可能ですね。
HTML convert time: 2.093 sec. Powered by