説明
Kukuriya は、複数のアフィリエイトサービスプロバイダー (ASP) の商品リンクを1つの「商品」にまとめて管理する WordPress プラグインです。ブロックエディターに統合されていて、商品の検索からカードの表示、比較表、価格の自動更新までを扱います。
ポチップからの乗り換えを考えている方、Amazon API の利用条件に悩んでいる方、1つのサイトで複数の ASP をまとめて管理したい方に向けています。
主な機能
- ユニバーサルリンク: 1つの商品 = 複数 ASP のオファーの集合。読者・在庫・価格に応じて最適なリンクを出せるデータ構造です
- コネクターアーキテクチャー: ASP ごとの連携は独立したコネクターになっています。公式コネクターを同梱していてサイトごとに切り替えられるほか、公開フックを使えば第三者のコネクターを別プラグインとして追加できます
- ブロックエディター対応: 商品検索モーダル、ブロックの挿入、属性の編集 UI を TypeScript + React 18 +
@wordpress/scriptsで作っています - URL 貼り付けで一発登録: 楽天や Amazon の商品ページ URL をブロックエディターに貼るだけで、商品を特定して取得し、自動で登録します。SiteStripe の短縮 URL (
amzn.to/amzn.asia) も自動で展開します。検索で出てこない商品を救う道としても使えます - カードのレイアウト: シンプル / カード / コンパクト / ポチップ互換 (乗り換えても見た目が変わらないように)。さらに最大10商品の比較表ブロックがあります
- 形を変えられる比較表: 行の並べ替え、拡張フィールドや自由入力からの行の追加、◎ ○ △ × での評価、セルの箇条書き化、決め手になる行の強調、商品を縦に並べる横型、列ごとのボタン文言と色、表の上の見出しに対応しています
- デザインの調整: 4つのプリセット (Neo / Outline / Glass / Bold)、枠線のカスタム (太さ / 色)、ボタンの形 (塗り / 枠 / グラデーション / 立体)、「口コミを見る」リンク、枠とボタンのアニメーション (グロー、パルス、シャイン、オーロラ)。アニメーションは動きを減らす設定の読者には自動で止まります。サイト全体でもブロック単位でも設定できます
- 拡張フィールド: 商品ごとのスペック欄を5種類 (テキスト / 数値 / 選択 / 真偽 / 日付) で追加でき、編集と CSV の往復に対応しています
- CSV の入出力: 拡張フィールドを含めて CSV で往復できます。取り込みは試し実行で確認してから確定できます
- ポチップからの移行: 既存のポチップ (CPT
pochipps) から商品とアフィリエイト URL を取り込みます。Amazon の ASIN / 楽天の商品コード / Yahoo! の seller_id + itemcode は自動で対応づけます。最後の段階は記事の中のカードを書き換えるもので、取り消せません。実行する前にサイト全体のバックアップを取ってください - 価格の自動更新: Amazon / 楽天 / Yahoo! の価格を6時間ごとに取り直します。失敗したものは間隔を空けて再試行するので、API を叩き続けることになりません
- 自分のサイトでのクリック計測 (匿名化): 購入ボタンのクリックを自サイトの REST API に記録し、どの商品・どの購入先・どの記事が押されているかを管理画面で見られます。IP と UA は HMAC-SHA256 でハッシュ化し、リファラーはホスト名だけ残し、Cookie は使いません。「計測」タブで止められます
- 紹介文の自動生成 (外部 API): 特定の提供元に依存しない形式の API を呼び出せます。API キーはご自身で設定していただきます
- クレジット表示 (任意): 既定はオフです。カードの出どころを示したい場合は、デザインタブのスイッチでカードと比較表の右下に小さなマークと “Kukuriya” の名前を出せます。リンクにはならず、これを出すかどうかで機能が変わることもありません
- 多言語対応: すべての文字列が翻訳可能です (テキストドメイン:
kukuriya)。translate.wordpress.org での翻訳への参加を歓迎します
対応している ASP (すべて同梱。使うものだけ有効にしてください)
- Amazon (Creators API、15のマーケットプレイス)
- 楽天市場 (楽天ウェブサービス 商品検索 API v2)
- Yahoo! ショッピング (ショッピング Web サービス V3 + バリューコマースのアフィリエイト URL に対応)
- もしもアフィリエイト (リンクの変換。Amazon の API キーが無い場合の代わりの経路)
- メルカリ (メルカリアンバサダー: メルカリへのリンクに afid を付けます。検索リンクと商品ごとのリンクの両方)
- 手動登録 (A8.net / afb / バリューコマースなど) (商品 API を持たない ASP 向けの汎用コネクター)
使ううえでの注意
- Amazon の Creators API はアカウントごとの資格情報が必要です (規約上、提供者が代理で取得する方式は認められていません)
- Amazon が API を使わせるのは、直近30日で適格販売が10件以上あるアカウントに限られます。満たせない場合はもしもアフィリエイト経由の経路を使えます
- 各 ASP の利用規約に従ってご利用ください
外部サービス
このプラグインは、あなたが有効にしたコネクターのショッピングサービスに対して、あなたが入力した API キーを使って通信します。資格情報を入力してコネクターを有効にするまで、どこにも何も送りません。プラグインの作者にデータが送られることは一切ありません。
Amazon Product Advertising / Creators API (Login with Amazon)
このプラグインは Amazon の商品 API に接続し、Amazon のカタログを検索して、商品名・画像・価格・在庫状況を取得します。記事に置いた商品カードを表示し、その価格を最新に保つために必要です。Amazon コネクターを有効にして、ご自身の資格情報を入力した場合にのみ使われます。
アクセストークンを取得するために、クライアント ID とクライアントシークレットを送ります (送り先は選んだマーケットプレイスに応じて api.amazon.com、api.amazon.co.jp、api.amazon.co.uk のいずれか)。そのうえで、商品の検索時・価格の定期更新時・キャッシュに無いカードの表示時に、検索キーワードまたは商品の ASIN を、そのトークンとアソシエイトタグとあわせて送ります。定期更新は登録済みの商品について6時間ごとに実行されます。SiteStripe の短縮 URL (amzn.to または amzn.asia) をエディターに貼った場合は、どの商品を指しているかを調べるために、その URL へ1回だけ通信します。
このサービスは “Amazon.com, Inc.” が提供しています: 利用規約、プライバシーポリシー。
楽天ウェブサービス (楽天市場 商品検索 API)
このプラグインは openapi.rakuten.co.jp の楽天市場 商品検索 API に接続し、楽天市場を検索して、商品名・画像・価格・在庫状況を取得します。記事に置いた商品カードを表示し、その価格を最新に保つために必要です。楽天コネクターを有効にして、ご自身のアプリ ID とアフィリエイト ID を入力した場合にのみ使われます。
商品の検索時・価格の定期更新時・キャッシュに無いカードの表示時に、アプリ ID とアフィリエイト ID を、検索キーワードまたは商品コードとあわせて送ります。定期更新は登録済みの商品について6時間ごとに実行されます。
このサービスは “Rakuten Group, Inc.” が提供しています: 利用規約、プライバシーポリシー。
Yahoo! ショッピング Web サービス
このプラグインは shopping.yahooapis.jp の Yahoo! ショッピング Web サービスに接続し、Yahoo! ショッピングを検索して、商品名・画像・価格・在庫状況を取得します。記事に置いた商品カードを表示し、その価格を最新に保つために必要です。Yahoo! コネクターを有効にして、ご自身のクライアント ID を入力した場合にのみ使われます。
商品の検索時・価格の定期更新時・キャッシュに無いカードの表示時に、クライアント ID を、検索キーワードまたは商品コードとあわせて送ります。定期更新は登録済みの商品について6時間ごとに実行されます。
このサービスは “LY Corporation” が提供しています: 利用規約、プライバシーポリシー、開発者向けガイドライン。
ipify (任意。「送信元 IP アドレスを調べる」を押したときだけ)
楽天ウェブサービスのアプリケーションを「API/バックエンドサービス」として登録すると、API を呼び出せる IP アドレスの申告を求められます。WordPress はサーバーから API を呼ぶため、登録するのはサーバーの送信元 IP アドレスです。これは自分のドメインを引いて出てくるアドレスとは別物で、サイトの前に CDN がある場合はさらに別になります。手作業で調べずに済むよう、楽天コネクタの設定にこれを調べるボタンを用意しています。
api.ipify.org へはリクエストそのもの以外を何も送りません。返ってくるのは、サーバーからの通信がどの IP アドレスに見えたか、という情報だけです。認証情報もサイトのデータも個人情報も含みません。通信が起きるのはそのボタンを押したときだけで、結果は 1日キャッシュします。押さなければ、このサービスに接続することはありません。
このサービスは「ipify」が提供しています: 利用規約とプライバシーポリシー。
ご自身で選んだ文章生成 API (任意。既定はオフ)
任意機能である「紹介文を生成」ボタンは、設定画面であなたが入力した API のエンドポイントにプロンプトを送ります。このプラグインは提供元を選びませんし、エンドポイントも API キーも既定の送り先も持っていません。設定が空のままなら何も送られず、ボタンも何もしません。
そのボタンを押したときにだけ、商品名・価格・カテゴリーを含むプロンプトと、入力した API キーを、入力したエンドポイントへ送ります。
このサービスの提供元は、あなたが設定した会社です。利用規約とプライバシーポリシーはその会社のものになります。エンドポイントとキーを入力する前にご確認ください。
ご自身のアクセス解析サービス (任意。既定はオフ)
「計測」タブでクリック計測を有効にすると、購入ボタンのクリックが、あなたやテーマが既にサイトに入れている解析サービスへ送られます。このプラグインは解析タグを同梱しませんし、追加もしません。サーバーからは何も送りません。読者のブラウザーが、既にページに読み込まれているタグを通して知らせます。
クリック時に送るもの: 商品 ID、商品名 (先頭60文字)、押された購入先、リンク先が商品ページか検索結果か、記事内の何枚目のカードか。アフィリエイト URL・IP アドレス・ユーザーエージェント・記事本文は含みません。
このサービスの提供元は、あなたが既に使っている解析会社です。利用規約とプライバシーポリシーはその会社のものになります。
Moshimo Affiliate impression pixel (only when you route a store through Moshimo)
Moshimo hands out each ad as a pair: a link that counts clicks, and a 1×1 image that counts how often the ad was shown. If you enter a Moshimo partnership ID (a_id) and choose Moshimo as the route for a store, this plugin outputs both, so that your Moshimo dashboard reports impressions and a click-through rate. Payouts and clicks are counted by the link itself and do not depend on the image.
Your visitor’s browser loads this image from i.moshimo.com when the page is shown – not only when a link is clicked. Moshimo therefore sees that request: the visitor’s IP address, browser user agent, the page they were on, and any cookies Moshimo has already set in that browser. Your server sends nothing, and the plugin adds nothing of its own to the request; the address carries only the Moshimo IDs for that advertiser. The image is output next to each purchase button, each inline product link and each comparison-table button – once per placement, the same way the Moshimo ad code does it.
If you do not enter a Moshimo a_id, or do not route a store through Moshimo, this image is never output and the address is never contacted.
This service is provided by “Moshimo Co.,Ltd.”: terms of use, privacy policy.
このプラグインが通信しない相手
もしもアフィリエイト、A8.net、afb、バリューコマース、メルカリへの対応は、入力された ID から正しいアフィリエイト URL をあなたのサーバー上で組み立てる形で行っています。これらに対してリクエストは一切行わず、データも送りません。ソースコードに出てくるこれらのアドレスは、読者がリンクを押したときにブラウザーが向かう先として書かれているだけです。
Moshimo Affiliate works the same way for the link itself; the only address contacted is the impression pixel described above.
ソースコードとビルド
管理画面とエディターのブロックは TypeScript と SCSS で書かれていて、@wordpress/scripts (webpack) でコンパイルしています。コンパイル前のソースは assets/src/ に、コンパイル後の成果物は build/ に、いずれもこのプラグインに同梱しています。package.json・webpack.config.js・tsconfig.json も同梱しています。
コンパイル後のファイルを再現するには、Node.js 20以降で次を実行します。
npm install
npm run build
第三者の JavaScript ライブラリーは同梱していません。スクリプトが実行時に使うもの (@wordpress/element、@wordpress/components など) はすべて WordPress 本体が提供するものです。
プライバシーポリシー
Kukuriya はクリック計測のために、次の匿名化したデータを wp_bcore_clicks テーブルに保存します。
- IP アドレスの HMAC-SHA256 ハッシュ (16進64文字)
- ユーザーエージェントの HMAC-SHA256 ハッシュ (16進64文字)
- リファラーのホスト名のみ (パスとクエリーは含みません)
- ブラウザー側で
sessionStorageに作られる、タブごとの内容を持たないセッション ID (任意) - 商品 ID / 投稿 ID / どの購入先のボタンか / 商品ページか検索か / カードの位置 / 日時
生の IP アドレス、生のユーザーエージェント、完全な URL を保存することはありません。Cookie は使いません。記録は90日で削除されます。記録は「計測」タブで止められます。
既定では、外部との通信はあなたが設定した ASP に対して、あなたの API キーを使って行われるものだけです。あなたが明示的に有効にしない限り、開発元 (Pifto Works) にデータが送られることはありません。
紹介文の自動生成を有効にした場合、商品情報 (商品名 / 価格 / カテゴリーなど) を含むプロンプトが、設定した外部の生成 API のエンドポイントへ送られます。送り先のエンドポイントと API キーは、どちらもあなたが選んで設定します。
任意のクリック計測 (ククリヤ > 計測。既定は無効) を有効にした場合、購入ボタンのクリックが、サイトに入っている解析サービスのタグへ送られます。送るもの: サイトに保存されている商品 ID、商品名 (60文字まで)、押された購入先のボタン、リンク先が商品ページか検索結果か、記事内の何枚目のカードか。送らないもの: アフィリエイト URL そのもの、IP アドレス、ユーザーエージェント、商品の説明文、記事本文、利用者が入力した自由記述。サーバーからは何も送信しません。ページに既に読み込まれている解析タグを通して、読者のブラウザーが知らせます。設定をオフにすると送信は即座に止まります。
スクリーンショット










ブロック
このプラグインは3個のブロックを提供します。
- Kukuriya Link Place a link you registered in Kukuriya. Articles only hold the key, so changing the link later updates every article.
- Kukuriya Comparison Insert a comparison table of up to 10 Kukuriya products.
- Kukuriya Product Insert a product card managed by Kukuriya.
インストール
基本の設定
- プラグインの「新規追加」で
Kukuriyaを検索し、インストールして有効化します - 管理メニューの「ククリヤ」を開き、「コネクター」タブで使う ASP を有効にして、それぞれの API キーを入力します (例えば楽天ならアプリ ID とアフィリエイト ID が必要です)
- 投稿や固定ページの編集画面で「商品」ブロックを追加し、検索して挿入します
管理画面のタブ
- ダッシュボード: 価格更新の実行状況と、最近のクリックの集計
- 拡張フィールド: 独自のスペック欄の追加・編集・削除
- CSV 入出力: 既存の商品データの一括移行
- 移行: ポチップからの取り込み
手動登録コネクターを使う
A8.net や afb のように商品 API を提供していない ASP は、同梱の手動登録コネクターで URL のテンプレートを登録すれば扱えます。
FAQ
-
無料ですか ?
-
はい。公式コネクターを含め、このプラグインのすべての機能が無料で、GPL v2 以降のオープンソースとして完全に動きます。ライセンスで止めている機能はありません。
別売のアドオン (Kukuriya Pro。piftoworks.com で配布) を入れると、セール表示と一括編集が使えます。必須ではありませんし、そのコードはこのプラグインには一切含まれていません。
-
API キーは安全に保存されますか ?
-
はい。すべての API キーは AES-256-GCM で暗号化し、
wp-config.phpのAUTH_KEYから導いた鍵で保護しています。コネクター ID ごとに鍵を分けているので、データベースを直接見られても復号できません。 -
ポチップから移行できますか ?
-
はい。管理画面の「移行」タブからポチップのデータ (カスタム投稿タイプ
pochipps) を取り込めます。主となる ASP は Amazon の ASIN / 楽天の商品コード / Yahoo! のseller_id + itemcodeの順で自動的に決まり、各投稿がオファーを持つ Kukuriya の商品に変換されます。確定する前に、試し実行で件数とエラーを確認できます。始める前にサイト全体のバックアップを取ってください。移行は 3段階で進み、最後の段階は記事の中のポチップのカードを Kukuriya のカードに置き換えます。この段階に取り消しはありません。元に戻すには、記事をバックアップから復元することになります。どの段階も先にドライランで試せますし、結果を確かめる間は 1記事だけに絞って実行できるので、いきなりサイト全体に流す必要はありません。最後の段階を全記事に実行するときは、バックアップを取ったことの確認も求められます。
汎用の CSV 取り込みにも対応しているので、ポチップ以外のツールからの移行にも対応できます。
-
第三者にデータを送りますか ?
-
プラグインの開発元 (Pifto Works) にデータが送られることは一切ありません。商品 API の呼び出しは、あなたが設定した API キーを使って各 ASP へ直接行われます。何を・誰に・いつ送るかは、上の「外部サービス」をご確認ください。
-
クリック計測は読者のプライバシーを守りますか ?
-
クリックはあなたのデータベース (
wp_bcore_clicksテーブル) にだけ記録され、開発元には何も送られません。IP アドレスとユーザーエージェントは HMAC-SHA256 のハッシュ (AUTH_KEYから作ったソルト付き) として保存され、元の値には戻せません。リファラーはホスト名だけを残します (パスとクエリーは捨てます)。Cookie は使いません。タブごとのセッション ID をsessionStorageに置き、タブを閉じると消えます。そのため Cookie 同意の管理は不要です。記録は90日で削除されます。既定では有効で、「計測」タブで止められます。 -
削除するとデータはどうなりますか ?
-
既定では、5つの
wp_bcore_*テーブル (credentials/offers/clicks/custom_fields_def/custom_fields_value) と、関連するオプションおよび定期実行の予定が削除されます。残したい場合は、削除する前にオプションbcore_keep_data_on_uninstallをtrueにしてください。登録した商品と自作リンクは通常の投稿 (カスタム投稿タイプ
bcore_product/bcore_link) なので、WordPress がプラグイン削除時に投稿を残すのと同じように、そのまま残ります。完全に消したい場合はデータベースから削除してください。 -
マルチサイトで動きますか ?
-
技術的には動きますが、このバージョンはサイトごとの運用を想定しています。ネットワーク全体での集計やサイトをまたぐ管理には対応していません。
-
商品データのキャッシュはありますか ?
-
はい。各コネクターの API 応答は Transient API で短期間キャッシュされます。価格の定期更新はキャッシュとは別に
wp_bcore_offersテーブルへ保存するので、表示側は常に速いままです。 -
新しい ASP のコネクターを自分で書けますか ?
-
はい。
PiftoWorks\Kukuriya\Contracts\ConnectorInterfaceを実装した独立した WordPress プラグインとして配布できます。kukuriya_register_connectorsフックで本体に登録すれば、本体の検索 UI・価格の定期更新・クリック計測などの仕組みをそのまま使えます。 -
クラシックエディターで使えますか ?
-
[bcore_product]と[bcore_comparison]のショートコードを使えば、クラシックエディターでも商品と比較表を表示できます。ブロックエディターの検索 UI は使えないので、商品データを CSV で取り込んでから post_id で参照する流れになります。
評価
このプラグインにはレビューがありません。
貢献者と開発者
変更履歴
0.14.0
-
Added: when a store is routed through Moshimo Affiliate, Kukuriya now outputs Moshimo’s impression tag alongside the link. Moshimo hands out each ad as a pair – a link that counts clicks, and a 1×1 image that counts how often the ad was shown – and until now only the link was output. The impression count in your Moshimo dashboard therefore stayed at zero and the click-through rate could not be read. Commissions and clicks were never affected; they are counted by the link itself.
-
Added: the tag is output once per placement – next to each purchase button, each inline product link and each comparison-table button – and only if you have entered a Moshimo partnership ID (a_id) and chosen Moshimo as the route for that store. Your visitors’ browsers then load an image from
i.moshimo.comwhenever such a page is shown. The “External services” section above describes exactly what Moshimo receives. -
Changed: the Moshimo connector asks for three values instead of sixteen. The p_id, pc_id and pl_id that Moshimo issues per advertiser are the same for every site and every partnership, so the plugin now holds them and asks only for the a_id of each of the three advertisers. Values you saved in an earlier version are still read, and still take precedence.
-
Changed: the Yahoo! connector links to its own setup guide, which walks through the Yahoo! Developer Network and the ValueCommerce registrations separately. It used to point at the index of the guides.
-
Fixed: the “saved” banner in the settings screens disappears on its own. It used to stay until you saved again or touched a field, covering the top of the page – the admin bar included – for as long as you left it alone. All six screens are affected.
-
Fixed: the cross in a comparison table is the same size as the circles beside it. The multiplication sign used until now is a Latin-width character, so at the same font size it looked smaller than the full-width circles – most noticeably in Yu Gothic, the usual default on Windows.
0.13.9
-
Added: the product list now shows, for each store, whether its button opens the product page or only searches for the name. Until now the list showed a number, and finding the gaps meant opening products one at a time.
-
Added: those store labels are buttons. Press one and Kukuriya searches that store for the product, so you can fill a gap without leaving the list.
-
Added: a filter that leaves only the products still searching at a store you pick, so you can work through the gaps one store at a time.
-
Fixed: the new column no longer lists a store whose button does not appear on the site. Mercari can only be linked directly through a URL override, so without an ambassador ID its button is never rendered, yet the list described where that button would go.
-
Fixed: error messages from the connectors are translatable. Until now a missing Rakuten application ID, an Amazon rate limit and similar problems were shown in English regardless of the site language.
-
Fixed: the product list no longer spills past the panel on narrow screens. The table scrolls sideways instead.
-
Fixed: the tabs across the top wrap onto a second line on narrow screens. They used to be squeezed into one row until each label broke into a vertical stack of single characters.
0.13.8
-
Added: a button in the Rakuten connector settings that looks up your server’s outbound IP address. Rakuten asks for it when you register an application as an “API / backend service”, and it is not the address your own domain resolves to. The value can be copied with a click, and nothing is sent anywhere until you press the button.
-
Added: an optional expiry date for your Rakuten application. Rakuten does not tell you when the key is about to stop working, so the settings screen starts reminding you 30 days ahead. If a call does fail, the connection test now names both of the causes that produce the same error and how to tell them apart.
-
Added: links from each connector’s settings to the setup guide for that service, and to the terms of the company providing the API (Amazon / Rakuten / Yahoo!).
-
Changed: “no affiliate ID is set” is no longer folded into the green success message of a connection test. It is shown as a warning of its own, and it appears as soon as you save the credentials rather than only after you run a test.
-
Changed: connector settings are grouped under headings that separate the keys used to fetch product data from the keys used to earn a commission.
-
Changed: the migration screen and the FAQ now say plainly that the last step rewrites the cards inside your posts and cannot be undone, and that a full backup is the way back.
0.13.7
- Changed: the hint that appears when a comparison table scrolls sideways is now a light chip with dark text instead of a dark bar. It sits over the buttons in the last row, and the dark version read as though it were covering them up.
0.13.6
- Changed: the “scroll sideways” hint on a comparison table is shorter, and the buttons underneath show through it. The old line ran long enough to sit on top of them.
0.13.5
- Changed: the Amazon button is a brighter orange out of the box. The old one read as brown next to the other stores. Sites that picked their own Amazon colour under Design are unaffected.
0.13.4
- Fixed: the store buttons in a comparison table ran together into one solid bar. Each button was overflowing its column by the width of its own padding on themes that do not set border-box sizing for you, Twenty Twenty-Five among them. Most themes do set it, and those were never affected.
- Fixed: a column label such as “Top pick” covered the product name next to it once a table had several columns. A table that uses a label now keeps room for it above every heading, so the names still line up with each other.
0.13.3
- Fixed: the sample card on the Design screen carried a real manufacturer’s name as its brand line. It is a made-up name now. Nothing on your site changes — the name only ever appeared in that preview, before you pick a product.
0.13.2
- Changed: cards and buttons have much squarer corners out of the box. The 14px radius made every card look like a pill, which fought with most themes. Sites that set their own radius under Design are unaffected.
- Changed: a one-line (compact) card is now one link the whole way across. The row used to be dead except for the round arrow on the right, and nothing said so.
- Changed: the column headings in a comparison table are the same size as the product names below them. They were smaller, which read as though the headings mattered less than the rows.
- Fixed: the store buttons in a comparison table disappeared. The link that rewrites inline product mentions was also rewriting the buttons the table had already drawn, and stripped the class that made them look like buttons.
- Fixed: a product name in a comparison table was drawn in your theme’s link colour and weight, so it looked like body text that happened to be linked instead of the name of the thing in that row.
- Fixed: on a phone, the store name inside a button (Amazon, Rakuten, and so on) was set thin and narrow while the button around it stayed large.
0.13.1
- Fixed: cards no longer turn dark on their own. Following dark mode was on by default, but the browser setting it follows has nothing to do with your theme, so a card could go black in the middle of a light page. It is off by default now, and the setting says what it actually follows. Sites that already saved a choice keep it; turn it back on under Design if your theme follows the browser too.
0.13.0
- Changed: every on/off control in the admin screens is now a two-part “Off | On” switch, with the chosen side filled in. The round sliding knob did not say which side was on, and the pale colour made it worse.
- Changed: a product opens in a window of its own instead of unfolding underneath the list. With a full page of products the editor used to sit far below the fold, so editing meant scrolling past fifty rows first.
- Changed: that window is now divided into sections you open one at a time — card overrides, micro-copy, link URLs, custom buttons, sale, posts using it, and store buttons — all closed to begin with. Roughly forty fields used to stand in one flat column. Sections that can be counted show how many things are set in them.
- Changed: the store section was rebuilt. It now lists every store a product can be fetched from, one row each, and says where that store’s button goes: straight to the product page, or to a search for the product name. Only the stores that had been registered were shown before, which made a card with four buttons look as though it had one.
- Changed: the comparison table list is one card per table, with the post title on a line of its own. As a seven-column table the product column swallowed the width and the rest collapsed into single letters stacked vertically.
- Changed: product lists take a page number, and have First and Last buttons, so a site with thousands of products is not paged through one screen at a time.
- Changed: sliders are thicker, with a grab handle you can actually hit — a 3px line with a 14px dot was hard to hold with a mouse and worse on a touch screen.
- Fixed: the product image on a card sat above the middle of the row, so it crowded any label above it and left a gap below. It is centred now.
- Fixed: the icon beside “See reviews” was an empty outline. It has the three dots inside it that make it read as a speech bubble.
- Fixed: the card preview on a product’s screen ignored the site-wide design settings, so button colours there did not match the front end.
- Fixed: rows that put a text field next to a button had the two at different heights, and the URL field was too narrow to work in.
- Fixed: pasting a product URL and pressing the button appeared to do nothing when the address was not from a supported store. The answer now appears next to the field — which store was added, or why it was refused — instead of at the top of the page where it went unseen.
- Fixed: Japanese. Everything in the admin screens is translated, including the messages the REST API sends back. A handful of strings had been left in English.
0.12.0
- New: a price now has a shelf life. A price older than 24 hours is no longer shown as current, and the card falls back to another store whose price is still fresh. Amazon drops API access whenever a site falls under ten qualifying sales in the trailing 30 days, and until now the last price fetched stayed on the page for good.
- New: products whose link has gone are marked in the product list and can be filtered out of it. A dead button becomes a search link for the same product rather than disappearing, so the card keeps its shape.
- New: a product can be tied to the same item at another store by searching for it, instead of pasting the URL by hand. Amazon, Rakuten and Yahoo! Shopping.
- New: a product can be repointed at a different code at the same store, keeping the same product. Posts that already reference it follow along; nothing has to be edited article by article.
- New: the product list shows how many posts use each product, and a product’s own screen lists those posts with a link to each editor.
- New: a Refresh button on a product fetches its price and every one of its offers again, without waiting for the scheduled run.
- New: product categories. Filter the product list by one, see them beside the product name, and add or remove them from the product’s own screen.
- New: a card’s image can be replaced with one from the media library. Remove it and the store’s own image comes back.
- Changed: the card preview on a product’s screen is now clickable, the same as the front end. Affiliate conversion is deliberately not applied — clicking your own links from your own admin screen is not something the ASPs welcome.
0.11.0
- Fixed: cards that Pochipp kept inside the block itself, rather than in its product list, were left behind when posts were rewritten — and would have vanished the moment Pochipp was switched off. They are now turned into products as the posts are rewritten. The same product used in several posts becomes one product, and a product you have already imported is reused rather than overwritten.
- Added: a card with no product in it is now left in the post untouched, with a line saying why, instead of being passed over in silence.
- Added: the rewrite step can be told to leave those cards alone (the toggle under Step 3).
0.10.0
- Added: an inline product link can now be aimed at one store (Amazon, Rakuten, and so on) instead of the product’s own. The destination is still worked out when the page is drawn, and falls back to the product’s own link if that store cannot be reached.
- Added: add-ons can place their own inline product links through the new
kukuriya_inline_link_contentfilter. The destination, the affiliate conversion and the click attributes are handled here, so an add-on only marks the text. - New: a Comparison tables screen lists every comparison table on the site — the post, the products in it, the layout and the heading — and takes you to the post that holds it.
- New: the dashboard lists every post that carries a card, a comparison table, a custom link or an inline product link, with a count of each. Revisions are not counted.
- New: a product’s edit screen shows the posts that use it, so you can see what a change will touch.
- Fixed: the card preview on a product’s edit screen now draws custom buttons (an official site, for example) with their own label and colour, as the published card does.
- New: change every inline link to one product at once, under Links. Point them at another product, send them to a different store, or take the links off and leave the words. It rewrites the posts, so it runs as a dry run until you say otherwise, and you can try it on one post first.
0.9.0
- New: comparison tables are now built from a list of rows you control. Reorder the built-in rows (image, name, price, rating, button), add your own from a custom field or by typing the values, and drop a row you do not need.
- New: mark a cell with ◎ ○ △ ×. The symbol is drawn large and pale; when the cell also has a value, the value sits on top of the symbol. Screen readers hear a word, not the symbol.
- New: write one item per line and the cell becomes a list. Start a line with
+,-or~to prefix it with ○, × or △. - New: put the products down the side instead of across the top, for tables with two or three products and many rows.
- New: a heading above the table, read before the table by screen readers.
- New: each column can have its own button text, button colour and label colour.
- New: a short line of copy can sit above a comparison table, the same way it can above a card.
- Changed: ratings now draw five stars and fill them by the share of the maximum, so 4.5 out of 5 reads at a glance.
- Changed: comparison buttons are larger (about 41px tall) and fill the column, in line with Apple’s and Google’s touch target guidance. The default store colours are a step brighter while keeping white text readable.
- Changed: the product photo in a comparison table is now a link, like the photo on a card.
- Changed: drag the table sideways with the mouse to scroll it. Shift and the wheel still work, and the hint now says so.
- Changed: adding products to a comparison table no longer closes the picker each time. Products already in the table are marked as added.
- Changed: public hook names are now all
kukuriya_*. If you used one of the oldbcore_*orbcore/*names, rename it; the old names no longer fire. - Changed: DTOs can be built from an array with
from_array(). Positional constructors are internal and may gain arguments. - Changed: the custom fields REST route is now
/kukuriya/v1/custom-fields. - Removed: the short link redirect and its post type, and two post types that were registered but never used.
- Added: click measurement now records to your own site as well, with the store, link type and position of the button. Addresses and user agents are hashed, no cookie is set, and rows are pruned after 90 days. It can be turned off under Measurement.
- New: select some text in the editor and turn it into a product link from the toolbar. The selected words become the search term. Only the product is saved in the post — the destination is worked out each time the page is drawn, so changing where your links point does not mean editing posts.
0.8.0
- Fixed: the animated frame and button effects (glow, pulse, shine, aurora, and the Shine sweep / Glow pulse button styles) could be selected but had no visible result. Their styles were still packaged with the paid add-on. The styles now ship here, which is what 0.7.0 already described.
- Changed: tabs added by add-ons now render their own screen. Previously an add-on could add a tab, but opening it showed the dashboard.
- Added: daily click totals can now be read per day, per store and per post. Nothing is sent anywhere; add-ons and reports use it locally.
- Changed: affiliate code pasted into a custom link is now filtered through an allow list of tags and attributes when it is printed, in addition to the existing permission check when it is saved. Link and banner code from Moshimo, A8.net, afb, ValueCommerce, Rakuten and Amazon is unaffected, including protocol-relative addresses and 1×1 impression images. Code that relies on a script tag is refused when you save it, with the tag named, rather than being dropped silently at display time. A site that needs such code can extend the allow list with the
kukuriya_link_allowed_htmlfilter. - Changed: the visitor’s address, user agent and referrer are now sanitized as they are read, rather than only being hashed before storage.
- Changed: the compatibility version is declared in this readme only. It was previously repeated in the plugin header, where a different value could have taken precedence.
- Fixed: a product registered from the block editor, by search or by pasting a URL, had no store buttons on its card. The product was saved but its offer was not, and the buttons are built from the offer. Products imported from Pochipp and products added from the admin screen were not affected.
- Added: the product block now previews the finished card in the editor instead of a grey box. Use the toolbar to swap the product or return to the search form.
- Added: the product picker now opens on the products you have already saved, so a product can be reused in another post without searching for it again. The old search is still there on the second tab.
- Changed: the Simple card template now shows the store buttons, like the other templates. It is the default for the block, and a card with nothing to click on is not much use. Its layout is unchanged otherwise: still no brand or rating.
0.7.0
- Renamed from the previous working title to Kukuriya (ククリヤ). The text domain and REST namespace changed accordingly.
- Changed: frame and button animation effects (glow, pulse, shine, aurora) are now part of this plugin and work for everyone. They were previously reserved for the paid add-on.
- Removed: the “Cloud integration” tab and its code. The service it talked to is not in operation, so the plugin no longer ships an endpoint it cannot reach.
- Added: the TypeScript / SCSS sources for the bundled admin and block scripts, plus the build configuration, are now included in the plugin so the compiled files can be reproduced.
- Added: an “External services” section in this readme describing every outbound request, what triggers it, and the terms and privacy policy of each service.
0.6.0
- New: Links. Register text links, banners and ASP-issued code once, place them in articles with a stable key, and change them later from one screen. Articles only hold the key, so changing a link updates every article at once.
- New: Import links already written in articles (scan, dry run, then rewrite). ASP tracking pixels are kept together with their link.
- New: Convert every link reference back to plain HTML before uninstalling, leaving no trace of the plugin in your content.
- New: Links CSV export and import, for moving links between sites by key.
- New (Pro add-on): end dates with automatic pausing, replacement links, and bulk find-and-replace inside links.
- Changed: translations are no longer bundled. Japanese is delivered through translate.wordpress.org.
0.5.0
First public release on WordPress.org.
- Price refresh now updates the price shown on product cards (not only the Universal Link offers), limits itself to stores that can actually refresh, waits on the local rate gate instead of failing, and backs off on repeated failures
- Database schema is applied on plugin update as well as on activation
- Rakuten / Yahoo! links that are already affiliate links are no longer wrapped twice; the connection test and the route settings now warn when an affiliate ID is missing
- CSV:
offerscolumn for Universal Link round-trips, partial updates that keep ratings / extra images, unknownsource_idis rejected, duplicate rows and unreadable prices are reported, Shift_JIS files are detected before upload - Pochipp migration: rewrites
wp:pochipp/linkboxblocks and[pochipp id]shortcodes in posts, copies API keys / affiliate IDs, runs in batches, keeps your edits on re-run, carries custom buttons over, ignores trashed posts - Measurement tab shows whether the Analytics CORE tag is detected on the site
- Accessibility: button text colour is chosen by WCAG contrast, product images get a meaningful alt, ratings are announced to screen readers, outline buttons stay readable in dark mode
- Comparison table shows the “as of” note next to prices and respects the hidden-price setting
- Block editor warns when the referenced product has been deleted; wide / full alignment now works
- Click log is pruned after 90 days (filterable); description generation is rate-limited per user
0.5.0-beta.7
- Fix: the admin stylesheet is now cache-busted by its own file time, so CSS-only updates (like the form spacing fix) reliably reach the browser without a hard refresh
0.5.0-beta.6
- Admin UI: consistent form spacing across all tabs so each field’s help text clearly belongs to its own control (help hugs the control above, larger gap between controls)
0.5.0-beta.5
- New “move the on-sale store to the front” option (Pro, off by default): while a sale is showing, that store’s button is placed first to boost clicks. Campaigns get a “target store” field; the automatic Amazon badge targets Amazon
0.5.0-beta.4
- Sale campaigns can now recur on days of the month (e.g. Rakuten “5 & 0 days”, Yahoo! “5 days”) — one-click built-in presets included. The sale shows automatically on those days every month with no date entry, and works on cached pages
0.5.0-beta.3
- New automatic sale badge (Pro): shows a sale badge when a store’s API reports a discount off its list price (Amazon, via the reference price it provides). Only the ASP-provided list price is used, shown live with the “as of” timestamp — no price history is stored, so it stays within each store’s API terms
0.5.0-beta.2
- The product editor preview now shows the sale (ribbon / badge / countdown / coupon) as it will appear on the card
- Apply a sale campaign to many products at once from the Products list (select rows, pick a campaign, apply — or remove the sale from the selection)
0.5.0-beta.1
- New Sale display (Pro): show a sale badge or corner ribbon, a live countdown, and a tap-to-copy coupon on product cards, with a start/end schedule that switches automatically — even on cached pages
- New Sale tab: define reusable sale campaigns (label, schedule, badge, coupon) once and apply them to products from the Products tab; products can also override any field or run a one-off sale
- The automatic strike-through list price and %OFF badge stay free; the sale campaign layer is Pro
0.4.0-beta.5
-
The product editor preview is now sticky and scales to fit while you scroll through the settings, matching the Design tab
-
New Products admin tab: browse and search saved products, rename their display name, and manage per-product card overrides (template / price emphasis / review links). Overrides sit between the site-wide design settings and block-level overrides
- Add offers from other stores by pasting a product page URL — the store’s button switches from a search link to a direct product link
- Remove offers per product
- Full per-product design overrides — every design setting (preset, colors, button style, frame & effects, layout) can now be overridden per product, with a live preview using the product’s real data
- Per-store link URL overrides and up to 5 custom buttons (label / URL / color) per product, output without affiliate conversion
- Editable offer product-page URLs
- The design form is now a single shared component, so future design options appear in both the Design tab and the product editor automatically
0.3.0-beta.7
- New “Frame & effects” design settings: give cards a custom frame (width 0-8px, any color) on the Neo / Outline / Glass presets. Bold keeps its signature thick frame
- New frame effects (Pro): Glow (soft breathing light), Pulse (slow blink), Shine (light sweep) and Aurora (rotating gradient frame). All effects pause for visitors who prefer reduced motion
- New button styles: Solid fill / Outlined / Glossy gradient / Raised (3D press) for everyone, plus animated Shine sweep and Glow pulse in Pro. Set site-wide or per block
- One-tap recommended frame recipes in the Design tab
- Review link: an optional “See reviews” link with a speech-bubble icon between the price and the purchase buttons (Amazon via its review page URL, Yahoo! Shopping when the API provides one) — free for everyone
- Click measurement now sends a fixed event name with structured properties (Phase B of the analytics integration); the temporary encoded event names are gone
0.2.0-beta.1
- All 5 official connectors (Amazon / Rakuten Ichiba / Yahoo! Shopping / Moshimo / manual entry) are now built into the core plugin — no separate connector plugins to install. Each connector can be toggled on or off in the Connectors tab
- New Connectors admin tab: enter and test each ASP’s API credentials from an auto-generated settings form
- New monetization routes: choose which connector generates the affiliate link for each source (for example, route Rakuten product links through Moshimo Affiliate)
- Moshimo Affiliate settings now hold a separate set of IDs per merchant (Rakuten Ichiba / Yahoo! Shopping / Amazon), because Moshimo issues different IDs for each partnership — a Rakuten set would not track conversions on Amazon. Paste one ad link per merchant to fill each set, and each source only offers Moshimo as a route once its own set is filled in
- Affiliate URLs are now generated at render time, so changing a route updates existing cards without re-registering products
- Third-party / add-on connectors can still be installed as separate plugins via the
kukuriya_register_connectorshook
0.1.0-beta.1
- First beta release
- 5 MVP connectors: Amazon (Creators API) / Rakuten Ichiba / Yahoo! Shopping / Moshimo / manual entry (Generic)
- Block Editor product block + comparison table block
- One-action product registration by URL paste (Rakuten / Amazon / Yahoo product page URLs, plus Amazon SiteStripe short URLs)
- 4 built-in card templates (Simple / Card / Compact / Pochipp compatible)
- Universal Link foundation (
wp_bcore_offerstable) - WP-Cron automatic price refresh (every 6 hours, with manual trigger)
- Click tracking (anonymized, short URLs, Beacon)
- Automatic product description service (vendor-neutral Messages API)
- Custom fields (text / number / select / boolean / date)
- CSV import / export …
