{"id":127421,"date":"2020-08-26T08:19:32","date_gmt":"2020-08-26T08:19:32","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/wijntransport\/"},"modified":"2026-09-15T09:43:30","modified_gmt":"2026-09-15T09:43:30","slug":"wijntransport","status":"publish","type":"plugin","link":"https:\/\/lo.wordpress.org\/plugins\/wijntransport\/","author":18216066,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"2.0.1","stable_tag":"2.0.1","tested":"7.1.1","requires":"6.7","requires_php":"7.4","requires_plugins":null,"header_name":"WT Catalog","header_author":"WT","header_description":"Host a catalog of Wijntransport.com products on your own website.","assets_banners_color":"ffffff","last_updated":"2026-09-15 09:43:30","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/wt.group\/","header_author_uri":"https:\/\/wt.group\/","rating":0,"author_block_rating":0,"active_installs":10,"downloads":1497,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"wijntransport","date":"2020-09-16 07:36:11","revision":2382648},"1.1.0":{"tag":"1.1.0","author":"wijntransport","date":"2020-09-16 08:06:50","revision":2382676},"1.2.0":{"tag":"1.2.0","author":"wijntransport","date":"2020-09-17 08:38:33","revision":2383471},"1.3.0":{"tag":"1.3.0","author":"wijntransport","date":"2020-10-15 14:54:05","revision":2400255},"1.4.0":{"tag":"1.4.0","author":"wijntransport","date":"2020-12-15 13:29:59","revision":2439845},"1.4.1":{"tag":"1.4.1","author":"wijntransport","date":"2021-04-12 11:23:40","revision":2513231},"2.0.0":{"tag":"2.0.0","author":"wijntransport","date":"2026-09-04 14:20:22","revision":3681343},"2.0.1":{"tag":"2.0.1","author":"wijntransport","date":"2026-09-15 09:43:30","revision":3696643}},"upgrade_notice":{"2.0.1":"<p>Fixes product pages that return not found. Coming from 1.x: enter the API URL you receive from WT\nunder WT \u2192 Settings; your API key stays valid. Old \/wine\/ links are not redirected; beer needs its\nown page.<\/p>","2.0.0":"<p>2.0.0 talks to a new catalog service at a new address: enter the API URL you receive from WT under\nWT \u2192 Settings. Your existing API key stays valid and is kept through the update. The listing stays\nempty until the URL is in. Old \/wine\/ links are not redirected; beer needs its own page.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3681343,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3681343,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3681343,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3681343,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0","1.1.0","1.2.0","1.3.0","1.4.0","1.4.1","2.0.0","2.0.1"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3681343,"resolution":"1","location":"assets","locale":"","width":1280,"height":800},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3681343,"resolution":"2","location":"assets","locale":"","width":1280,"height":1664},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3681343,"resolution":"3","location":"assets","locale":"","width":780,"height":1688},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3681343,"resolution":"4","location":"assets","locale":"","width":1280,"height":960},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3681343,"resolution":"5","location":"assets","locale":"","width":1280,"height":560}},"screenshots":{"1":"The wine listing with the filter panel open and France ticked: 361 French wines, each filter\nvalue showing how many products are behind it. Country and colour names come from WT in the\nlanguage attached to the key, which is Dutch here.","2":"A product page: name, the producer's own name for it, country, region and appellation, the\nVivino rating with its number of ratings, an ORGANIC badge, the bottle picture, the\nvinification and tasting notes and the food pairing, and the specifications grouped into\nCharacteristics and Bottle. No price anywhere.","3":"The same wine listing on a phone: the \"Filters (2)\" bar open above the results, with the\nCountry and Colour sections expanded and France and Red ticked.","4":"WT \u2192 Settings: the API URL and key, the purchase-history filter for the wine and the beer\nlisting side by side, and the status panel showing the index, the SEO integration, the two\nlisting pages and the number of blocked products.","5":"WT \u2192 Blocked products: a search for \"Maucoil\" returning two products, one of them already\nblocked and marked as such."}},"plugin_section":[],"plugin_tags":[10553,5632,2777,229459,5631],"plugin_category":[],"plugin_contributors":[279179],"plugin_business_model":[],"class_list":["post-127421","plugin","type-plugin","status-publish","hentry","plugin_tags-b2b","plugin_tags-beer","plugin_tags-catalog","plugin_tags-product-listing","plugin_tags-wine","plugin_contributors-wijntransport","plugin_committers-wijntransport"],"banners":{"banner":"https:\/\/ps.w.org\/wijntransport\/assets\/banner-772x250.png?rev=3681343","banner_2x":"https:\/\/ps.w.org\/wijntransport\/assets\/banner-1544x500.png?rev=3681343","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/wijntransport\/assets\/icon-128x128.png?rev=3681343","icon_2x":"https:\/\/ps.w.org\/wijntransport\/assets\/icon-256x256.png?rev=3681343","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/wijntransport\/assets\/screenshot-1.png?rev=3681343","caption":"The wine listing with the filter panel open and France ticked: 361 French wines, each filter\nvalue showing how many products are behind it. Country and colour names come from WT in the\nlanguage attached to the key, which is Dutch here."},{"src":"https:\/\/ps.w.org\/wijntransport\/assets\/screenshot-2.png?rev=3681343","caption":"A product page: name, the producer's own name for it, country, region and appellation, the\nVivino rating with its number of ratings, an ORGANIC badge, the bottle picture, the\nvinification and tasting notes and the food pairing, and the specifications grouped into\nCharacteristics and Bottle. No price anywhere."},{"src":"https:\/\/ps.w.org\/wijntransport\/assets\/screenshot-3.png?rev=3681343","caption":"The same wine listing on a phone: the \"Filters (2)\" bar open above the results, with the\nCountry and Colour sections expanded and France and Red ticked."},{"src":"https:\/\/ps.w.org\/wijntransport\/assets\/screenshot-4.png?rev=3681343","caption":"WT \u2192 Settings: the API URL and key, the purchase-history filter for the wine and the beer\nlisting side by side, and the status panel showing the index, the SEO integration, the two\nlisting pages and the number of blocked products."},{"src":"https:\/\/ps.w.org\/wijntransport\/assets\/screenshot-5.png?rev=3681343","caption":"WT \u2192 Blocked products: a search for \"Maucoil\" returning two products, one of them already\nblocked and marked as such."}],"raw_content":"<!--section=description-->\n<p>WT (Wijntransport B.V.) supplies wine and beer to restaurants, hotels, shops and wholesalers. This\nplugin puts that assortment on your own WordPress website: a wine listing, a beer listing and a\npage per product, filled straight from WT's catalog every time a visitor looks at them. Nothing is\ncopied into your site and kept there, so a product that changes at WT changes on your website too.<\/p>\n\n<p><strong>Who it is for.<\/strong> WT customers who have a WordPress website. You need an API URL and an API key\nfrom WT; without them the plugin has nothing to show. Ask your WT contact for both. There is no\nfree or public catalog behind this plugin.<\/p>\n\n<p><strong>What a visitor gets.<\/strong> A listing of your assortment with a picture, a name, the alcohol\npercentage, the colour, the bottle size and the case quantity for every product. Down the side (or\nbehind a \"Filters\" button on a phone) are filters for country, colour, bottle size and producer,\neach showing how many products are behind it, plus a search box. Ticking a filter narrows the list\nand the other filters' counts immediately. The filters need JavaScript in the visitor's browser;\nthe search box is an ordinary form and works without it. Clicking a product opens its own page\nwith the producer's own name for it, the region it comes from, its rating, badges such as ORGANIC\nor NEW, the tasting note, the food pairing, and the specifications split into \"Characteristics\"\nand \"Bottle\".<\/p>\n\n<p><strong>No prices, anywhere.<\/strong> WT's prices are per customer and are not part of what this plugin shows.\nNo price is displayed, and none is stored on your site.<\/p>\n\n<p><strong>What you control.<\/strong> Two things, both under <strong>WT<\/strong> in the WordPress admin menu:<\/p>\n\n<ul>\n<li>Which products are hidden. See \"Blocked products\" below.<\/li>\n<li>Which slice of the catalog each listing shows: everything WT sells, or only what you have\nactually bought in the last 3, 6 or 12 months, or ever. Wine and beer are set separately, so you\ncan show every wine but only the beers you stock.<\/li>\n<\/ul>\n\n<h4>External services<\/h4>\n\n<p>This plugin depends on one external service: the <strong>WT catalog API<\/strong>. It is the source of every\nproduct, picture, filter and piece of text the plugin displays. Your site has no catalog of its\nown.<\/p>\n\n<p><strong>Where it connects.<\/strong> To the address you enter yourself under WT \u2192 Settings (\"API URL\"). The\nplugin ships no address of its own; you receive the URL and the key together from WT.<\/p>\n\n<p><strong>What is sent, and when.<\/strong> Every request carries your API key, so the service knows which\ncustomer's assortment to answer with. A request is made when a visitor opens a listing or a\nproduct page and the plugin has no fresh copy of it, and once a day to rebuild the product index.\nAlong with the key the plugin sends only what the visitor asked for: the page number, the search\nterm they typed, the filters they ticked (country, colour, bottle size, producer), which drink the\npage is for, your purchase-history setting, and the identifier of the product being viewed. <strong>No\npersonal data of your visitors is sent<\/strong> \u2014 no name, e-mail address, IP address, cookie or user\naccount is forwarded, and the plugin sets no cookies of its own.<\/p>\n\n<p><strong>What is stored on your site.<\/strong> One settings row holding your API URL, your API key, your two\npurchase-history choices and your block list; a small index of the catalog (identifier, base\nnumber, link, name, vintage, drink, thumbnail) used to build product addresses and the XML\nsitemap; and short-lived cached copies of listing and product responses. <strong>No price is ever\nrequested for display, shown or stored.<\/strong> Deleting the plugin from Plugins \u2192 Installed Plugins\nremoves all of it, including your API key.<\/p>\n\n<p><strong>Terms and privacy.<\/strong> The catalog is a service of WT for its own customers, and its use is\ngoverned by your customer agreement with WT. Nothing about your website's visitors is sent to it \u2014\nsee above \u2014 so no visitor-facing privacy policy applies to the plugin's requests. Company site:\nhttps:\/\/wt.group\/<\/p>\n\n<h4>The screens, one by one<\/h4>\n\n<p><strong>The wine listing<\/strong> (screenshot 1) is an ordinary WordPress page to which you gave the page\ntemplate \"[WT] Wine listing\". The plugin fills it: search box, the filter panel, the result count,\nthe grid of products and the pager. Every filter choice is in the page's own address, so a\nfiltered list can be bookmarked, shared and linked to. Filter labels \u2014 country names, colour names\n\u2014 come from WT in the language attached to your key, which is why they may read Dutch on an\nEnglish site.<\/p>\n\n<p><strong>The beer listing<\/strong> is the same page, with the page template \"[WT] Beer listing\" instead. It\nshows beer only, has its own purchase-history setting and its own search. You only need it if you\nsell beer.<\/p>\n\n<p><strong>The product page<\/strong> (screenshot 2) lives under whichever listing the visitor came from \u2014\n    \/wines\/product\/1015-chat-maucoil-chateauneuf-du-pape-rouge-bio\/. You do not create these pages;\nthe plugin answers those addresses itself. Text blocks that WT has not filled in are left out\nrather than shown empty, and the specification rows differ per drink: closure type, vintage and\ncolour are wine rows, degrees Plato is a beer row.<\/p>\n\n<p><strong>On a phone<\/strong> (screenshot 3) the filter panel folds into a \"Filters\" button above the results,\nwith the number of active filters on it. Opening it shows the same filter sections; each opens on\na tap.<\/p>\n\n<p><strong>WT \u2192 Settings<\/strong> (screenshot 4) is where the API URL and the API key go, and where you choose the\npurchase-history filter per listing. Underneath is a status panel: which URL is in use and whether\na key is saved, how many products are in the index and when it was last built, which SEO plugin is\nproviding meta tags and the sitemap, which pages are acting as your wine and beer listings, and\nhow many products you have blocked. Two buttons sit below it: <strong>Rebuild product index now<\/strong>, which\nfetches the whole catalog again, and <strong>Flush cache<\/strong>, which throws away the pages the plugin is\nremembering. Saving a key checks it against the catalog before storing it, and tells you if it was\nrefused; a refused key never replaces the saved one.<\/p>\n\n<p><strong>WT \u2192 Blocked products<\/strong> (screenshot 5) is a search box. Type a product name or a base number,\nand every match comes back with its base number, name, drink and vintages. \"Block\" hides that\nproduct from the listing, from its own product page and from the sitemap \u2014 every vintage of it,\nbecause blocking works on the base number. The \"Blocked\" tab lists what you have hidden, and\nunblocks it again.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>In the WordPress admin, go to <strong>Plugins \u2192 Add New \u2192 Upload Plugin<\/strong>, choose the plugin's zip\nfile, click <strong>Install Now<\/strong> and then <strong>Activate<\/strong>.<\/li>\n<li>Go to <strong>WT \u2192 Settings<\/strong>. Paste the <strong>API URL<\/strong> and the <strong>API key<\/strong> you received from WT and\nclick <strong>Save Changes<\/strong>. The key is checked against the catalog while you save; if it is refused\nyou are told so and nothing is stored.<\/li>\n<li>Go to <strong>Pages \u2192 Add New<\/strong>, give the page a title such as \"Wines\", and under <strong>Page Attributes \u2192\nTemplate<\/strong> choose <strong>[WT] Wine listing<\/strong>. Publish it.<\/li>\n<li>If you also sell beer, create a second page the same way and choose <strong>[WT] Beer listing<\/strong> for\nit.<\/li>\n<li>Wait for the first product index to be built. It starts by itself a few seconds after the key\nis saved and takes a few minutes for a large assortment; the <strong>Product index<\/strong> row on the\nsettings screen shows the number of products and the time it finished. If it still says \"not\nbuilt yet\" after that, press <strong>Rebuild product index now<\/strong>.<\/li>\n<li>Open the listing page. If it is empty, the settings screen's status panel says why.<\/li>\n<\/ol>\n\n<h4>Upgrading from version 1.x<\/h4>\n\n<p>Read this before you update; 2.0.0 is not a drop-in replacement.<\/p>\n\n<ul>\n<li><strong>The address changes; your key does not.<\/strong> Version 1.x talked to an address built into the\nplugin. 2.0.0 talks to a new catalog service at a new address: enter the <strong>API URL<\/strong> you receive\nfrom WT under WT \u2192 Settings. <strong>Your existing API key stays valid<\/strong> and is kept through the\nupdate. Until the URL is entered the listing stays empty.<\/li>\n<li><strong>Product addresses have changed.<\/strong> 1.x used <code>\/&lt;your-listing-page&gt;\/wine\/&lt;name&gt;\/<\/code>. 2.0.0 uses\n  \/\/product\/-\/. <strong>Old addresses are not redirected<\/strong> \u2014\nthey return \"not found\". If you have linked to individual wines from menus, posts or\nnewsletters, those links need updating. Search engines pick the new addresses up from the\nsitemap.<\/li>\n<li><strong>The wine page now shows wine only.<\/strong> In 1.x one page showed everything. If you sell beer,\ncreate a second page with the \"[WT] Beer listing\" template, or your beers disappear.<\/li>\n<li><strong>Your existing settings are kept.<\/strong> Your API key, the block list, and the single\npurchase-history setting from 1.x all survive; the purchase-history setting is copied to both\nthe wine and the beer listing, where you can then change them independently.<\/li>\n<li><strong>WordPress 6.7 and PHP 7.4<\/strong> are the minimum. On anything older, do not update.<\/li>\n<\/ul>\n\n<!--section=faq-->\n<dl>\n<dt id=\"how%20do%20i%20hide%20a%20product%3F\"><h3>How do I hide a product?<\/h3><\/dt>\n<dd><p>WT \u2192 Blocked products. Search for it by name, or type its base number, and press \"Block\". Blocking\nworks on the base number, so <strong>every vintage of that product<\/strong> is hidden at once \u2014 from the\nlisting, from its own product page (which then returns \"not found\") and from the XML sitemap. The\n\"Blocked\" tab lists everything you have hidden and unblocks it again. You can also block a base\nnumber the plugin has not indexed yet, using the \"Block by base number\" box; a number the catalog\ndoes not know is refused rather than blocked.<\/p><\/dd>\n<dt id=\"why%20does%20my%20beer%20page%20show%20wine%2C%20or%20nothing%20at%20all%3F\"><h3>Why does my beer page show wine, or nothing at all?<\/h3><\/dt>\n<dd><p>Check the page's template under Page Attributes. \"[WT] Wine listing\" shows wine only and \"[WT]\nBeer listing\" shows beer only \u2014 a page with the wrong one shows the wrong drink. If a\ncorrectly-templated beer page is empty, look at WT \u2192 Settings: if \"Beer listing shows\u2026\" is set to\na purchase-history window and you have not bought beer in that window, there is nothing to show.\nSet it to \"All products\" to check.<\/p><\/dd>\n<dt id=\"why%20does%20the%20listing%20show%20fewer%20products%20than%20wt%27s%20catalog%3F\"><h3>Why does the listing show fewer products than WT's catalog?<\/h3><\/dt>\n<dd><p>Two settings can do that, and they add up:<\/p>\n\n<ul>\n<li><strong>The purchase-history filter<\/strong> (WT \u2192 Settings). If a listing is set to \"Products purchased in\nthe last 12 months\" it shows only what you bought in that period, not the whole assortment. \"All\nproducts\" removes the restriction.<\/li>\n<li><strong>Blocked products.<\/strong> Everything on that list is hidden.<\/li>\n<\/ul>\n\n<p>If neither explains it, press \"Rebuild product index now\" and check the status panel for an error.<\/p><\/dd>\n<dt id=\"can%20i%20change%20the%20look%3F\"><h3>Can I change the look?<\/h3><\/dt>\n<dd><p>Yes \u2014 with CSS in your theme or in Appearance \u2192 Customise \u2192 Additional CSS. The plugin's markup\nuses stable class names that will not change without a major version:<\/p>\n\n<ul>\n<li>Listing: <code>.wt-listing<\/code>, <code>.wt-listing--wine<\/code>, <code>.wt-listing--beer<\/code>, <code>.cc-search-box<\/code>, <code>.wt-empty<\/code>,\n  .wt-error<\/li>\n<li>Filters: <code>.cc-sidebar<\/code>, <code>.cc-sidebar__section<\/code>, <code>.cc-sidebar__title<\/code>, <code>.cc-sidebar__reset<\/code>,\n  .cc-filter-bar, <code>.cc-filter-bar__button<\/code>, <code>.cc__filter-item<\/code>, <code>.cc__filter-text<\/code>,\n  .cc__filter-count<\/li>\n<li>Results: <code>.cc-product<\/code>, <code>.cc-product__image<\/code>, <code>.cc-product__title<\/code>, <code>.cc-product__info<\/code>,\n  .cc-stats, <code>.cc-pagination<\/code><\/li>\n<li>Product page: <code>.wt-single<\/code>, <code>.wt-product__head<\/code>, <code>.wt-product__origin<\/code>, <code>.wt-product__marks<\/code>,\n  .wt-product__body, <code>.wt-product__col--prose<\/code>, <code>.wt-product__col--specs<\/code>, <code>.wt-specs<\/code>,\n  .wt-specs__group, <code>.wt-rating<\/code>, <code>.wt-badge<\/code>, <code>.wt-breadcrumb<\/code><\/li>\n<\/ul>\n\n<p>Class names beginning <code>js-<\/code> drive the plugin's own JavaScript. Do not style or remove them.<\/p><\/dd>\n<dt id=\"why%20is%20a%20product%20missing%20that%20wt%20added%20today%3F\"><h3>Why is a product missing that WT added today?<\/h3><\/dt>\n<dd><p>The product index is rebuilt once a day, and listing pages are remembered for a few minutes at a\ntime. Press <strong>Rebuild product index now<\/strong> on the settings screen to pull the catalog again\nimmediately, and <strong>Flush cache<\/strong> to drop the remembered pages. Both are safe to press at any time.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20yoast%20seo%20or%20rank%20math%3F\"><h3>Does it work with Yoast SEO or Rank Math?<\/h3><\/dt>\n<dd><p>Yes. If Yoast SEO or Rank Math is active, the plugin hands it the title, description, canonical\naddress, Open Graph tags and the products for its XML sitemap, so your products appear in the\nsitemap you already have. With neither installed, WordPress's own sitemap and meta tags are used\ninstead. Nothing needs configuring either way; the settings screen's <strong>SEO<\/strong> row names which\nplugin is doing which job.<\/p><\/dd>\n<dt id=\"which%20languages%20does%20it%20speak%3F\"><h3>Which languages does it speak?<\/h3><\/dt>\n<dd><p>The plugin's own text \u2014 buttons, headings, filter section names, the admin screens \u2014 is available\nin Dutch, German and English, and follows your site's language setting. The <strong>product text<\/strong> and\nthe <strong>filter values<\/strong> (country and colour names) come from WT in the language attached to your API\nkey, and are not translated by the plugin. So an English-language site with a Dutch-language key\nshows English buttons and Dutch country names. If that is wrong for you, ask WT to change the\nlanguage on your key.<\/p><\/dd>\n<dt id=\"do%20i%20need%20to%20do%20anything%20about%20permalinks%3F\"><h3>Do I need to do anything about permalinks?<\/h3><\/dt>\n<dd><p>No. If product pages ever start returning \"not found\", the plugin repairs this on the next visit.\nSettings \u2192 Permalinks \u2192 \"Save Changes\" does the same by hand.<\/p><\/dd>\n<dt id=\"what%20happens%20if%20the%20catalog%20is%20unreachable%2C%20or%20my%20key%20is%20refused%3F\"><h3>What happens if the catalog is unreachable, or my key is refused?<\/h3><\/dt>\n<dd><p>Either way the listing says so on the page rather than showing an empty list and passing that off\nas your assortment. The HTTP status differs on purpose:<\/p>\n\n<ul>\n<li><strong>Catalog unreachable, or rate-limiting you<\/strong> \u2014 HTTP 503 with a Retry-After header, so search\nengines come back later instead of dropping the page.<\/li>\n<li><strong>API key refused, or no key entered yet<\/strong> \u2014 HTTP 200 with the message on the page. This one is\nfor you, not for a search engine: it has to be visible so whoever looks at the site can go and\nfix the key.<\/li>\n<li><strong>A product that does not exist, or that you have blocked<\/strong> \u2014 a genuine HTTP 404.<\/li>\n<\/ul><\/dd>\n<dt id=\"what%20is%20removed%20when%20i%20delete%20the%20plugin%3F\"><h3>What is removed when I delete the plugin?<\/h3><\/dt>\n<dd><p>Everything the plugin wrote: the settings row (including your API key), the block list, the\nproduct index, every cached page and the daily scheduled task. That happens on <strong>delete<\/strong>, from\nPlugins \u2192 Installed Plugins.<\/p>\n\n<p>Deactivating loses no data, but it cancels the daily index rebuild, and while the plugin is off a\n    \/product\/\u2026 address shows the listing page instead of the product. Activating it again restores\nboth, with your settings, block list and index exactly as you left them.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>2.0.1<\/h4>\n\n<p>Release Date: September 2026<\/p>\n\n<ul>\n<li>Product pages that suddenly all returned \"not found\" now repair themselves on the next visit,\nwithout re-saving the permalink settings.<\/li>\n<\/ul>\n\n<h4>2.0.0<\/h4>\n\n<p>Release Date: September 2026<\/p>\n\n<p>A full rewrite against WT's new catalog service.<\/p>\n\n<p><strong>Breaking changes.<\/strong> This release does not work with a 1.x installation as it stands. 2.0.0 talks\nto a new catalog service at a new address: enter the <strong>API URL<\/strong> you receive from WT under WT \u2192\nSettings before anything is shown. <strong>Your existing API key stays valid<\/strong> and is kept through the\nupdate. <strong>Product addresses have changed<\/strong> from <code>\/&lt;listing&gt;\/wine\/&lt;name&gt;\/<\/code> to\n    \/\/product\/-\/, and the old addresses are <strong>not redirected<\/strong> \u2014 links\nto individual wines from elsewhere on your site need updating. The wine listing now shows <strong>wine\nonly<\/strong>, so a site that also sells beer needs a second page using the new \"[WT] Beer listing\"\ntemplate. The minimum requirements rise to <strong>WordPress 6.7 and PHP 7.4<\/strong>.<\/p>\n\n<ul>\n<li>Rewritten data layer against the new catalog API; no product data is kept on your site beyond a\nsmall index used for links and the sitemap.<\/li>\n<li>Beer and wine on separate pages, via the existing \"[WT] Wine listing\" template and the new \"[WT]\nBeer listing\" template.<\/li>\n<li>Live filters on country, colour, bottle size and producer, with a count on every value that\nnarrows as you tick others, plus a producer type-to-filter box and a search box. Ticking a\nfilter updates the results without reloading the page. The filters require JavaScript; the\nsearch box is a plain form and works without it.<\/li>\n<li>Filters, search and page number are part of the page address, so a filtered listing can be\nbookmarked, shared and linked to.<\/li>\n<li>Rewritten product page: name, the producer's own name, country\/region\/appellation, rating with\nits source and number of ratings, ORGANIC \/ NEW \/ VEGAN badges, tasting notes and food pairing\nshown only when they carry text, and specifications grouped into Characteristics and Bottle with\nthe rows appropriate to wine or to beer.<\/li>\n<li>Blocked products are blocked by base number, so every vintage of a product is hidden at once,\nfrom the listing, the product page and the sitemap. The screen searches by name or by base\nnumber and can block a number the index has not seen yet.<\/li>\n<li>Purchase-history filter per listing \u2014 all products, or those purchased in the last 3, 6 or 12\nmonths, or ever purchased \u2014 set independently for wine and for beer.<\/li>\n<li>Yoast SEO, Rank Math and WordPress core integrations for the XML sitemap, canonical addresses,\ntitles, descriptions, Open Graph tags and rel prev\/next; the right one is chosen automatically.<\/li>\n<li>A real error state instead of an empty listing that looks like an empty assortment. A catalog\nthat cannot be reached, or that is rate-limiting, answers HTTP 503 with a Retry-After header so\nsearch engines come back later. A refused or missing API key answers HTTP 200 on purpose: it is\nthe site operator who has to read that message, and a 503 would hide it from them and from\nsearch engines alike. An unknown product returns a genuine 404.<\/li>\n<li>API key and URL are settings, checked against the catalog when saved; the plugin ships no\naddress of its own. The URL can be fixed in <code>wp-config.php<\/code> with\n  define( 'WIJNTRANSPORT_API_URL', '\u2026' );.<\/li>\n<li>Dutch, German and English translations of the plugin's own text.<\/li>\n<li>Deleting the plugin now removes everything it wrote, including the API key. In 1.x the key was\nleft behind for ever.<\/li>\n<li>Responsive listing: the filter panel folds into a \"Filters\" bar below 901 pixels wide.<\/li>\n<\/ul>\n\n<h4>1.4.1<\/h4>\n\n<p>Release Date: April 12, 2021<\/p>\n\n<ul>\n<li>Update api url<\/li>\n<\/ul>\n\n<h4>1.4.0<\/h4>\n\n<p>Release Date: December 15, 2020<\/p>\n\n<ul>\n<li>Generate sitemap with wines for yoast seo<\/li>\n<\/ul>\n\n<h4>1.3.0<\/h4>\n\n<p>Release Date: October 15, 2020<\/p>\n\n<ul>\n<li>Add vintage to single wine<\/li>\n<li>Add seo head links: canonical, prev, next<\/li>\n<\/ul>\n\n<h4>1.2.0<\/h4>\n\n<p>Release Date: September 17, 2020<\/p>\n\n<ul>\n<li>Update translation<\/li>\n<li>Update styles<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<p>Release Date: September 16, 2020<\/p>\n\n<ul>\n<li>Update placeholder image<\/li>\n<li>Fix translation<\/li>\n<li>Styles fixes<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<p>Release Date: August 20, 2020<\/p>\n\n<ul>\n<li>Initial release<\/li>\n<\/ul>","raw_excerpt":"Your WT wine and beer catalog, live on your own website.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/lo.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/127421","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/lo.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/lo.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/lo.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=127421"}],"author":[{"embeddable":true,"href":"https:\/\/lo.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/wijntransport"}],"wp:attachment":[{"href":"https:\/\/lo.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=127421"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/lo.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=127421"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/lo.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=127421"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/lo.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=127421"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/lo.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=127421"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/lo.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=127421"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}