Title: Kukuriya
Author: piftoworks
Published: <strong>14 Sentyabr 2026</strong>
Last modified: 29 Sentyabr 2026

---

Qoşmaları axtar

![](https://ps.w.org/kukuriya/assets/banner-772x250.png?rev=3694852)

![](https://ps.w.org/kukuriya/assets/icon-256x256.png?rev=3694852)

# Kukuriya

 By [piftoworks](https://profiles.wordpress.org/piftoworks/)

[Download](https://downloads.wordpress.org/plugin/kukuriya.0.15.0.zip)

 * [Details](https://az.wordpress.org/plugins/kukuriya/#description)
 * [Reviews](https://az.wordpress.org/plugins/kukuriya/#reviews)
 *  [Installation](https://az.wordpress.org/plugins/kukuriya/#installation)
 * [Development](https://az.wordpress.org/plugins/kukuriya/#developers)

 [Dəstək](https://wordpress.org/support/plugin/kukuriya/)

## Description

**Kukuriya** is a WordPress plugin that bundles product links from multiple affiliate
service providers (ASPs) into a single “product” and manages them in one place. 
It is fully integrated with the Block Editor, covering everything from product search
to card rendering, comparison tables, and automatic price updates.

It is aimed at people migrating from Pochipp, affiliate marketers struggling with
the Amazon API entry barrier, and anyone who wants to manage multiple ASPs across
one site.

#### Key features

 * **Universal Link**: one product = a set of offers from multiple ASPs. A data 
   model that lets you serve the best link depending on user, stock, and price
 * **Connector architecture**: every ASP integration is an isolated connector module.
   Five official connectors ship built in and can be toggled per site, and third-
   party connectors can be added as separate plugins via a public hook
 * **Modern Block Editor**: product search modal, block insertion, and attribute
   editing UI built with TypeScript + React 18 + `@wordpress/scripts`
 * **One-action registration by URL paste**: paste a Rakuten or Amazon product page
   URL into the Block Editor to identify, fetch, and register the product CPT automatically.
   SiteStripe short URLs (`amzn.to` / `amzn.asia`) are expanded automatically. Also
   useful as a rescue path for products that do not appear in search results
 * **5 built-in card templates**: Simple / Card / Compact / Pochipp compatible (
   visual parity for migrating users), plus a comparison table block for up to 10
   products
 * **Comparison tables you can actually shape**: reorder the rows, add your own 
   from custom fields or free text, mark cells with ◎ ○ △ ×, turn a cell into a 
   bullet list, highlight the one that decides it, put the products down the side
   instead of across the top, give each column its own button text and colour, and
   add a heading above the table
 * **Design controls**: 4 visual presets (Neo / Outline / Glass / Bold), custom 
   card frames (width / color), button styles (solid / outlined / gradient / raised),
   an optional “See reviews” link, and animated frame and button effects (glow, 
   pulse, shine, aurora) that pause automatically for visitors who prefer reduced
   motion — configurable site-wide or per block
 * **Custom fields**: add per-product spec fields in 5 types (text / number / select/
   boolean / date) with editing and CSV round-trip support
 * **CSV import / export**: full CSV round-trip including custom fields, with dry-
   run validation
 * **Pochipp migration**: import products and affiliate URLs from an existing Pochipp
   install (CPT `pochipps`). Amazon ASIN / Rakuten item code / Yahoo seller_id +
   itemcode are mapped automatically. The last step **rewrites the cards inside 
   your posts and cannot be undone**, so take a full site backup before you run 
   it
 * **Automatic price refresh cron**: re-fetches Amazon / Rakuten / Yahoo prices 
   every 6 hours. Failed items are retried with interval protection for stable operation
 * **Click tracking on your own site (anonymized)**: a small script reports purchase-
   button clicks to your site’s own REST API and the dashboard shows which products,
   stores and posts get clicked. IP / UA are hashed with HMAC-SHA256, referrers 
   keep the host only, no cookies. Can be switched off under “Measurement”
 * **Automatic product description generation (external API)**: a Composer Service
   that can call a vendor-neutral Messages-style API. Users configure their own 
   API key
 * **Optional credit**: off by default. If you want to show where the cards come
   from, a switch under Design adds a small mark and the name “Kukuriya” at the 
   bottom right of cards and comparison tables. It is never a link, and nothing 
   about the plugin depends on it
 * **Internationalization**: every string is translatable (text domain: `kukuriya`).
   Translation contributions via translate.wordpress.org are welcome

#### Supported ASPs (all built in — enable the ones you use)

 * **Amazon** (Creators API, 15 marketplaces)
 * **Rakuten Ichiba** (Rakuten IchibaItem Search API v2)
 * **Yahoo! Shopping** (Shopping Web Service V3 + ValueCommerce affiliate URL support)
 * **Moshimo Affiliate** (link conversion; an alternative route without Amazon keys)
 * **Mercari** (Mercari Ambassador: your afid is appended to Mercari links — search
   links and per-product links)
 * **Manual entry (A8.net / afb / ValueCommerce, etc.)** (a generic connector for
   ASPs without a product API)

#### Usage notes

 * The Amazon Creators API requires per-account credentials (a central proxy model
   is not permitted under its licence)
 * Amazon grants API access only to accounts with at least 10 qualifying sales in
   the trailing 30 days. The Moshimo Affiliate route can be used as an alternative
 * Please follow the terms of service of each ASP

### External services

This plugin talks to the shopping services whose connectors you turn on, using API
keys that you supply. Nothing is sent anywhere until you enter credentials and enable
a connector, and no data is ever sent to the plugin author.

#### Amazon Product Advertising / Creators API (Login with Amazon)

This plugin connects to Amazon’s product API to search Amazon’s catalogue and to
obtain a product’s title, image, price and availability. It is needed to show the
product cards you place in your posts and to keep their prices current. It is used
only if you turn on the Amazon connector and enter your own credentials.

It sends your Client ID and Client Secret to obtain an access token (`api.amazon.
com`, `api.amazon.co.jp` or `api.amazon.co.uk`, depending on the marketplace you
choose), and then, on each product search, scheduled price refresh and card render
that misses the cache, it sends the search keyword or product ASIN together with
that token and your Associates tag. The scheduled refresh runs every 6 hours for
products you have registered. If you paste a SiteStripe short URL (`amzn.to` or `
amzn.asia`) into the editor, your site also makes one request to that address to
find out which product it points to.

This service is provided by “Amazon.com, Inc.”: [terms of use](https://affiliate.amazon.co.jp/help/operating/agreement),
[privacy policy](https://www.amazon.co.jp/gp/help/customer/display.html?nodeId=GX7NJQ4ZB8MHFRNJ).

#### Rakuten Web Service (Rakuten Ichiba Item Search API)

This plugin connects to the Rakuten Ichiba Item Search API at `openapi.rakuten.co.
jp` to search Rakuten Ichiba and to obtain a product’s title, image, price and availability.
It is needed to show the product cards you place in your posts and to keep their
prices current. It is used only if you turn on the Rakuten connector and enter your
own Application ID and Affiliate ID.

It sends your Application ID and Affiliate ID together with the search keyword or
item code, on each product search, scheduled price refresh and card render that 
misses the cache. The scheduled refresh runs every 6 hours for products you have
registered.

This service is provided by “Rakuten Group, Inc.”: [terms of use](https://webservice.rakuten.co.jp/guide/rule),
[privacy policy](https://privacy.rakuten.co.jp/).

#### Yahoo! Shopping Web Service

This plugin connects to the Yahoo! Shopping Web Service at `shopping.yahooapis.jp`
to search Yahoo! Shopping and to obtain a product’s title, image, price and availability.
It is needed to show the product cards you place in your posts and to keep their
prices current. It is used only if you turn on the Yahoo connector and enter your
own Client ID.

It sends your Client ID together with the search keyword or item code, on each product
search, scheduled price refresh and card render that misses the cache. The scheduled
refresh runs every 6 hours for products you have registered.

This service is provided by “LY Corporation”: [terms of use](https://www.lycorp.co.jp/ja/company/terms/),
[privacy policy](https://www.lycorp.co.jp/ja/company/privacypolicy/), [developer guidelines](https://developer.yahoo.co.jp/guideline/).

#### ipify (optional, only when you press “Find my outbound IP address”)

When you register a Rakuten Web Service application as an “API / backend service”,
Rakuten asks you to list the IP addresses allowed to call the API. WordPress calls
the API from your server, so the address to register is your server’s outbound IP–
which is not the address you get by looking up your own domain, and is different
again when a CDN sits in front of your site. To save you having to find it by hand,
the Rakuten connector settings offer a button that looks it up.

It sends nothing but the request itself to `api.ipify.org`, which replies with the
IP address your server appeared to come from. No credentials, no site data and no
personal data are included. **The request happens only when you press that button**,
and the answer is cached for a day. If you never press it, this service is never
contacted.

This service is provided by “ipify”: [terms of use and privacy policy](https://www.ipify.org/).

#### A text generation API of your choosing (optional, off by default)

The optional “generate a product description” button sends a prompt to an API endpoint
that **you** enter in the settings. The plugin does not pick a provider for you 
and ships no endpoint, no key and no default address of its own. If you leave the
setting empty, nothing is ever sent and the button does nothing.

It sends, only when you press that button, a prompt containing the product’s title,
price and categories, plus the API key you entered, to the endpoint you entered.

This service is provided by whichever company you configure. Its terms of use and
privacy policy are that company’s own. Please read them before entering an endpoint
and a key.

#### Your analytics service (optional, off by default)

If you turn on click measurement under “Measurement”, clicks on purchase buttons
are reported to the analytics service whose tag is already installed on your site
by you or your theme. This plugin bundles no analytics tag and adds none; your server
sends nothing. The reader’s browser reports the click through that existing tag.

It sends, on a click — the product ID, the product name (first 60 characters), which
store was clicked, whether the link went to a product page or to search results,
and which card in the article it was. The affiliate URL, IP addresses, user agents
and post content are never included.

This service is provided by whichever analytics company you already use. Its terms
of use and privacy policy are that company’s own.

#### 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](https://af.moshimo.com/af/www/terms/shop),
[privacy policy](https://www.moshimo.co.jp/company/privacy).

#### Services this plugin does NOT contact

A8.net, afb, ValueCommerce and Mercari are supported by building the correct affiliate
URL on your own server, from the IDs you enter. The plugin makes no request to any
of them, and sends them no data. Their addresses appear in the source code only 
as the destination your visitors’ own browsers go to when they click a link.

Moshimo Affiliate works the same way for the link itself; the only address contacted
is the impression pixel described above.

### Source code and build

The admin screens and editor blocks are written in TypeScript and SCSS and compiled
with `@wordpress/scripts` (webpack). The uncompiled sources are included in this
plugin under `assets/src/`, next to the compiled output in `build/`, together with`
package.json`, `webpack.config.js` and `tsconfig.json`.

To reproduce the compiled files, with Node.js 20 or later:

    ```
    npm install
    npm run build
    ```

No third-party JavaScript libraries are bundled. Everything the scripts use at runtime(`@
wordpress/element`, `@wordpress/components`, and so on) is provided by WordPress
itself.

### Privacy Policy

Kukuriya stores the following anonymized data for click tracking (in the `wp_bcore_clicks`
table):

 * HMAC-SHA256 hash of the IP address (64 hex chars)
 * HMAC-SHA256 hash of the User-Agent (64 hex chars)
 * Referrer host name only (no path / query)
 * An opaque per-tab session ID generated client-side in `sessionStorage` (optional)
 * Product ID / post ID / which store button / product page or search / card position/
   timestamp

Raw IPs, raw User-Agents, and full URLs are never stored. No cookies are used. Rows
are deleted after 90 days. Recording can be switched off under “Measurement”.

By default, external communication happens only with the ASPs you configured, using
your own API keys. No data is sent to the plugin developer (Pifto Works) unless 
you explicitly enable it.

If you enable the automatic product description feature, prompts containing product
information (title / price / categories, etc.) are sent to the external generation
API endpoint you configured. You choose and configure both the destination endpoint
and the API key.

If you enable the opt-in click measurement feature (Kukuriya > Measurement, disabled
by default), purchase button clicks are reported to the analytics service whose 
tag is installed on your site. What is sent: the product ID stored on your site,
the product name (truncated to 60 characters), which store button was clicked, whether
it linked to a product page or to search results, and which card in the article 
it was. What is never sent: the affiliate URL itself, IP addresses, user agents,
product descriptions, post content, or any user-entered free text. Nothing is transmitted
from your server; the reader’s browser reports the click through the analytics tag
that is already loaded on the page. Turning the setting off stops the transmission
immediately.

## Screenshots

[⌊A product card in a post. Price, discount, sale label and every store button in
one block.⌉⌊A product card in a post. Price, discount, sale label and every store
button in one block.⌉[

A product card in a post. Price, discount, sale label and every store button in 
one block.

[⌊Several cards in one article. Three card templates, chosen per block.⌉⌊Several
cards in one article. Three card templates, chosen per block.⌉[

Several cards in one article. Three card templates, chosen per block.

[⌊A comparison table built from saved products.⌉⌊A comparison table built from saved
products.⌉[

A comparison table built from saved products.

[⌊Picking a product in the Block Editor. Search what you already saved, or query
Amazon, Rakuten and Yahoo! Shopping.⌉⌊Picking a product in the Block Editor. Search
what you already saved, or query Amazon, Rakuten and Yahoo! Shopping.⌉[

Picking a product in the Block Editor. Search what you already saved, or query Amazon,
Rakuten and Yahoo! Shopping.

[⌊Block settings. Template, store buttons and the look of the card, per block.⌉⌊
Block settings. Template, store buttons and the look of the card, per block.⌉[

Block settings. Template, store buttons and the look of the card, per block.

[⌊The product list. Search, link health, where each product is used, and how many
extra stores it has.⌉⌊The product list. Search, link health, where each product 
is used, and how many extra stores it has.⌉[

The product list. Search, link health, where each product is used, and how many 
extra stores it has.

[⌊Editing one product, with a live preview of the card.⌉⌊Editing one product, with
a live preview of the card.⌉[

Editing one product, with a live preview of the card.

[⌊Design settings. Presets and tokens that apply across the site.⌉⌊Design settings.
Presets and tokens that apply across the site.⌉[

Design settings. Presets and tokens that apply across the site.

[⌊The dashboard. Price refresh status and the last seven days of clicks.⌉⌊The dashboard.
Price refresh status and the last seven days of clicks.⌉[

The dashboard. Price refresh status and the last seven days of clicks.

[⌊Migrating from Pochipp. Products, then article content, in numbered steps.⌉⌊Migrating
from Pochipp. Products, then article content, in numbered steps.⌉[

Migrating from Pochipp. Products, then article content, in numbered steps.

## Blocks

This plugin provides 3 blocks.

 *   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.

## Installation

#### Basic setup

 1. Search for `Kukuriya` under “Add New” in the Plugins screen, install, and activate
 2. Open the “Kukuriya” admin menu, and in the “Connectors” tab turn on the ASPs you
    use and enter each connector’s API keys (for example, Rakuten needs an Application
    ID and an Affiliate ID)
 3. Add the “Kukuriya Product” block in the post / page editor, then search and insert

#### Admin tabs

 * **Dashboard**: price refresh cron status and recent click summaries
 * **Custom fields**: CRUD for your own spec fields
 * **CSV import / export**: bulk migration of existing product data
 * **Migration**: import from Pochipp

#### Using the manual-entry connector route

ASPs that do not provide a product API, such as A8.net and afb, can be handled with
the built-in manual-entry (Generic) connector by registering a URL template manually.

## FAQ

### Is it free?

Yes. Everything in this plugin is free and fully functional GPL v2+ open source,
including all five official connectors. Nothing here is locked behind a licence.

A separate paid add-on plugin (Kukuriya Pro, distributed from piftoworks.com) adds
sale campaigns and bulk editing. It is not required, and none of its code is part
of this plugin.

### Are API keys stored securely?

Yes. All API keys are encrypted with AES-256-GCM, protected by a key derived from`
AUTH_KEY` in `wp-config.php`. Keys are separated per connector ID, so API keys cannot
be decrypted even with direct database access.

### Can I migrate from Pochipp?

Yes. You can import Pochipp data (CPT `pochipps`) from the “Migration” tab in the
admin screen. The primary ASP is determined automatically in the order of Amazon
ASIN / Rakuten item code / Yahoo `seller_id + itemcode`, and each post is converted
into a Kukuriya product with Universal Link offers. A dry-run mode lets you check
counts and errors before committing.

**Take a full backup of your site before you start.** The migration runs in three
steps, and the third one **replaces the Pochipp cards inside your posts with Kukuriya
cards**. There is no undo for that step: putting the old cards back means restoring
your posts from a backup. Every step can be run as a dry run first, and you can 
limit a run to a single post while you check the result, so there is no need to 
do the whole site at once. The plugin also asks you to confirm that you have a backup
before it will run the last step on every post.

Generic CSV import is also supported, so migrating from tools other than Pochipp
is flexible as well.

### Does the plugin send data to third parties?

No data is ever sent to the plugin developer (Pifto Works). Product API calls go
directly to each ASP, using the API keys that you configure yourself. See the “External
services” section above for exactly what is sent, to whom, and when.

### Does click tracking protect visitor privacy?

Clicks are recorded in your own database only (the `wp_bcore_clicks` table); nothing
is sent to the plugin developer. IP addresses and User-Agents are stored as HMAC-
SHA256 hashes (salted from `AUTH_KEY`) and the original values cannot be recovered.
Referrers keep the host name only (path / query are discarded). No cookies are used—
a per-tab session ID lives in `sessionStorage` and disappears when the tab closes—
so cookie consent management is not required. Rows are deleted after 90 days. Recording
is on by default and can be switched off under “Measurement”.

### What happens to my data when I uninstall?

By default, the 5 `wp_bcore_*` tables (`credentials` / `offers` / `clicks` / `custom_fields_def`/`
custom_fields_value`) and related options / cron events are deleted. To keep the
data, set the option `bcore_keep_data_on_uninstall` to `true` before deleting the
plugin.

The products and the self-made links you registered are ordinary posts (custom post
types `bcore_product` / `bcore_link`) and are left in place, the same way WordPress
leaves posts when a plugin is removed. Delete them from the database if you want
a clean slate.

### Does it work on Multisite?

It works technically, but this version targets per-site operation. Network-wide 
aggregation and cross-site management are not implemented.

### Is there product caching?

Yes. Each connector’s API responses are cached short-term via the WP Transient API.
The price refresh cron persists into the `wp_bcore_offers` table independently of
the cache, so front-end rendering stays fast at all times.

### Can I write a connector for a new ASP myself?

Yes. You can distribute an independent WP plugin that implements `PiftoWorks\Kukuriya\
Contracts\ConnectorInterface`. Register it with the core via the `kukuriya_register_connectors`
hook, and it can use the core’s search UI, price refresh cron, click tracking, and
other infrastructure as-is.

### Does it work with the Classic Editor?

The `[bcore_product]` / `[bcore_comparison]` shortcodes render products and comparison
tables in the Classic Editor as well. The Block Editor search UI is not available
there, so the workflow is to import product data via CSV and then reference it by
post_id.

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“Kukuriya” is open source software. The following people have contributed to this
plugin.

Contributors

 *   [ piftoworks ](https://profiles.wordpress.org/piftoworks/)

“Kukuriya” has been translated into 1 locale. Thank you to [the translators](https://translate.wordpress.org/projects/wp-plugins/kukuriya/contributors)
for their contributions.

[Translate “Kukuriya” into your language.](https://translate.wordpress.org/projects/wp-plugins/kukuriya)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/kukuriya/), check out
the [SVN repository](https://plugins.svn.wordpress.org/kukuriya/), or subscribe 
to the [development log](https://plugins.trac.wordpress.org/log/kukuriya/) by [RSS](https://plugins.trac.wordpress.org/log/kukuriya/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 0.15.0

 * Fixed: a comparison table no longer sends readers to a product page that has 
   been marked as gone. Product cards already switched such a button to a search
   for the product, but the table ignored the mark and kept linking to the discontinued
   page. A column now goes where the card’s buy button for that store would go –
   usually a search for the product at the same store, or the card’s first button
   when that store has none – and if the card would have no button at all, the product
   is shown without a link. Clicks on such a column are counted for the store it
   now leads to.
 * Fixed: a comparison table shows another store’s current price when the product’s
   own price has expired, as product cards already do. It used to show a dash even
   when a different store had a fresh price. The price is taken from the same store
   as the column’s button wherever possible, so the price and the link do not point
   at different shops.
 * Changed: the note under a price in a comparison table now names the store the
   price came from, as it already did on a product card (“as of 2026/09/25 10:00
   | via Rakuten Ichiba”). Now that a column can switch to another store’s price,
   the note is what tells readers whose price they are looking at.
 * Fixed: a comparison table that is wider than the page can be scrolled with the
   keyboard. It only scrolled with a mouse or touch, so the columns off to the right
   could not be reached without one. The table area now takes focus, shows an outline
   when it has it, and is announced to screen readers as a comparison table that
   scrolls sideways.
 * Fixed: the star rating on a product card no longer shows its screen-reader text
   on themes that do not hide it. The extra words relied on a class the theme was
   expected to define, and on themes without it the card read “Rating ★4.5 out of
   5, (128 reviews)”. The rating is now described by a label on the element itself,
   as it already was in comparison tables, so it no longer depends on the theme.
 * Fixed: posts that contain only `[bcore_link]` shortcodes load the plugin’s stylesheet.
   Without it, banner images in those links were not scaled down and spilled past
   the edge of the screen on phones. Links printed from other places, such as widgets
   or excerpts, are covered as well. The block version was not affected.
 * Fixed: a custom link with its own rel value keeps “sponsored” and “noopener”.
   Writing rel=”nofollow” replaced the defaults instead of adding to them, so the
   link lost the value that marks it as an ad and the safeguard for links that open
   in a new tab. The values you enter are kept and the missing defaults are added.
 * Fixed: a search link can no longer take a page down because of a store template.
   Search addresses were filled in with PHP’s sprintf, so a stray percent sign in
   a template supplied through the `kukuriya_store_catalog` filter made PHP 8 stop
   with an error and the page did not render. Only the `%s` placeholder is replaced
   now.
 * Fixed: sale classes passed in through the `kukuriya_product_render_options` filter
   are reduced to characters that are valid in a class name before they are printed.
   They were added to the card’s class attribute as they came, so a quotation mark
   in the value could break out of it.
 * Changed: the “Find my outbound IP address” button now makes its request the same
   way as every other request in the plugin, which refuses to follow a redirect 
   to a private or local address. It still contacts only `api.ipify.org`, and only
   when you press the button.
 * Fixed: the Pochipp migration could read a card and the Pochipp card right after
   it as a single card. The second card was then neither converted nor listed among
   the cards that could not be converted.
 * Fixed: a Pochipp block whose closing comment is missing, which usually comes 
   from hand editing, no longer takes the text after it with it. The migration treated
   everything up to the next closing comment – paragraphs and other cards included–
   as part of that block and replaced all of it with one card. Such a block is now
   left as it is, and the cards after it are converted or reported as usual.
 * Fixed: the Pochipp migration never saves a post it could not read to the end,
   and never saves a post that would come out empty. A very long card, or text containing
   broken characters, could make the matching fail partway, and in rare cases the
   post was written back empty. Such posts are now left untouched and listed with
   the reason.
 * Fixed: uninstalling the plugin also removes the record that the Pochipp settings
   were imported. When it was left behind and the plugin was installed again, the
   migration screen treated the site as already migrated and would not move past
   that step.
 * Added: the Products screen opens a single product for editing when its address
   carries `&product=` and the product’s ID, so a link from elsewhere in the admin
   can land straight on that product. If the product cannot be opened, the list 
   is shown as usual and the parameter is taken out of the address.
 * Changed: the Moshimo connector links to its own setup guide. It used to point
   at the index of the guides.
 * Added: for developers, `kukuriya_product_link( $product_id, $store )` returns
   the link a reader would follow for a product: the same link as the card’s buy
   button for that store – the product page through your monetization route, or 
   a search link only when that search earns – and an empty string otherwise. `kukuriya_product()`
   returns the plain product URL, which earns nothing, so an add-on that lists products
   had no proper link to give them. Escape the result when you print it.
 * Added: for developers, `PiftoWorks\Kukuriya\Links\PlacementScanner::by_kind()`
   sorts what a post contains – cards, comparison tables, links, inline product 
   links and any Pochipp cards still left – using the same rules the migration uses
   to rewrite them, and says whether it could read the whole post. `PlacementScanner::
   RULES_VERSION` goes up whenever those rules change, so anything that stores the
   result knows when to rebuild it.

#### 0.14.1

 * Fixed: changing a monetization route, saving connector credentials or saving 
   the design settings now clears your page cache. Until now only saving a product
   did. If you switched a store to a different network, pages already in the cache
   kept handing out the old links, which earned nothing, and there was nothing on
   screen to say so. The same applies to the scheduled price refresh: cached pages
   kept showing the old price and the old “as of” date, past the 24-hour limit the
   card is supposed to respect.
 * Fixed: a store button that cannot be monetized is no longer shown as a bare search
   link. Kukuriya ships with Amazon, Rakuten and Yahoo! Shopping enabled and falls
   back to a search link for stores with no product data, so a site that had only
   set up Rakuten was publishing plain Amazon and Yahoo! search links. They sent
   visitors away and earned nothing. Buttons for products you have actually registered
   are unaffected.
 * Fixed: a store whose route cannot work is shown in the monetization route list
   with the reason, instead of disappearing from it. A store with no credentials
   of its own and no working route was dropped from the list entirely, so the setting
   could not be corrected and nothing explained why its links were not being converted.
   Migrating from Pochipp could leave a store in exactly that state.
 * Fixed: the route list also refuses combinations that cannot work, such as routing
   Amazon through the Rakuten connector. These were accepted and produced broken
   links.
 * Fixed: pasting a Moshimo ad link into the wrong merchant section is now refused,
   naming both merchants. Moshimo issues a different set of IDs per merchant and
   its ad link carries the advertiser number, which Kukuriya already knows; it was
   reading only the partnership ID and ignoring the rest. An Amazon ad link pasted
   into the Rakuten section therefore read as “set up”, the links still redirected,
   and nothing was ever tracked.
 * Fixed: the click-measurement endpoint now only accepts beacons sent from your
   own site, and its rate limit is applied atomically where an object cache is available.
   Anyone could previously post arbitrary values to it and distort the click figures
   in your dashboard. Nothing about what is stored has changed: addresses and user
   agents are still hashed, never kept in the clear.

#### 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.com` whenever 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.

Older versions: see changelog.txt in the plugin folder, or [read it online](https://plugins.svn.wordpress.org/kukuriya/trunk/changelog.txt).

 * Fixed: a Mercari product page pasted into “Add a button from a URL” in the block
   sidebar now becomes the Mercari button with your Ambassador ID (afid). It used
   to become a custom button, and custom buttons are printed as they are, so the
   link carried no afid. If the Ambassador ID is not set yet, or the Mercari connector
   is switched off, the URL is not saved and the sidebar says what to do first.
 * Fixed: a Mercari button is never shown without your Ambassador ID. A Mercari 
   link URL saved on a product was still printed while the ID was empty or the connector
   was switched off, without afid. It is now hidden in those cases, as the search
   link already was, and the products list agrees with the page.
 * Fixed: Mercari links that were already in your posts now get your Ambassador 
   ID when they are printed: custom buttons that point at Mercari (which the sidebar
   used to create) and products registered by hand whose product page is on Mercari.
   This covers the card’s buttons, the product name, the image, comparison tables
   and links alike.
 * Changed: the Mercari settings have a single field, “Ambassador ID (afid)”. The
   ID is shown as “Your ID” on your Mercari Ambassador page, so there is no need
   to make a link first. If you paste a whole Mercari link into the field, only 
   the number after afid= is used; a Mercari URL without afid is not taken as an
   ID.
 * Added: “Unlink” in the block sidebar waits a few seconds and offers “Undo”. The
   list of store links on a product now also shows the stores on the card that go
   to a search for the product, with a note on how to link the product page, and
   the store the product was registered from.
 * Fixed: removing a store’s link URL from the block sidebar removes only that store,
   and only if its URL has not changed since. It used to write back the whole list
   the sidebar had loaded, which could undo a change made meanwhile on the Products
   tab, or remove a URL pasted again during the undo wait.
 * Added: the URL field for buttons accepts an ASP’s ad tag as it is. The link is
   taken out of the code, and addresses that start with // get https:.
 * Fixed: the text on a custom button no longer turns the dark body colour. The 
   button’s text colour pointed at itself and was ignored by the browser.
 * Changed: the form for adding a link starts with what you are registering, and
   the finer settings (rel, where the link opens, notes) are folded under “Advanced
   settings”. The list filters are now called “Filter by type” and “Filter by status”.
 * Fixed: the suggested key for a link is made from the domain the link leads to,
   not from the ASP’s redirect domain.
 * Changed: the ValueCommerce connector no longer shows the fallback pid field, 
   which no route could use. A value saved there before is still read.
 * Changed: “How to set up …, step by step” in the Amazon, ValueCommerce and Mercari
   settings now opens the guide page for that service, and the link at the bottom
   of the Mercari and ValueCommerce settings is no longer labelled as an API key
   guide.
 * Changed: the “paste a link” boxes in the connector settings also read links copied
   from a page’s HTML (&), and say so when the pasted link does not contain the 
   value the setting needs.

## Meta

 *  Version **0.15.0**
 *  Last updated **3 saat öncə**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 6.6 or higher **
 *  Tested up to **7.1.2**
 *  PHP version ** 7.4 or higher **
 *  Languages
 * [English (US)](https://wordpress.org/plugins/kukuriya/) və [Japanese](https://ja.wordpress.org/plugins/kukuriya/).
 *  [Translate into your language](https://translate.wordpress.org/projects/wp-plugins/kukuriya)
 * Tags
 * [affiliate](https://az.wordpress.org/plugins/tags/affiliate/)[amazon](https://az.wordpress.org/plugins/tags/amazon/)
   [rakuten](https://az.wordpress.org/plugins/tags/rakuten/)[yahoo](https://az.wordpress.org/plugins/tags/yahoo/)
 *  [Advanced View](https://az.wordpress.org/plugins/kukuriya/advanced/)

## Reytinqlər

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/kukuriya/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/kukuriya/reviews/)

## Contributors

 *   [ piftoworks ](https://profiles.wordpress.org/piftoworks/)

## Dəstək

Şərhiniz varmı? Yardım lazımdırmı?

 [Dəstək forumuna bax](https://wordpress.org/support/plugin/kukuriya/)