{"id":377688,"date":"2026-09-29T08:57:47","date_gmt":"2026-09-29T08:57:47","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/cartdock-sticky-add-to-cart-for-woocommerce\/"},"modified":"2026-09-29T08:57:37","modified_gmt":"2026-09-29T08:57:37","slug":"cartdock","status":"publish","type":"plugin","link":"https:\/\/ku.wordpress.org\/plugins\/cartdock\/","author":108511,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.1.4","stable_tag":"1.1.4","tested":"7.1.2","requires":"6.5","requires_php":"8.1","requires_plugins":null,"header_name":"Cartdock - Sticky Add to Cart for WooCommerce","header_author":"WPPoland.com","header_description":"A sticky add-to-cart bar that appears on scroll, boosting conversions on long product pages.","assets_banners_color":"ccd0d0","last_updated":"2026-09-29 08:57:37","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/plogins.com\/plogins-anchor\/","header_author_uri":"https:\/\/wppoland.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":42,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.1.4":{"tag":"1.1.4","author":"motylanogha","date":"2026-09-29 08:57:37","revision":3718591}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3718590,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3718590,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3718590,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3718590,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{"blueprint.json":{"filename":"blueprint.json","revision":3718591,"resolution":false,"location":"assets","locale":"","contents":"{\"$schema\":\"https:\\\/\\\/playground.wordpress.net\\\/blueprint-schema.json\",\"meta\":{\"title\":\"Cartdock - Sticky Add to Cart for WooCommerce, Live Preview\",\"author\":\"WPPoland\"},\"landingPage\":\"\\\/wp-admin\\\/admin.php?page=anchor-settings\",\"preferredVersions\":{\"php\":\"8.2\",\"wp\":\"latest\"},\"login\":true,\"steps\":[{\"step\":\"installPlugin\",\"pluginData\":{\"resource\":\"wordpress.org\\\/plugins\",\"slug\":\"woocommerce\"},\"options\":{\"activate\":true}},{\"step\":\"runPHP\",\"code\":\"<?php require '\\\/wordpress\\\/wp-load.php';\\ndelete_transient('_wc_activation_redirect');\\nupdate_option('woocommerce_onboarding_profile', array('skipped'=>true, 'completed'=>true));\\nif (function_exists('wc_get_product_id_by_sku') && class_exists('WC_Product_Simple')) {\\n  $demo = array('Trailwind Running Shoes'=>89, 'Harbor Leather Wallet'=>39, 'Amber Soy Candle'=>18, 'Coastal Pullover Hoodie'=>49, 'Field Canvas Backpack'=>59, 'Matte Ceramic Mug'=>14);\\n  foreach ($demo as $name=>$price) {\\n    $sku = 'demo-'.sanitize_title($name);\\n    if (wc_get_product_id_by_sku($sku)) { continue; }\\n    $p = new WC_Product_Simple();\\n    $p->set_name($name); $p->set_sku($sku); $p->set_regular_price((string)$price);\\n    $p->set_status('publish'); $p->set_catalog_visibility('visible');\\n    $p->save();\\n  }\\n}\"},{\"step\":\"installPlugin\",\"pluginData\":{\"resource\":\"wordpress.org\\\/plugins\",\"slug\":\"cartdock\"},\"options\":{\"activate\":true}}]}"}},"all_blocks":[],"tagged_versions":["1.1.4"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3718590,"resolution":"1","location":"assets","locale":"","width":1600,"height":800},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3718590,"resolution":"2","location":"assets","locale":"","width":1600,"height":1200},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3718590,"resolution":"3","location":"assets","locale":"","width":430,"height":932}},"screenshots":{"1":"The sticky add-to-cart bar on a product page.","2":"The Cartdock settings screen under WooCommerce.","3":"The same bar on a phone, pinned to the bottom of the screen."}},"plugin_section":[],"plugin_tags":[3175,984,24101,4007,286],"plugin_category":[45,55],"plugin_contributors":[264912],"plugin_business_model":[],"class_list":["post-377688","plugin","type-plugin","status-publish","hentry","plugin_tags-add-to-cart","plugin_tags-conversion","plugin_tags-product-page","plugin_tags-sticky","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_category-seo-and-marketing","plugin_contributors-motylanogha","plugin_committers-motylanogha"],"banners":{"banner":"https:\/\/ps.w.org\/cartdock\/assets\/banner-772x250.png?rev=3718590","banner_2x":"https:\/\/ps.w.org\/cartdock\/assets\/banner-1544x500.png?rev=3718590","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/cartdock\/assets\/icon-128x128.png?rev=3718590","icon_2x":"https:\/\/ps.w.org\/cartdock\/assets\/icon-256x256.png?rev=3718590","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/cartdock\/assets\/screenshot-1.png?rev=3718590","caption":"The sticky add-to-cart bar on a product page."},{"src":"https:\/\/ps.w.org\/cartdock\/assets\/screenshot-2.png?rev=3718590","caption":"The Cartdock settings screen under WooCommerce."},{"src":"https:\/\/ps.w.org\/cartdock\/assets\/screenshot-3.png?rev=3718590","caption":"The same bar on a phone, pinned to the bottom of the screen."}],"raw_content":"<!--section=description-->\n<p>Cartdock adds a slim sticky add-to-cart bar to the bottom of your WooCommerce\nsingle product pages. It stays hidden until the shopper scrolls past the main\nadd-to-cart button, then slides into view showing the product title, price and a\nbuy button, so the add-to-cart control is still reachable on long pages.<\/p>\n\n<p>On variable products the bar follows the native variations form. As the shopper\npicks options, the price and the buy button update to match the selected variation, and the button\ndisables itself when the chosen variation is out of stock. Cartdock does not load its own copy of jQuery; it listens to\nthe variation events WooCommerce already fires.<\/p>\n\n<p>The bar is positioned with CSS <code>position: fixed<\/code> and starts hidden, so it sits\noutside the document flow and does not push other content around or cause\nlayout shift when it appears.<\/p>\n\n<p>Cartdock is not on the WordPress.org directory yet, so if you want to read the\ncode, report a bug or suggest a change, the repository is at\n<a href=\"https:\/\/github.com\/wppoland\/plogins-anchor\">github.com\/wppoland\/plogins-anchor<\/a>.<\/p>\n\n<h4>Documentation and links<\/h4>\n\n<ul>\n<li><strong>Documentation<\/strong>: <a href=\"https:\/\/plogins.com\/plogins-anchor\/docs\/\">plogins.com\/plogins-anchor\/docs\/<\/a><\/li>\n<li><strong>Plugin page<\/strong>: <a href=\"https:\/\/plogins.com\/plogins-anchor\/\">plogins.com\/plogins-anchor\/<\/a><\/li>\n<li><strong>Source code<\/strong>: <a href=\"https:\/\/github.com\/wppoland\/plogins-anchor\">github.com\/wppoland\/plogins-anchor<\/a><\/li>\n<li><strong>Bug reports and feature requests<\/strong>: <a href=\"https:\/\/github.com\/wppoland\/plogins-anchor\/issues\">github.com\/wppoland\/plogins-anchor\/issues<\/a><\/li>\n<\/ul>\n\n<h4>Features<\/h4>\n\n<ul>\n<li>Sticky add-to-cart bar on single product pages, revealed once the shopper scrolls past the main button.<\/li>\n<li>Scroll threshold you set in pixels (0 to 5000), so you decide how far down the bar kicks in.<\/li>\n<li>Shows the product title, price and a buy button.<\/li>\n<li>On variable products the price tracks the variation the shopper has selected, and the button disables itself if that variation is out of stock.<\/li>\n<li>Marked up as an ARIA region with a visible focus state and screen-reader label.<\/li>\n<li>Honours prefers-reduced-motion and has a dark-mode style.<\/li>\n<li>The bar is fixed to the viewport and starts hidden, so it does not cause layout shift.<\/li>\n<li>Ships with a POT file for translation, and deleting the plugin removes the two options it stores.<\/li>\n<li>Declares HPOS and cart\/checkout blocks compatibility.<\/li>\n<\/ul>\n\n<h3>External Services<\/h3>\n\n<p>Cartdock does not connect to any external services. It sends no data off your site\nand loads nothing from a third-party CDN; its stylesheet and script (<code>assets\/css\/anchor.css<\/code>\nand <code>assets\/js\/anchor.js<\/code>) are served from your own install, and the front-end script reads\nonly a small <code>anchorConfig<\/code> object (the scroll threshold) that WordPress prints inline.<\/p>\n\n<p>All of Cartdock's data stays in your database: it stores two autoloaded-off options,\n    anchor_settings (the enable toggle and scroll threshold) and <code>anchor_db_version<\/code>,\nand keeps no per-product data. Both options are removed when you delete the plugin.\nCartdock sends no email and makes no HTTP requests of its own.<\/p>\n\n<h3>Translations<\/h3>\n\n<p>Cartdock is fully translatable and ships the <code>cartdock.pot<\/code> template. Translations are delivered by WordPress.org language packs from translate.wordpress.org, which is where Polish, German and Spanish are being contributed; the package itself carries no compiled translation files.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin to <code>\/wp-content\/plugins\/cartdock<\/code>, or install via Plugins &gt; Add New.<\/li>\n<li>Activate it. WooCommerce must be active.<\/li>\n<li>Go to <strong>WooCommerce &gt; Cartdock<\/strong> to enable the bar and set the scroll threshold.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20it%20require%20woocommerce%3F\"><h3>Does it require WooCommerce?<\/h3><\/dt>\n<dd><p>Yes. Cartdock only runs when WooCommerce is active.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20variable%20products%3F\"><h3>Does it work with variable products?<\/h3><\/dt>\n<dd><p>Yes. The bar mirrors WooCommerce's native variations form: pick options on the\npage and the bar's price and buy button update to match; the button disables itself\nif the selected variation is out of stock.<\/p><\/dd>\n<dt id=\"will%20it%20slow%20my%20product%20pages%20down%20or%20shift%20the%20layout%3F\"><h3>Will it slow my product pages down or shift the layout?<\/h3><\/dt>\n<dd><p>No. The stylesheet and script load only on single product pages, the script is\ndeferred, and the bar is fixed to the viewport and hidden until it is needed.\nBecause it starts outside the document flow, showing it does not shift the page.<\/p><\/dd>\n<dt id=\"can%20i%20change%20when%20the%20bar%20appears%3F\"><h3>Can I change when the bar appears?<\/h3><\/dt>\n<dd><p>Yes. Set the scroll threshold in pixels under <strong>WooCommerce &gt; Cartdock<\/strong> (0-5000).<\/p><\/dd>\n<dt id=\"does%20it%20work%20on%20simple%20products%3F\"><h3>Does it work on simple products?<\/h3><\/dt>\n<dd><p>Yes. On simple products the bar shows the title, price and add-to-cart button. On variable products it tracks the selected variation.<\/p><\/dd>\n<dt id=\"does%20this%20plugin%20work%20on%20wordpress%20multisite%3F\"><h3>Does this plugin work on WordPress Multisite?<\/h3><\/dt>\n<dd><p>Yes. This plugin is compatible with WordPress Multisite. Network activate it or activate it on individual sites; each site keeps its own settings and data.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.1.4<\/h4>\n\n<ul>\n<li>The upgrade notice's \"Coming soon\" and \"Get notified\" labels are English source strings for every language; Polish sites used to get their own Polish source text, which translators in other languages then saw untranslated.<\/li>\n<\/ul>\n\n<h4>1.1.3<\/h4>\n\n<ul>\n<li>The bar template is included directly instead of through an output buffer and extract(); nothing visible changes.<\/li>\n<\/ul>\n\n<h4>1.1.2<\/h4>\n\n<ul>\n<li>Renamed to Cartdock, a plain English name in place of the Esperanto one. The text domain and the plugin folder follow the name; the stored settings, the anchor_settings option and every hook are unchanged.<\/li>\n<\/ul>\n\n<h4>1.1.1<\/h4>\n\n<ul>\n<li>The sidebar upgrade promo now follows the same dismissal as the banner. Dismissing the banner used to leave a full-height advert on the settings screen for good, which is not what the WordPress.org guideline on upgrade prompts means by used with moderation.<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>Renamed to Ankro. The WordPress.org review team asks a plugin name to lead with a distinctive, coined identifier rather than a generic descriptive word. Ankro is Esperanto for anchor. The text domain follows the name; the stored settings, the anchor_settings option and every hook are unchanged.<\/li>\n<\/ul>\n\n<h4>1.0.12<\/h4>\n\n<ul>\n<li>Fixed: the PRO upgrade promo kept selling to people who had already bought the paid edition. Only the banner could be dismissed, so the sidebar promo and the locked feature cards followed a paying customer around for good. The promo now checks whether the paid edition is active and steps aside when it is.<\/li>\n<li>Fixed: arrow glyphs in the admin menu paths, and in the strings handed to translators. An arrow inside a translatable string makes the glyph every translator's problem and changes the layout in any locale that drops it.<\/li>\n<\/ul>\n\n<h4>1.0.11<\/h4>\n\n<ul>\n<li>Fixed: deleting the plugin left the per-user \"dismiss\" flag from the PRO notice in the database. Uninstall now removes it for every user, not just the one who dismissed it.<\/li>\n<\/ul>\n\n<h4>1.0.10<\/h4>\n\n<ul>\n<li>The translation template was regenerated. It still named an older version of the plugin and pointed at source lines that had since moved, which is what translation tools read to show a string in context.<\/li>\n<\/ul>\n\n<h4>1.0.9<\/h4>\n\n<ul>\n<li>Renamed to Plogins Anchor - Sticky Add to Cart for WooCommerce so the name leads with the brand rather than a generic word, which is what the WordPress.org plugin review team asks for. The plugin slug is unchanged.<\/li>\n<\/ul>\n\n<h4>1.0.8<\/h4>\n\n<ul>\n<li>Tested against WordPress 7.1. Verified by activating this build on a clean 7.1 install with WooCommerce 11.1, not by editing the header.<\/li>\n<\/ul>\n\n<h4>1.0.7<\/h4>\n\n<ul>\n<li>Fixed the PRO promo on the settings screen quoting a price in PLN. PRO is priced and charged in EUR, so an admin on a Polish site was shown a zloty amount and then billed in euro, and the zloty figure was a fixed conversion that drifted from the real charge as the rate moved. The promo now shows the euro price that is actually taken.<\/li>\n<\/ul>\n\n<h4>1.0.6<\/h4>\n\n<ul>\n<li>The scroll threshold now works the way the settings screen describes it: a higher number keeps the bar hidden longer, a lower number brings it in sooner. Until now raising it made the bar appear earlier, not later.<\/li>\n<\/ul>\n\n<h4>1.0.4<\/h4>\n\n<ul>\n<li>Translations: completed Polish, German and Spanish for the PRO upgrade panel.<\/li>\n<\/ul>\n\n<h4>1.0.3<\/h4>\n\n<ul>\n<li>Fixed low-contrast admin headings under an OS dark-mode preference.<\/li>\n<\/ul>\n\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Added bundled Polish, German and Spanish translations for the plugin interface.<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>First stable release.<\/li>\n<\/ul>\n\n<h4>0.1.3<\/h4>\n\n<ul>\n<li>Renamed to Plogins Anchor for WooCommerce for a more distinctive plugin name.<\/li>\n<\/ul>\n\n<h4>0.1.2<\/h4>\n\n<ul>\n<li>Add <code>anchor\/bar_rendered<\/code> action and <code>anchor:bar-visible<\/code> front-end event for PRO analytics.<\/li>\n<\/ul>\n\n<h4>0.1.1<\/h4>\n\n<ul>\n<li><code>anchor\/bar_visible<\/code> filter so PRO and custom code can hide the bar per product without loading assets.<\/li>\n<\/ul>\n\n<h4>0.1.0<\/h4>\n\n<ul>\n<li>Initial release: a sticky add-to-cart bar on single product pages, revealed on scroll, with a configurable scroll threshold and variation-aware price\/availability sync.<\/li>\n<\/ul>","raw_excerpt":"Keeps the add-to-cart button in reach on long WooCommerce product pages with a sticky bar that appears on scroll.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/ku.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/377688","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ku.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/ku.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/ku.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=377688"}],"author":[{"embeddable":true,"href":"https:\/\/ku.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/motylanogha"}],"wp:attachment":[{"href":"https:\/\/ku.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=377688"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/ku.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=377688"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/ku.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=377688"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/ku.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=377688"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/ku.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=377688"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/ku.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=377688"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}