User Posts: Dave Hilditch

A new customer purchased yesterday and discovered that our widgets were not styling properly on the front end of their Hello Elementor site, and the Elementor ...


We have been working hard for a long time helping customers boost the speed of their WordPress websites. In fact, it's why we exist and why we made the ...


One of our customers who has been enjoying the speed benefits of Super Speedy Search, in particular with relation to how much it is speeding up his wp-admin ...


A customer of mine was struggling with an import. After activating the Slow Query Log inside Scalability Pro I discovered they had a slow query coming from a ...


We've been busy setting up our Speed Test environment so we can exhaustively measure all the themes and plugins out there and discover more performance ...


I wrote previously about the slow code that exists in WooCommerce for Onboarding tasks. They misuse the database in 4 separate areas and I've already ...


The WordPress dashboard can get quite slow as your website grows which is why we're always on top of it and adding more code to Scalability Pro to keep your ...


A potential client arrived yesterday on my Discord channel asking for help with slow WooCommerce Variations. It turns out, in their case, they only have a ...


I actually discovered this performance issue right here on our own website. Normally I discover performance issues on client or customer websites. From now ...


Up until now, we've been relying on creating manual coupons for users who wish to upgrade. There are many upgrade paths available when you buy our plugins and ...


If you have a large site, you probably noticed wp-admin slowing down a lot with the later versions of WooCommerce. WooCommerce have been working towards ...


Pricing products is never easy - sometimes you drop the price and it actually reduces sales! Over the past few weeks I've been considering how to increase the ...


Yesterday, to practically zero fanfare, we had our Super Speedy Pack launch. This new pack is available for per-year licensing (unlimited sites) and includes ...


Faster Woo Widgets is our plugin that replaces the default WooCommerce filters with faster, better alternatives. Over the past 6 months I've been hard at work ...


We've finally bowed to demand and altered our pricing structure while being careful not to hurt previous buyers. The full pack is still basically the same ...


A customer asked me for helping speeding up their imports. They are using WP All Import to import their products and keep the prices and other details ...

User Deals: Dave Hilditch
Super Speedy Filters
7 years ago

Super Speedy Filters

Since we couldn’t optimize other filtering plugins fully through Scalability Pro, we had to make our own. Super Speedy Filters is the fastest, best-looking, most SEO-friendly WooCommerce filtering plugin, with plans to make it work on all post types in the near future. It has been built from the ground up to transform filtering speed, with fully optimized ancestor tables, custom SQL, and fully customizable archive slugs and SEO control.
Auto Infinite Scroll
7 years ago

Auto Infinite Scroll

Tablet and phone users love to be able to keep scrolling rather than hitting small 'next' buttons, and our infinite scroll plugin adds that functionality with speed and scalability in mind. Firstly, it automatically integrates with WooCommerce and your blogs. Secondly, it has a magic memory stored in the browser cache. This means when users click back from a specific article or product to the archive page, the archive loads instantly - no waiting for pages 1, 2, and 3 to re-load - instant loading.
Datafeedr Merchant Research
7 years ago

Datafeedr Merchant Research

The Datafeedr Merchant Research plugin makes it quick and easy to find which merchants you need to join, directly from your product sets page. Instead of needing to paginate through product pages, it summarises the number of matching products per merchant and provides Google search links so you can double-check these merchants really are relevant.
  • Adds a merchant research button to the Datafeedr Product Sets page
  • Summarises the number of products available from each merchant, making it simple to know which merchants you should apply to join
  • Uses your existing Datafeedr API connection
  • Add the list of merchants to your search restriction to increase accuracy of your product sets and avoid the problem of irrelevant products sometimes appearing in your product sets & categories
This plugin is FREE and a fantastic tool to help you figure out which merchants and networks you need to join. If you're a Datafeedr user, it really is a must have.
Super Speedy Search
7 years ago

Super Speedy Search

Super Speedy Search brings fast and relevant search results to your users and your oft-forgotten site admins. Don’t pull your hair out with basic search which matches too many things, and doesn’t sort them properly. Our search weights are fully customizable, and we even have our own custom-coded ajax handler to bring ULTRA-fast ajax to your WordPress website.
The best WordPress engine optimizer, Scalability Pro
8 years ago

Scalability Pro

Upgrade your WordPress engine with Scalability Pro. Lifts the limits on how big your WordPress website can be by adding key indexes to speed up slow queries, rewriting queries to be faster, and providing toggle-on-off functionality for WP stuff you don't need which is slowing down your site.
Show next
Browsing All Comments By: Dave Hilditch
  1. Also, thank you for the note on our breadcrumbs, I’ll get that fixed asap.

  2. FYI – if you need more support, come join our Discord and we can chat on the channels directly

  3. I’ll have a look and fix this for you

  4. 2. Yes, if you have images hosted somewhere else it lets you use that single store of images

    3. No – you will not be able to resize these external images – in fact, only the FULL size image is every used.

    If you are worried about data usage, then wherever your images are stored – e.g. – if you place a CDN like Cloudflare in front of your domain then you can have Cloudflare resize the images on-the-fly for whatever sized device and whatever CSS setting is configured for that image. This works incredibly well and shifts all image resizing jobs over to your CDN.

  5. You get the beta option with the plugin – if I were you I’d buy the Super Speedy Pack and install Scalability Pro, Super Speedy Search AND Super Speedy Filters.

    I’m not familiar with this codecanyon plugin, but I had a look and as far as I can tell it just creates the relevant taxonomies for you (vehicle part, engine size etc) so Super Speedy Filters will let you filter on these and you can filter progressively and adaptively.

    e.g. progressively – only show X filters once Y filters have been selected

    e.g. adaptive – only show values which match existing filters.

  6. Our plugin automatically hides irrelevant attributes in each category. If you configure the shoe_size attribute but then someone views the shirts category, the shoe size category will not display.

    There are many context-sensitive widget plugins available – here’s my preferred one which lets you provide URL wildcards for free:

    There’s also this one:

    Here’s the option we have directly inside Super Speedy Filters to hide filters until other taxonomies have been selected:

    But really, for full control, the Widget Context plugin works perfectly along with Super Speedy Filters. It depends how much control you need. Our automatic widget display/hiding works incredibly well but some users choose to hide some filters until a category is selected for example and THEN they rely on our auto display/hide functionality.

    Regardless, if our display/hide/auto-hide functionality is not enough, the Widget Context plugin adds everything else you could possibly need. It’s fast too, tested against our 800,000 product demo store.

  7. In the meantime, you can probably speed up these queries quite a bit by adding the following advanced/beta/undocumented options to your wp-config.php – please test and let me know:

    if (isset($_REQUEST['fastajax']) && $_REQUEST['fastajax'] == 'true') {
    define('WP_USE_THEMES', false);
    if (isset($_REQUEST['sss'])) {
    define('WP_USE_THEMES', false);

    define( 'SSS_USE_FAST_SUGGESTIONS_AJAX', true ); // depending on your hosting, this may break the suggestions ajax callback

    define( 'SSS_FAST_VISIBILITY_CHECK', true);

    The above should go in your WP-CONFIG.php (not functions.php) and should go anywhere before the line which reads:

    /* That's all, stop editing! Happy publishing. */

  8. Agreed – I have an upgrade planned where I’m actually going to hold onto all the 2-character suggestion combinations in a front-end JSON object, so no DB calls will occur until 3 or more characters are entered.

    There already IS a delay, but maybe it’s too low (I think it’s 50ms at the moment) and I should definitely add an option to increase the delay and/or delay until the user hits space or enter.

  9. Ok, I’m going to implement a fix for this. I may need you to run a bulk update against your products to change a postmeta value, I can explain how to do a bulk update like this using your export/import tool if you don’t have a bulk updater plugin.

  10. I’d actually replied to you 5 days ago, but I made the mistake of replying privately which meant only admins can see it, not even you. Anyway – yes, happy to help – contact me through Discord, provide your order number, I’ll get this fixed right away.

  11. Hi – yes – the update is please contact me on our Discord server, you’ll find the link at the bottom of every page on this website to join – and send me your order number, I’ll get it fixed.

  12. Hi – sorry for the delay in replying. Can you please come message me through Discord and I can get this resolved for you? You can message in the #super-speedy-filters channel. I’ll need to diagnose your issue.

  13. Hi – as mentioned on Discord, if you can set up a staging/dev environment with a job I can run to import and delete the jobs and provide me SSH access then I can take a look into this.

    It would be easier if you could provide the slow query logs for the delete operation, for any queries > 0.5 seconds while the delete is running.

    If the slow query log doesn’t come up with anything, then I’ll need xdebug installed on your dev server where I can run the delete operation and capture the execution of the delete and step through it to investigate why it’s slow.

    You can see how to install Xdebug here:

  14. An update on the above – if you have variable numbers of images, it’s better to wrap the prepending job of imageurl + image path inside a function so that image URLs are passed through empty in the import if the image path does not exist.

    See the section titled Prepend Image Names with Image URLs for more info on this page.

  15. This has now been fixed. Please update to 2.73 and confirm here that it’s working for you now.

  16. Thanks for letting me know – I’ll take another look at this and figure it out properly for you.

  17. Bear with me, I’m looking at this now.

  18. Hi – checking – which part of affiliate coupons is supposed to be using external images? Or are you saying that affiliate coupons stops external images displaying ANYWHERE?

  19. We’re adding a sitemap to super speedy filters soon. But if you’re saying inline filters are producing different URLs to your sidebar filters then that’s a bug that I need to fix.

  20. Hi – the debug output is for the beta versions only, but I agree, it can get massive if you have debugging and verbose mode enabled.

    Check your verbose mode in Settings > Super Speedy Filters > Advanced

  21. I’ll try and add MySQL 5.6 compatibility by the end of April, but really you should upgrade – either MariaDB 10.2+ or MySQL 8+ – both give speed boosts to database queries, as well as elimination of intermittent slowdowns which happen with 5.6.

  22. Stuart – for faster answers, click the DISCORD link inside your account area and come chat directly to us.

  23. Ah – the latest version of FWW requires MySQL 8 or MariaDB. You should ask your hosts to upgrade you.

    If you want to use an older version, version 3.22 is the last version that doesn’t require MySQL 8.

    I’m going to try and make a version that’s still fast that doesn’t require MySQL 8 or MariaDB.

  24. I have confirmed the bug is what I think it is – if I change the default sort order in Appearance > Customise > WooCommerce > Product Catalog then all the products appear again.

    I’ll get this fixed in my dev environment – it seems to be new to the way WP_Query is behaving with the new WooCommerce update – but it would be very helpful if you could get me FTP access to this site so I can confirm it working here too.

  25. To clarify, the IP address in the last screenshot is my residential address – don't whitelist that one, whitelist my static VPN address of please.

  26. Looking into this, thank you for providing details

  27. Spoke too soon again – 6.31 still has this issue. 27 seconds added to wp-admin. Maybe it will go away when the new Product Attribute Table has been created.

    I’ll report back once that’s happened.

  28. My bad – I’d updated our demo sites where we test everything to WooCommerce 6.31 which is actually the latest version and this issue is already fixed.

    Foundthru was still on an older version which I’ve now updated and confirmed this issue is also fixed there.

  29. Also – this is the best starting point:

    Install Query Monitor, check your slow pages, look for slow queries and queries with very high row counts. High row counts commonly means that data is being parsed with PHP.

    e.g. the vanilla WooCommerce Price Filter – it loads ALL of your products into memory and then using PHP calculates what the minimum and maximum price should be. On a 100,000 product store that will kill your server.

    My filters have been built to scale and are tested every single release against multiple million product stores to ensure we haven’t messed up scalability and performance.

  30. I am implementing this week – if you can join the #price-comparison-pro channel on our Discord server we can chat more about which rules to implement and test cases to confirm it’s all working perfectly before release.

  31. Wow thanks – sorry I took so long to see this! If anyone else needs help and I miss a question, please visit our Discord server (personal invite in your account area) and nudge me to help you.

  32. All 3 of these features implemented two weeks ago.

  33. If you use a price range < $100 it's any price $100 or less. You can have overlapping price ranges if you wish since we don't count items per price range, so you can have < $100, $100 – $500, $500 – $2000 etc

  34. Yes I can make a refund – but the latest beta version of Super Speedy Search is awesome – you can play with it here:

    If you want to proceed with a refund, please email your order number to

  35. Hi – sorry for the delay in replying – I don’t have time right now to code this, but probably in mid-february I will have time. If this is something you’re still interested in come chat to me on Discord and I’ll get it scheduled in and detailed in our Trello development board.

  36. Thank you for letting me know – what kind of crash were you experiencing? I just tested logging in to my-account and it’s working for the two different users i tested.

  37. Hi – still delayed on getting to this, it’ll be done by end of Feb for sure, maybe before then. But to answer your customers question about including categories in the URL, you can do that with FWW without using Premmerce link manager.

    You can try switching off the permalink overrides in Faster Woo Widgets settings – there is a setting at the top to switch off the override – this would allow you to visit the product page even if it’s /product-category/category/product – but it will also prevent other pretty permalink features from FWW to be used.

    It may be a workaround that works for you though – maybe you’re ok with having URL parameters for attributes?

  38. Hi – I found the issue with Rehub – it was not overruling the rehub search box. If you can please test with 2.50 beta you should find a new option at the bottom of the settings > Super Speedy Search page. Choose to Override the WooCommerce Product Search and the Regular Search form and it should work perfectly now.

  39. This has been fixed in release 2.50

  40. This problem was our batch SQL processor failing due to timeouts. The client has 2 million products which shouldn’t really matter – the batches should work regardless the size of the database.

    I’m working now on fixing this to make the batch processor work for every size.

  41. Would you be willing to sponsor this feature add? I can heavily discount it for you and throw in a plugin bundle too. I have other bugs I’m fixing pre-new-year, so in any case it’ll need to wait until the start of January.

  42. FYI – If you can please download the latest Scalability Pro from your downloads page, it fixes the issue with PHP 8. It was a cascading issue – if the site was unavailable for some reason (cloudflare was blocking plugin updates!) then it was crashing in PHP 8.

    I’ve updated the plugin checker and I’ve migrated it to check for updates against my bitbucket repo so now it doesn’t break if the plugin updater website is not available.

  43. Can you please make sure you are using the latest version? The latest version is 4.76

  44. So you want something which will update your price to match your competitors price or your acquisition price * 1.04 (whichever is higher)?

  45. Hi sorry I missed this – refund processed. Come join us on Discord if you like.

  46. Sorry about the delay with this – I see adding compatibility with Premmerce Permalink Manager as a priority, but before the new year we’re focusing on fixing these bugs and getting FWW and SSS out of beta.

    This is the board we’re trying to clear before New Year:

  47. FYI – if you use WooCommerce it will automatically know the URLs for that one affiliate product, and then you can use an import tool like WP All Import to import the other URLs for that product.

  48. Refund processed

  49. I’ve created a Trello card here:

    Can you please send me access details for your server to me through Discord? I suspect there may be one of the SQL commands needs a slightly different format for MariaDB, but I can fix that quickly if you provide access.

  50. I’ve created a trello card for this here:

    Can you please come to our Discord server and provide access for me to your server so I can test this issue with MariaDB? It should work with MariaDB but it’s possible one of the SQL commands needs to be slightly altered for MariaDB but I’ll need to find out which one.

    Longer term, I’ll get another demo site set up using MariaDB to improve the testing process.

  51. If you are saying that attribute filters are working but the category one is not, can you please try saving the widget again? Also, check the visibility settings, parent term restrictions (should be 0 by default) and other filter dependency (e.g. requiring another attribute to be set before displaying).

    If none of these solve it, activate query monitor, clear your object cache and load a page where the category filter is supposed to appear. Maybe Query Monitor comes up with a red warning? If so, click that and send me a copy of the database error.

  52. I think I see what you mean now – you want the category name of the /women/ part of the category (parent to this category) to be displayable. Currently this is not possible unless maybe you also have an attribute or tag which holds the word ‘women’ or ‘men’ – if you have an attribute like that, you can add that to the title.

  53. I think I see what you mean now – you want the category name of the /women/ part of the category (parent to this category) to be displayable. Currently this is not possible unless maybe you also have an attribute or tag which holds the word ‘women’ or ‘men’ – if you have an attribute like that, you can add that to the title.

  54. So – you want it to keep the existing filters when you click onsale? e.g. it should go to /sale/hbx/?

  55. Why not hide the products you don’t want to see through the back end? Anything permanent like this should not be SQL’d on the fly – update the products to hide them from the catalog.

  56. You say the shop is still slow, but since you removed that sorting, the main query dropped from 2.5 seconds to 0.2 seconds. Still not perfect, but it’s usable.

  57. For anyone on our Discord server, you can follow the rest of this thread here:

  58. It’s highly likely that Scalability Pro *has* optimised your main query, but Scalability Pro cannot do much with awful woocommerce filters where the SQL queries are not actually slow – where all the slowness happens in PHP. That’s why I created Faster Woo WIdgets to fix this other main issue for slowness in wordpress. To check your slow main query, delete all the indexes and deactivate scalability pro, then load your shop, open queries in query monitor, look for the MAIN query, check the time. Then reactivate scalability pro, add the indexes and check the main query time again. It’s always faster – that’s what it does. But you’re only as fast as your slowest bottleneck. I don’t advise refunding scalability pro, I advise adding faster woo widgets and super speedy search.

  59. If your slow queries are coming from woocommerce, scalability pro will only speed up the MAIN query. To speed up all the filter queries I made the plugin Faster Woo Widgets. The only way to optimise those slow filters was for me to write replacements from scratch.

  60. Hi – sorry – no progress yet. Been working on bug fixes for FWW first. It should be done in November. Sorry about this extended delay but I will make it compatible with Permalink Manager Pro as soon as I can. It should be very early November so about 3 or 4 weeks away.

  61. Auto infinite scroll does not create indexes. If this is referring to Scalability Pro, indexes are up to date as soon as you edit anything – they are maintained directly in the database.

    If this is referring to Faster Woo Widgets, there is a button in there to re-index and recreate the object_ancestors table we create.

    If this is referring to Super Speedy Search, the current beta version maintains the indexes automatically, the upcoming beta version has a newly created table which will be maintained automatically but there will also be a button to rebuild the table if needed.

  62. There’s no harm to having multiple indexes – I said before, there will be a minor impact on writes to postmeta and a little extra space used on the disks, but not much to notice. I’ll upgrade Scalability Pro to detect other optimisation plugins and indexes created by other plugins now that they seem to be adding indexes too!

  63. Also note that your /shop/ page is probably very slow due to your filters. All other filters we have tested do not scale well. It’s why I coded up our Faster Woo Widgets plugin so be sure to check that out too.

  64. Hi – yes, can you provide any more details? If you wish, come join us on our Discord server where we can chat live and I can help you.

  65. Hi – if you message me directly on Discord you can send access there. Also, you can create a private answer onto this question if you wish with acess details.

    Thank you for letting me know this is using Permalink Manager Pro. I’ll get a solution figured out for you for this.

  66. Also – if you could please contact me through Discord (link in your account area) and provide me with SFTP access, that would help a lot in debugging how your permalink manager is working.

  67. Neo – can you please add more content to the Trello card? WordPress does not natively allow non-unique slugs, so I’m guessing you must be using a permalink manager plugin of some sort?

    e.g. if I create a 2nd category called Jeans under /women/ when I already have /mens/jeans/ then wordpress creates the category slug as /women/jeans-women/

    My plugin will have to be updated to work with whichever permalink manager you are using. Please update the trello card to help me figure this out.

  68. This was fixed again (failed first attempt) back when I added the wp_fww_ancestors table. This single table is prepopulated in the background and eliminates the need to join to so many tables.

  69. This was fixed – it was a situation with lots of top-level taxonomy terms. I refactored how the pretty-permalink URLs are dealt with and also added options to settings page to enable/disable key features to make narrowing down any future freezes far easier, while also giving more control to admins over which plugins to use for which pieces of functionality – e.g. some people like to use other plugins that alter Woo titles, so you can now disable that feature too in FWW.

  70. I added this back in version 3.00 or so – you could always use the Widget Context plugin, but anyway now in Faster Woo Widgets we have the following two options:

    Hide this filter until X,Y,Z taxonomies/attributes are selected – e.g. you could enter ‘product_cat’ here to hide other widgets (and speed up your shop by not running the code) until the product category is chosen.

    Disable this filter until X,Y,Z selected – actually runs the code but then makes the filter transparent and not clickable until product_cat is selected (for example). A tooltip text box is also provided so you can inform the users what other filters they need to select in order to use this filter – e.g. “Please select a Car Make before choosing a Car Model.”

  71. Implemented – I think you actually provided the code for this!

  72. Implemented a while back – I’ll get better at keeping these feature requests up to date – I’ll keep a link to the feature request in the Trello card from now on.

  73. Implemented back in 2.51 – sorry for not updating this – we’re on 3.18 now

  74. Implemented in version 2.90 I think – there or thereabouts. We have a nice little circle next to the filter title showing how many values in that filter are selected.

  75. I’ve asked Glyn to build a demo site for you so we can find out. This may not be completed until Monday.

  76. Which version?

  77. Actually – it was added in version 2.34 – sorry again for not updating this feature request. Got a new docs guy on board now, so this will become a thing of the past.

  78. Sorry for being so slow to update this feature request – compatibility with Woo Brands and other custom taxonomy plugins fully working from version 2.53 which was back in April. For reference, we’re on version 3.18 now!

  79. This is fixed – i think in version 2.99 roughly

  80. Implemented in beta 3.03

  81. Can you please test disabling the option in scalability pro that removes pagination and ordering and re-test with formidable forms?

    If setting those options to ‘slowest’ fixes this please let me know and I’ll update the plugin to fix this with formidable forms.

  82. Yes, you can delete it manually. I’ll figure out why it’s not deleting properly.

  83. Also – please note that the Walmart site is using Ajax to populate the page – if you view source on the page, the prices do not exist. That means, to scrape the site you should use the Scraper API Rendered option.

  84. There’s a beta update released today – can you check if that fixes it, and if it doesn’t please come join our discord server where we can help you over chat.

  85. Note: That’s quite a hard thing to debug since the ‘save product’ or ‘publish product’ button does stuff in the backend and THEN shows the next page, so you don’t see any of its activity in Query Monitor. If you can create a dev clone of your site then we could run xDebug on the Save Product button to find out everything that happens. You could also perform a grep through your source code to find which plugins or custom functionality is hooking onto the Save Product button. If you SSH to your server, then change directory to your plugins folder then you can run this to find plugins that add to the save product hook: grep “‘save_post'” . -R -l

    Then repeat this inside your wp-content/themes folder to search your theme and child theme.

  86. I’ve seen cases where the permalink changes don’t stick – visit Settings > FWW, hit Save, then Settings > Permalinks and hit save. If it’s still causing an issue, please come to our discord server and I’ll help you out:

  87. And finally – we just added a new bonus to the bundle packs where you get access to our Discord server to chat directly to us and help us with development.

  88. To clarify – if you can provide me with a dev/test environment for the Yith Brand images, I’ll make sure that it’s possible to use the image from Yith for the inline filters.

  89. Hi – The Faster Woo Widgets plugin contains some upgraded code of the Super Speedy Sale Page. Please disable the Super Speedy Sale Page prior to activating Faster Woo Widgets.

    I’ll get this error fixed in future versions, but regardless the Faster Woo Widgets plugin is going to tell you to deactivate the Super Speedy Sale page as it’s redundant if you have FWW installed.

  90. See my separate answer.

  91. We have a copy of the theme, we are installing it on a demo site, we’ll get back to you today with an answer.

  92. This theme was investigated, and we found it compatible with one exception (including a workaround for that exception):

  93. Hi – I see bakeware coming back sub-second – – maybe you’d checked before I reactivated Super Speedy Searhc.

  94. It’d be great if you could tell me if you tried this and if it was compatible with the Real Homes theme – if it’s not, if you can send me a copy of the theme I’ll make it compatible.

  95. Sorry about the delay with getting to this. I’ll try and get a solution for you over the weekend. One thing to check is changing the display option for gallery to the default and then it normally works – see this other answer for a similar situation:

  96. What I mean is: on your search results page you could include a Faster Woo Widgets taxonomy or category widget and this widget would be filtered based on the search you’d just performed. That means you could present a list of matching taxonomies/categories/attributes/colours/whatever above the search results and provide this extra option you want to provide to your users to show matching taxonomies.

  97. Also – re: Faster Woo Widgets – yes, categories, custom taxonomies, ajax price etc, yes – I’ve re-enabled a bunch of these – they all got disabled when I’d put Oxygen onto that website to test the speed of Oxygen. If you click here then expand the BRANDS widget you’ll see a custom taxonomy in practice – same with TAGS:

    Sorry for the temporary slow demo site but we use it a lot for testing various things and fixing them. I’ve got Glyn building a large demo store that won’t be edited and it’ll have various subdomains so you can see it all with different options, different themes etc and I’ll figure out some way of allowing potential customers to try out the admin panels too.

  98. It doesn’t really matter – taxonomies can be hierarchical, so if you don’t need hierarchical then use attributes. There are a few extra display options for attributes rather than taxonomies.

  99. I think I would need to take a look at your import to help you with this – can you submit a private answer with credentials and provide the URL of the import that fails so I can look? Would also be useful to see your debug.log file.

  100. Can I help you with Faster Woo Widgets? It’s an awesome plugin and we’ve been working hard on it – you know there is a beta version available with major new features for SEO, permalinks, canonical control, custom taxonomies, woo brand compatibility and more?

  101. And if it doesn’t work, I’ll alter the plugin to make it work or write a guide for you showing the workaround to make it work.

  102. Update on this – we’re looking at Oxygen properly next week. I’ve had many reports from Oxygen users that while the Oxygen front-end is very fast, the admin area is incredibly slow so I’ll be looking at speeding that up.

  103. Alternatively, curry’s are changing the HTML on page load, if you view source you’ll see better CSS classes you can use. I found this for regular price for currys:

    #product-actions .prd-past-amounts span[data-key=”was-price”], #product-actions .prd-amounts .current

    (note there are 2 selectors in there since the regular price will change CSS selectors if there is a sale happening)

    and then for sale price you can just use:

    #product-actions .prd-amounts .current

  104. Ok – can you please test your WooZone/AZone Imports now and let me know if: A) They still work, B) They are far faster

    I discovered that WooZone is doing a whole lot of unnecessary work every row it imports – basically it recalculates everything to tell you how fast it’s done it, and yet calculating this stuff is what is slowing it down…

    I had to alter the actual WooZone code – I have a note of the alterations I made and will write these up into the case study. If this works for you and you like the speed, we can send the optimisation instructions from the case study to the Azone plugin authors so they can improve their speed.

  105. Ok – so that URL loads, but I don’t see price comparison pro on it anywhere. Can you set up a test page where I can see what you’re trying and link me to that URL?

    I can see you have Price Comparison Pro activated when I look at the source code (I can see it’s loading some CSS in the source) – what is it you’re expecting Price Comparison Pro to do here?

    Which images do you want it to load? That’s not quite what it does. I need more info to be able to help.

  106. The example you sent me, it looks like it’s correctly grabbing the price but that’s from rather than currys – do you have the currys example you said wasn’t working?

  107. I logged in, I saw this in your CSS:

    The CSS selector should just be what I said, the # at the beginning means CSS ID whereas the . at the beginning would correctly identify the element based on the CSS class.

  108. These are all fixed in beta 2.66 – the ‘override yoast’ option is renamed to ‘override meta titles and meta descriptions’ – if you don’t enable that, it won’t override your rank math seo stuff.

  109. Why don’t you just alter your import job to import those variation values as options instead? WP All Import will definitely be able to help with this and the options will just be custom postmeta data.

  110. I get a 404 error on that page, but anyway to answer your question I’ll need something more specific. Provide me a URL where you’ve added Price Comparison Pro and I can investigate to find out why it’s not scraping.

  111. Here’s CSS to use to grab the price from that page: .summary .woocommerce-Price-amount.amount

    Have you followed the guide to using the SelectorGadget chrome extension? It really helps make it quick and easy to figure out which CSS selector you need to identify the price on the page.

  112. There are a few choices for Product Options/Product Addons. Here’s a free one:

    Or there’s this: or or

    They all do similar things – basically let you collect additional info (e.g. with a select box containing compatible models) before purchase.

    re: your single attribute – If model and type depend on each other then yes, one attribute, but if there are a list of models and a separate list of types that don’t depend on each other and are valid on their own then 2 attributes would work.

  113. Just one thing – have you tried this: Add your faster woo widgets to your sidebar, visit settings > Faster Woo Widgets, configure permalinks, hit Save, visit Settings -> Permalinks, hit Save – then test – I know this fixes a known bug in another scenario when permalink slugs end up duplicated so that may also work here.

  114. Hi – I’ve got the access details, I’ve been working on a case study but I’ll take a look at this as soon as I can and see if it’s something simple to add compatibility. I’ll try and take a look tomorrow morning, you’ll have an answer for sure by Monday.

  115. Ok – thank you for providing access, I’ll try to take a look at this tomorrow morning.

  116. Ok – coupon code: info36 – – will work against the Unlimited Use + Lifetime support option there

  117. I did see some slow queries before with query monitor and show processlist, in particular WooZone has some very badly written SQL queries. It may be possible to optimise them a bit using indexes, but really it looked like I need to rewrite them to run fast.

  118. No unfortunately not! You sent me your public key, that’s not how SSH works – if you can’t make an SSH key, I just need SSH access to be able to log onto the server – there’s a guide here:

    But when I say SSH access, I mean to be able to log onto your server, not just FTP, but to be able to see and interact with the services – mysql, php, nginx, apache, redis, whatever you’ve got – in particular I need to access mysql to enable the slow query log. It might be your host doesn’t provide SSH access? If so, I’ll need to clone your environment to my own so I can actually work on this.

  119. Cool, ok, I’m logged in – where is the example I can look at, which website are you trying to scrape, which CSS selectors did you try, which widget is it, where is it?

  120. Can you add a private answer here and i’ll send you a private coupon to get it again (for free), that’s the easiest way.

  121. Changelog is up to date – fresh update released today, but still not for product variations. I’m kind of holding fire on optimising this because Woo are restructuring their tables which will help me optimise. In the meantime, use product rules where possible instead of variations and use an object cache to speed up the remaining variations.

    Product rules and product options are better/faster if the price doesn’t change with these options or if the price changes by a set amount.

  122. Hi – I can issue a refund – sorry I missed this private question – I still don’t see a question though – I could try logging into your site but I don’t know: 1) Which URL you have tried this on? 2) Which sites are you trying to scrape? 3) Which URLs are you trying to scrape.

    Please – if you wish to continue using the plugin, I can help you, but please ask a fresh question and provide full details about what you are trying to do rather than just “It’s not working”

  123. Replied to your email, waiting on SSH access so I can enable the slow query log and find out the query groups that are performing badly here.

  124. The EXPERIMENTAL option was the 3rd or 4th option down relating to fixing LEFT JOINS. The way this is handled is improved in the latest beta and avoids these errors.

  125. That’s odd – I see it in your downloadable product permissions. Did you contact me in another way and we resolved this already?

  126. That’s great news! Thanks for letting me know

  127. Fixed in version 3.75

  128. Yes please – or you can add the screenshots here with Imgur. I specifically need an import I can run and ideally re-run multiple times so I can spot what is slowing down WooZone.

  129. I’ve created a coupon for you since without it you won’t get updates – coupon code is PHILIPRENEW – it’ll work for 100% off the Scalability Pro lifetime unlimited license. Sorry for the hassle with this, it was my mistake deleting the old product when updating licenses.

  130. The login you provided doesn’t work

  131. Are you entering this into wp-admin->WP Intense? If so and it’s still not working, can you please create a private answer below and tell me your license key and order number? (You are correct the license key is the API key from your account area)

  132. I’ve added this new option – show price ranges as text links – in Faster Woo Widgets beta 2.47. The user can choose to display the price ranges in a drop down box, or as text links like this:

  133. Fixed in beta 2.47. Counts now appear inline, inside the label, and I’ve greyed them out a little and switched the ordering of the CSS style sheets since a recent WooCommerce update was causing their CSS to overrule ours.

    I’ve also added a KB guide on how to customise the appearance of the product counts:

  134. Hi – are you still looking for help with this?

  135. FYI – I’m trying to reproduce this in my own environment anyway, but if you can provide access it’d be v helpful

  136. I’ve had a quick look at this – rounding up the pcpro bugs for a quick sprint today – I see 8.50 with 10 scored out (looks correct), I see 8.50 at the top of the comparison table (also correct). The part I see that’s wrong is in the add to cart button – I think this is coming from your theme probably.

    I also see the wrong price in your price history section –

    I can’t access your wp-admin however – could you please create a private answer here and provide me access to wp-admin? I would like to be able to edit the product to see what’s contained inside it. I’m guessing at this stage that somehow the sale price is not being updated into WooCommerce but Price Comparison Pro is updating the sale price on the page since it has the prices cached.

    That would make sense with what you’d said earlier I think – that only the cheapest regular price is being set in Woo rather than the cheapest overall price.

  137. Thanks for reporting back – I’ll update the answer and the plugin will be fixed so that this won’t happen on any future sites that don’t use categories.

  138. Houzez theme is now fully compatible with one caveat – there is a display option inside the Houzez theme where the authors have neglected to surround an image URL with quotes.

    When images are being uploaded to WordPress, that is fine, since image URLs will have a standard format – but when using external images, and in your specific case, some image URLs could have brackets in them.

    This affects only the featured image, and only with 1 of the 5 display options in the Houzez theme. You can see a workaround for this here if you need that specific display option in Houzez:

  139. I think so long as you added the category widget, visited settings then hit save, then you can delete the category widget and it should still work with ‘filter’ in the base permalink if you wish that.

  140. I’ve fixed that – the way I fixed it was by adding a category widget, visiting Settings -> Faster Woo Widgets then hitting the save button then deleting the category widget again. I’ll add a fix to ensure you don’t need to go through this and you can have a shop without categories.

  141. With one caveat – when you check your shop, please can you empty your object cache and any widget cache you have enabled? Somehow I’m seeing /filter/… still appear as a URL even though I’ve changed the attributes only filter base to /shop/

  142. Can you please check your shop and confirm you can’t see this doubling/trebling bug again?

  143. More specifically – it’s also when you have the ‘attributes only filter’ set to something other than ‘shop’ – or whatever the shop url is. I’ll figure out a fix for this – in the meantime, I’ve altered your setting to ‘shop’ instead of ‘filter’:

  144. So it seems to be with certain themes, if you don’t have a product category widget, and if you have the shop set to the home page, this is when this doubling bug appears. Working on a fix now.

  145. Thanks for this report. I’ll try and have this figured out today.

  146. Ok – send the credentials to – they get deleted from there after a month. Let me know when you’ve sent them. I’m not working tomorrow, but I’ll take a look Thursday and figure this out for you.

  147. And failing that, can you provide credentials (FTP and wp-admin) so I can take a look? You can answer with a private answer here, or edit the original question and enter the info in the hidden area.

  148. If you install the plugin mentioned here, how many image sizes does it tell you that you have? If you reduce the active image sizes to just the 3 or 4 you really need, how fast does your import proceed?

  149. Off the top of my head, the only thing I can think might cause something like this is the ‘trailing slash’ feature in WordPress – do you have trailing slashes disabled? e.g. do your site URLs always end with a slash or always end without a slash?

  150. Ok – when you say ‘variations’ you actually mean ‘attributes’ – right? But yeah, it really should not be doubling the attributes.

    I’ve not seen this elsewhere – to figure it out I’ll need FTP and wp-admin access – can you update this question with credentials to access your site? (add them in the private area, not public!)

  151. Thank you for the detailed bug report. I understand what you mean – I will take a look at this as soon as I can, probably Thursday this week. Added to the bug card here:

  152. Hi – please get back to me if you’re still looking for this. I have time to do a free perf analysis this week.

  153. In your case, you are not yet using an Object Cache – this should be your first thing to do to improve performance.

    I can see lots of meta-related queries, these are get eliminated (cached for multiple pages rather than rebuilt every page), so adding an object cache will give you a good boost.

    Read this getting started guide:

    You need good hosting, object cache, then if stuff is still slow consider my plugins.

  154. For extra debug info, if you enable debug logging then any queue processing or scraper processing errors will get output there:

  155. I guess you mean ‘filters’ being doubled, like /filter/black/black ? If so, can you confirm this is only happening when you have the shop as your home page? It’ll help me massively in tracking down this bug.

  156. Ah – ok, interesting that you found 2 bugs here: shop as home page is not working (I think I know why, I’ll implement a fix) and 2nd bug that variations are being doubled?

    Can you explain more on the variations being doubled? That shouldn’t happen. Is this also from the shop home page?

  157. Hi Yannick – I cannot log in – I tried /wp-admin, / and /my-account/ but none of them give me a login area.

  158. Can you upload screenshots of what you see in Query Monitor? It would be useful to see:

    1) The top QM bar (total queries, total query time, total page time)
    2) All queries, ordered by execution time (descending) – screenshot of slowest queries
    3) Queries by component
    4) Queries by caller

    It does indeed seem very slow, but it’s difficult to tell right away what the problem is.

  159. Are you still seeing this? Would you be able to view the wp-content/plugins/faster-woo-widgets/readme.txt file? The version number is at the top of that file.

  160. Implemented in beta 2.46

  161. And to answer your question about which plugins – it depends how many products you have – if it’s more than 3000 (including variations) then Scalability Pro will speed up the main WP_Query on both the archive and the product detail page. You should also look into getting Faster Woo Widgets (use the latest beta version) since this provides adaptive filters which are very very fast – when I tried filtering on your shop I regularly saw ‘no matching results’ which wouldn’t happen with adaptive filters.

  162. Hi yes – I’ve been working on FWW updates, finishing that today and the rest of the week and next week is going to be other business – bug fixes, perf improvements etc.

    I’ve added this to the list of tasks for this sprint:

  163. Harvey – could you please send a copy of Oxygen builder? I need it to add compatibility and fix the css.

  164. I’ve added some fallback code to beta 2.45 so that it does INNER JOINs for the first 5 attributes that are selected but then reverts to the slower WHERE EXISTS for other attributes after that.

    This should still be very fast since the first 5 INNER JOIN attributes should reduce the result set size that the WHERE EXISTS has to filter across.

    Can you please try installing 2.45 and let me know if that fixes your error?

    Regarding Oxygen Builder – I’d like to add support for this – can you please send me a copy of the plugin and I’ll test it on my local dev? I’ll fix up the default CSS etc too since yes, you are correct, the filters ‘inherit’ whatever your theme has configured for WooCommerce filters, so if that CSS is removed by Oxygen I’ll have to implement some defaults.

  165. Ok – for the filters you added, were a lot of them custom taxonomies? Are they hierarchical custom taxonomies?

    72 filters sounds like a LOT! With the way the underlying database is designed, to avoid the 61 table limit I will have to redesign the underlying table structures so that filters can be in a WHERE clause rather than a JOIN clause.

    re: the shortcode bug, thank you for letting me know. I’ve added an item to my bug list here:

    Can you tell me what theme you are using too or which builder you are using? I’ll get that installed on my dev environment so I can replicate what you are seeing.

    Even more helpful would be if I could get SFTP and wp-admin access to that site if it’s a dev/test site?

  166. Just a quick update that all reported bugs have been fixed in beta 2.40. There is still more testing to happen, so more bugs may turn up, but so far it’s looking very good.

    Quite a few extra features because of this custom taxonomy – for example, you can add the custom taxonomy terms to your SEO titles, shop titles etc, and you can even use our ‘Inline Filters’ option to include clickable filters beneath your product (configurable) which show you the value for that product and provide a link to view other similar products.

    For example, products with ‘brands’ set, you can choose to show ‘brands’ inline, then any product with a brand will have an extra hyperlink beneath it allowing you to filter to only show the brands of that specific product.

    Next I’ll be finishing the testing, confirming no more bugs, then as much documentation as I can, then this will all be released to core.

  167. I’ve added some 3 year plans, if you upgrade within 6 months you would get whatever you paid already reduced from the price of whichever 3 year plan you go for:

    Let me know and I’ll make you a discount coupon when you’re ready.

  168. I’ve seen this in current beta – is it beta you’re using?

  169. Do you have your WP Cron running? If you install the WP Crontrol plugin or something similar you can see your cron jobs in the queue and any error messages from them.

  170. Visit settings page, save settings, this error should go away once you’ve saved settings once. Fixed in beta.

    I’ve added a task to my trello card to double check this line in 2.27, but current beta 2.38 has no errors of this kind in various environments.

    You can see the changelog here since 2.27 – a LOT of changes – I recommend you test beta on a dev server, but saving the settings in 2.27 should fix that bug.

  171. Fixed in 2.34 for categories AND custom taxonomies

  172. Found the bug, fixed it. There was a product category called ‘uncategorized’ and this was conflicting. I’ve implemented a better check to prevent the main query running unless it’s on a page where it’s required.

  173. I’d appreciate any comments and help anyone can provide with testing the new feature to address this feature request – more info available here:

  174. I’d appreciate any comments and help anyone can provide with testing the new feature to address this feature request – more info available here:

  175. I’d appreciate any comments and help anyone can provide with testing the new feature to address this feature request – more info available here:

  176. I’d appreciate any comments and help anyone can provide with testing the new feature to address this feature request – more info available here:

  177. A little update on this:

    The custom taxonomy is pretty much ready with only a couple of things left that really matter:

    There is a bug preventing taxonomy titles appearing and I haven’t implemented URL rewrites for /brand/pedigree/ yet – but I have implemented /pedigree/ – so, remove the base from the custom taxonomy in FWW Settings page and you can see this all working.

    I’d love your help to test this, especially if you have a dev/test server with Yith or Woo Brands or any custom shop taxonomy – the latest beta is 2.34 updated 5 minutes ago. If you do install it (from your account -> downloads):

    1) Visit Appearance -> Widgets, add new custom tax widget, choose the taxonomy and any other stuff you want (the tax base field is not properly used yet, so you can ignore that)

    2) Visit Settings -> FWW, scroll to the Remove /product-category/ prefix section and you’ll find your taxonomies – you can re-order them and you can tick the box to remove the permalink prefix (e.g. remove /product-category/ or remove /brand/) – make sure to tick that just now since I haven’t implemented the rewrite rules for /taxonomy/* yet

    That’s it – visit your shop and test. I’m adding items to my testing checklist to try and make sure nothing falls through the cracks – if you find any issues, let me know – I’m probably most worried about behaviour here:

    * Single product page where product has multiple taxonomies

    * Product tag archives

    * Brand/custom tax archives (e.g. woo brands, yith brands – specifically I mean the extra archives these plugins create like the A->Z list of brands and where those clicks lead to)

  178. You can use the software forever, but the yearly license is for updates and support. It’s similar to other plugins that do yearly licenses to cover ongoing support and development costs. I used to only sell the plugins with lifetime licenses, but there wasn’t enough revenue to cover development costs so I had to take on performance analysis and optimisation jobs to have enough revenue to develop the plugins. I reduced the price when I moved to a yearly license structure, and I have nice upgrade options – if you upgrade within 6 months of purchase, you get the full amount you spent already as a discount. After that, you get 50% of what you spent as a discount on any upgrades.

  179. The category widget has been refactored, so in beta 2.34 this bug is fixed

  180. Fixed in the custom taxonomy and I’m about to refactor the category widget to extend the custom taxonomy widget so it’ll use the same code except with ‘product_cat’ fixed and a different title.

  181. I think I need a better name for the ‘Reset/Do not reset filters’ option in the category and custom taxonomy widgets.

    If you have reset chosen, all categories will always display, and the product counts will be the full product counts for those categories.

    If you have donotreset chosen, only the categories which match your other selected filters or other selected taxonomies would be shown, and the product counts would be reduced.

    For example, if you were on /shirts/white/, with donotreset chosen then only the categories with ‘white’ items would be shown, and the product counts for those categories would show the number of white items in that category.

    I don’t think “Reset filters” or “Do not reset filters” captures this functionality properly – if anyone has ideas for what to call these two options let me know.

  182. There’s an upgrade planned for Scalability Pro which will allow you to temporarily alter the ‘registered sizes’ when you are importing to only import 2 sizes – one for Woo thumbnails and the other for the featured image. In the meantime, you can try installing the ‘Image Sizes’ plugin and have a look at how many registered sizes you have – if you remove sizes you don’t need, your imports will speed up:

  183. What is it that’s causing you to add products so slowly? Is it import speed, or sourcing products?

  184. This bug will also be fixed in this sprint:

    I’ve updated the Trello card with more findings, thanks in part to @twardy.

    In particular, this feature add-on will:

    1. Retain your existing brand pages (or whatever custom tax slug you have)
    2. Allow complete control over the URLs – the slug, whether a slug appears or not, and which of the various slug combos is the canonical.

    To explain, here are some URL examples with the product brands custom taxonomy – here I’m using ‘shirts’ as a product category, ‘white’ as a product attribute, and ‘adidas’ as a custom taxonomy (in this case a brand custom taxonomy):

    All of these URLs would be allowed:

    • /product-category/shirts/brands/adidas/white/
    • /shirts/brands/adidas/white/
    • /shirts/adidas/white/
    • /brands/adidas/
    • /brands/adidas/white/
    • /brands/adidas/shirts/white/
    • /adidas/shirts/white/

    In the widget settings, I’ll allow users to configure the /brands/ slug, and in the FWW settings page I’ll allow users the same control currently available for product categories – i.e. you will be able to remove /brands/ from the canonical URL so /adidas/ works as well as /brands/adidas/ but the /brands/adidas/ would have a canonical URL pointing at /adidas/.

    Now with the addition of additional taxonomies, users will also need a way to order the taxonomy slugs, so I’ll be adding that in too – it’ll use a similar kind of drag and drop config as I’m using for attribute ordering, but in the case of taxonomies, slugs would always be used – with attributes, it can be either slugs or attribute key/value pairs.

    e.g. if the user has both a brand taxonomy, the settings page will allow them to configure if the canonical should be /adidas/shirts/ or /shirts/adidas/

    The good news is that last years work on refactoring the code to use a Link class makes this all a *lot* easier – that class will handle everything relating to:

    • Generating the correct URL for the sidebar for links to that filter – e.g. on the /shirts/ page either linking to /adidas/shirts/ or to /shirts/adidas/
    • Generating the canonical URLs
    • Deciding whether the on-page meta tag should be noindex – sometimes bots will make it to a nofollow link – and with FWW you can have a page be indexable and yet have a different canonical, or you can have it not indexable with a different canonical or any combo.
    • Deciding whether the links should be nofollow in the sidebar or product links – this will work with the other generic rule of “Minimum products required to index” but I’m thinking custom taxonomies don’t need to be included in the “Total maximum attributes in canonical” setting or the “Maximum values per attribute in canonical” setting.

    If you have comments on any of this, let me know in the comments.

  185. Also – if you’re thinking to get Price Comparison Pro, I recommend you get the plugin pack – it includes PCPro and you can then have peace of mind that performance issues will never hurt you.

  186. That’s great news, 12000 products is not so many, but it’s enough you’ll notice a speed boost from Faster Woo Widgets and Scalability Pro.

  187. We already have the option to allow you to control the category order – please visit the settings page of FWW Beta and enable the “Allow Manual Sorting” option. This gives a slight performance impact, but will then respect whatever ordering you have chosen for your categories/attributes.

    Also – there is already an option to show just the children of the current category. One potential use case is to have 2 category widgets – one showing the top level hierarchy only and the other showing only the children of the currently selected category. This 2nd widget option will only display IF a category is actually selected.

    To use this option, visit Appearance -> Widgets, expand your FWW Category widget, then change “Type of category list” to “Children”.

  188. This was added in the beta version about 6 months ago – I’ve still to document how it works, although it’s pretty clear from the settings page – you can either have ?onsale=1 (or whatever URL parameter you wish) or you can have /sale/dogs/ etc so /sale/ would come before your filters.

    In addition, the beta version allows you complete control over how these on sale pages behave for googlebot – e.g. you have separate control over indexing the onsale pages as well as canonical, nofollow and noindex control. You can ommit onsale pages from googlebot if they have fewer than X items, or if they have more than Y attributes selected, or if they have more than Z values per attribute selected.

    The on sale pages will be included in the upcoming complete top & bottom text control feature upgrade which will allow you granular level control over text above and below your product pages.


    It’s working perfectly with that setting – so:

    If you have “Display current category as removable filter” set to yes then clear filters will revert to /shop/ otherwise it’ll revert to category.

  190. Ah – wait – that’s by design – if you click ‘clear filters’ it wont count the category as a filter.

    I’m testing with the Existing Filters widget – there’s an option in there to have category be a filter in that widget. In *that* case then the ‘clear filters’ button should revert to /shop/ instead of /dogs/

  191. This is sort of still an issue – it doesn’t go to a 404 page or anything, but:

    When you click to remove ‘bowl’ it correctly goes to /dogs/ but when you click to ‘clear filters’ it only goes to /dogs/ rather than to /shop/.

    I’m guessing it’s a conflict with the ‘do not reset’ category option.

  192. All fixed in beta with the new FWWLink class.

  193. Titles and tags and everything has been massively improved.

  194. I don’t have any repro for this. Can I ask: Have you disabled sorting with the Scalability Plugin?

    If so, disable that option if you wish to be able to sort your archive results.

    You can see it working here:

  195. Fixed a while ago in beta

  196. I’m closing this bug – if you wish to follow progress on Yith & Woo Brands compatibility, it’s being added through a custom taxonomy widget which you can upvote to follow here:

  197. Confirmed – if you use slugs for each of the parameters, it works, but if you use key/value URL parameters it doesn’t work.

    Fixing it now.

  198. I have no repro on this at all, nor any similar reports from other users.

  199. Thanks KT for debugging this – I’ve fixed this in 2.33 which you can see on Liam’s site.

    2.33 will be deployed along with other updates soon.

  200. Liam – re: the a-p-c filtering issue:

    If there is no category, then there *must* be a preceding slug, e.g. /filter/ or /filtr/ or /f/ or whatever.

    You set this inside FWW settings under the “Attributes-only permalink base” setting – please do not leave this empty.

    Here you can see a-p-c filtered correctly with pretty-permalinks:

    Also – when you change the permalink settings, you may need to visit /wp-admin/options-permalink.php and hit the save button. The plugin attempts to do this for you, but it seems like sometimes it doesn’t succeed.

  201. Hi – this was an error – the version WAS 2.32 but the plugin header wasn’t updated to reflect that.

    There’s another new version coming out shortly too.

  202. They will be replaced. When the external_image_url field gets updated, it causes a function to run to update the hidden _external_image_url to be an array image version of whatever list of images is in external_image_url. The first image will be the featured image, all others will be gallery images. I did in the past have a separate field for gallery images and I could reintroduce this if you wish – this would mean that you could, optionally, keep 1 featured image in the external_image_url field and then your gallery images into a different meta field.

  203. I’ve provided email in the private area.

  204. Use the email Also – if I need SSH for this, can you give me the direct IP address? Regularly people have a CDN in front of their domain, but if you don’t have that then I should be able to use to connect

  205. Hi – sorry about the delay – I see the ‘passphrase’ – but you didn’t provide any URL so where am I supposed to visit in order to help you?

  206. Which version of External Images is this for?

  207. You could use this CSS: span[data-id=”hotelOnly-price”] or span[data-id=”flightAndHotel-price”]. If you want to ask any extra questions, please ask a fresh question.

  208. What list generation are you referring to?

  209. That’s odd it’s not showing the URL. If you can please update your question and add the login creds under the private info box that would be great. I may need SFTP access too. You can provide creds or add my SSH key:

  210. This definitely sounds like the query to update the on-sale flag has not run. The plugin basically uses an on-sale flag in wp_postmeta to tell if a product is on sale or not. The default WooCommerce way is to actually compare the regular price with the on-sale price and if the on-sale price is lower, then it shows the on-sale flag. That’s very slow to run that code every time, which is why running an overnight job works better.

    If you are saying that even after you’ve run the code to update the flag, and it’s run successfully, that products don’t show then maybe this is coming from the object cache. If this is the case, please update your question to provide in the ‘private info’ box your access credentials and a URL where the on-sale flag IS or ISN’T showing as expected and I’ll take a look.

  211. Also note: The latest Faster Woo Widgets plugin is still in beta and has a LOT of upgrades compared to the core version including significant improvements over SEO options (indexability, canonical, titles and more) as well as control over on-sale pages etc.

  212. Note: Scalability Pro has optimised the MAIN query but it doesn’t optimise these third party filter plugins because of how badly their SQL queries are written – it’s just not possible to optimise them.

    If filters are the cause of your slow down, get my Faster Woo Widgets plugin or Elastic Search. My plugin is cheaper and arguably better, working with your existing MySQL database.

  213. This is because in the code there is a check to see if the requested image is a fullsize image. I’d presumed resizing was only for other images, I hadn’t foreseen this use of Photon as a CDN.

    I’ve removed this check from the beta version of External Images version 2.53 – please can you download this from your account area, upload it and test it on your dev site?

  214. Can you update your question and include a wp-admin username and password? I’m seeing a cached version of the page so I can’t help with this info. I’ll need to install Query Monitor too. If you want to try and identify issues yourself, I have a little guide here:

  215. The wp-admin password you provided me is not working. Your plugins page will probably be running slowly because that page runs all the plugin update checks. If you have unauthenticated plugins, these will keep checking every time /plugins.php is loaded and can cause 30 seconds or more load time.

    I’m keen to check your /shop/ page though, so please update your question private info with the correct wp-admin password.

  216. Is this the beta version you’re referring to? If so, can you please update your question and provide a link to your product attributes page so I can see what is going wrong?

  217. This looks like a bug. I’ve checked the code and the actual code looks correct. In order to figure this out, I’ll need access to your debug.log and SFTP and a wp-admin account on your dev site where I can see this happening.

    Can you please update your original question above and add this private info?

  218. I’m working on a solution for you so this will be easier to translate – it’s technically possible using CSS but that’s not ideal, so let me come up with something good for you.

  219. I don’t see the screenshot – can you update your original question with the screenshot instead of providing an answer to your question? Or add a comment on my answer.

  220. Hi – please bear with me – I’ve replicated this behaviour and I’m working on a fix for you.

  221. Sorry – my email isn’t tracked for this stuff – I’ll check now and get back to you. FYI I’ve updated the Q&A system so you can provide private info here, but I’ll check for your email.

  222. Good, thanks for letting me know.

  223. I’ve updated an extra setting on our outbound mail server so your mail server should be able to authenticate us now and allow the emails through. Please confirm.

  224. All of this control has been added into FWW beta – the latest beta version is 2.32.

    If you try with 2.32 and are still experiencing your filters not working then please enable your debug log and update your question with any errors from the log.

  225. Yes, you can choose which URL to scrape however you wish and each unique URL you scrape can have its own unique affiliate URL (or direct or cloaked URL).

    It doesn’t yet work with product variations out of the box but yes, you could code this up yourself so that when a different variation is selected you could show a new shortcode specific to that variation which would include the price comparison URLs and table and affiliate URLs.

    If you code that up, then you could have a default displayed on the page.

    Currently, there are two options for the buy button – either keep it as set in WooCommerce, or alter the WooCommerce price and buy button to reflect the cheapest product found. I could maybe code something extra up here for you if I can understand you further – if you want that, please create a feature request.

    For a demo, check out where you’ll find some examples. Let me know if there are other specific examples you’d like to see.

  226. Just to confirm – these are ‘warnings’ – in the beta version there will be warnings as well as usually a lot of debug output.

    In the beta versions I make use of the error_log a lot.

    Instead of displaying these warnings on the page, you could chuck them to the debug.log file – see this article:

  227. Note – the shortcode I was referring to is the one specific to WooCommerce products for Price Comparison Pro.

    There IS another shortcode which can be used to display the pricing table on ANY page – the shortcodes and their parameters are listed in the settings page of Price Comparison Pro.

  228. Thanks – I’ve read your tickets and appreciate the new styles you’ve provided for Faster Woo Widgets. I’ll update the answer to this question once I integrate your suggestions into the beta code for Faster Woo Widgets.

  229. And OP, can you confirm if you are using External Images too and if this problem persists?

  230. Hi Liam – can you confirm if this is still happening? I think this error was in conjunction with External Images and was fixed. I think this was fixed at the beginning of September –

  231. Forgot to update this bug. It was fixed back in April in the beta version of Faster Woo Widgets.

  232. Can you confirm which version of FWW this is for?

  233. That definitely sounds odd – can you please submit a ticket with wp-admin access to your site and I’ll take a look?

    Auto Infinite Scroll was pretty much created to work in conjunction with the ‘remove pagination’ option and I use it on plenty of sites. The ‘remove pagination’ option actually only changes the DB query for calculating total pages and instead fakes there being 1000s of pages then relies on Auto Infinite Scroll fetching the next page until there are no more.

  234. Also – please note, there are other workarounds for Brands as others have pointed out in other feature requests. For example, you can create a BRAND attribute and then FWW works perfectly with that.

  235. Hi Neo – sorry for the delay in replying – I’m coding more updates to FWW next week.

    Please forward me a copy of the YITH plugin and I’ll test it against my development sites. Please send that through a ticket.

  236. Please create a ticket for refunds.

    Also – please be more specific in your description of what isn’t working or why you cannot use the plugins as this helps us improve the plugins for others in future.

  237. It *was* a bug – related to WooCommerce no longer returning true to the is_shop() query.

    I’ve implemented a workaround.

  238. Can you add the specific error message you are getting? To grab the error message from your import, enable your debug.log file:

  239. I would also recommend in general two of my plugins – Scalability Pro and Faster Woo Widgets for your larger sites – they are designed to make large sites continue to operate quickly. Also Super Speedy Search if you have search functionality on your site – as fast as elastic search without the monthly cost and still uses your MySQL database.

  240. 1) You need to link to an actual product page – you are trying to scrape a price from this page: but it has no price on it

    2) You need to configure your CSS or xPath selectors for some websites – there are default configs, but for many websites you need to configure your own selectors – see and more generally for guides

    3) You need to configure the logo in the config area of Price Comparison Pro – wp-admin -> Price Comparison Pro -> Price Comparison Pro, then scroll to that website, then paste in an HTTPS logo URL in the relevant box

    4) There are 4 different styles available, they are listed in the settings page – full width, panel, float left and float right are all available, you are currently using float right – I suggest you try panel. If it looks odd, it may be down to the ‘position’ you are adding the price comparison pro box – in the settings you can choose which hook to use to place the box. I suggest you try panel and then try changing the hook choice to position it.

    All of these items are technically questions, not bugs, I’m closing this bug report.

    If you have further questions, please ask them through our Q&A system.

  241. 2.51 now released – please re-open this bug if it still doesn’t work for you – note: you will need to re-run your product set imports – quickest way on a dev site is to move all product sets to trash, wait until all products deleted, then restore all product sets and wait for them to re-import.

  242. What happens if you use the Photon image resizer option? Also, can you provide a URL where I can see a badly formed image? Your lightbox must be overriding our CSS – If I can see it, I can fix it.

  243. The latest version 2.51 works more gracefully so if the external image URL doesn’t exist it will default to the existing woo fallback image.

  244. Variation images and variation galleries have been implemented

  245. This looks like it’s working now with 2.40 upwards.

  246. I’m closing this bug report and opening a separate feature request.

    There are far too many ways that third party plugins implement their own galleries, so rather than try and cover them all I’ll add a Gutenburg External Images gallery block that you’ll be able to place wherever you like on your page.

    Here’s the feature request – please upvote and add comments:

  247. This has been fixed in version 2.51 due out later today after testing is complete

  248. This has been fixed in version 2.51, due to be released today once testing is complete.

  249. External Images now includes additional variation images as external images as well as variation galleries.

    This is compatible with Woo Additional Variation Images, although you configure the External Variation Images using a separate box.

  250. Hi guys – looking to figure this out – can either of you please enable the debug.log and send me a copy after running a product set import?

  251. Please note: I have not tested this with WooMultiStore, but I’ll provide support for you to ensure you get the speed you’re looking for. If WooMultiStore uses multisite under the hood, then these plugins will already work – you need to recreate the indexes with Scalability Pro on each site. If it does something else custom then I may need to alter or add some indexes to support the speed you’re looking for.

  252. Sorry about delay – impromptu holiday last week, back on the case now.

  253. I’m going to go ahead and presume this is working for you now.

    If it is not, please raise a bug report again and tell me specifically the theme you are using as well as whether the gallery is present on your post type edit page and whether it’s present on the front end.

    If you are using a custom post type with gallery support, please let us know the theme or plugin custom post type and create a ticket with the theme/plugin zip attached so we can investigate.

  254. This has been implemented in beta 3.73.

    Specifically, I’ve added a decimal symbol config to allow you to choose if it should presume , or . or something else is the decimal separator.

    Also, I had to code something up for websites similar to which are actually using spans with images inside them for the decimal separator. When this gets scraped, it turns into whitespace, e.g. 19.99 becomes 19 99, so now if there is no decimal separator present in the scraped results, it will replace the whitespace with a decimal place to product 19.99.

  255. I’ve released an update which avoids using the getimagesize function. Please upgrade to 2.48 and you should find it works perfectly for you now.

  256. I think there’s an issue with your hosting blocking the remote getimagesize function.

    Can you check with your hosting company?

    I’m investigating a workaround to avoid using getimagesize in the meantime.

  257. Can you confirm version 2.46? Also, please confirm you only have 1 of the plugins installed – it’s a little odd the plugin is installed in the external-images_ folder (not the suffix underscore)

    I have a completely different line on line 441 so I’m pretty sure this will clear up if you check for updates for the plugin and update and ensure there’s only 1 plugin running.

  258. Note: Latest version is 2.46

  259. Please test again with latest update and run the ‘convert db’ too. I’ve recoded the conversion function to be far simpler and fewer possibilities of error.

    If it still fails in some cases, please create a ticket and reference this bug report URL.

  260. This has been implemented

  261. This has been implemented. You can now search any taxonomy name, e.g. shirts or dresses and it’ll include everything within those categories (if you select this in the settings page).

  262. Failing that, please try version 2.46 – I have refactored the code in the conversion process to be a very simple single code path and have tested it on 3 sites and see no failures.

  263. I’ll need to dig into this further – can you please create a ticket referencing this bug report URL and provide wp-admin and ideally SFTP access?

    I’ll figure out what’s going wrong for you.

  264. Please update to 2.44 and re-run the DB update. I’ve tested these two combos and there’s no good reason why they are not being saved properly so I think it may be an issue with the ‘ei_converted’ marker that tells the plugin that the images have been converted to arrays from the input field external_image_url.

    This ei_converted field gets reset whenever the external_image_url meta field is updated – can you confirm you are allowing wp all import to run the do_action calls? If you are not, please update a separate meta field in your imports called:


    And set it to 0 (zero).

  265. Can you describe how you are importing the rest of the images? The easiest way is to load them all into the external_image_url with pipe | separator between each URL.

  266. Upgrade to 2.43 for this to be fixed.

  267. Thank you for callstack – please upgrade to 2.43 to remove this error.

  268. This is a great idea – about to get coding on Price Comparison Pro upgrade once I’m finished with Super Speedy Search.

  269. This has been implemented and pushed live in 2.40.

    There are now variation featured images and variation galleries.

    This may not be fully compatible with other variation gallery plugins – if you find an incompatibility it will almost certainly be JavaScript related where the other plugin ends up hiding the gallery we display.

    If this happens to you, please create a bug report including details of the incompatible plugin and raise a ticket sending a copy of the plugin and referencing your bug report and we’ll get it fixed.

  270. If this persists with the newly live 2.40 version, please send a copy of the gumlet plugin in a ticket and reference this bug report.

  271. Live 2.40 version is out now. If you still have an issue importing to the external_image_url field (not _external_image_url – leave off the leading underscore) then please send a copy of this webtoffee import tool in a ticket and i’ll figure it out for you.

  272. Hi – please check with the latest beta version which should fix this.

  273. This is a known bug with some websites – I’ve bumped up the relevant trello card to top priority to get this fixed.

  274. These websites all have cloudflare or cloudflare style scraping prevention in place – there are 3rd party scraping providers which can get past this.

    I need to work through each of them and find which ones can scrape each of these then add that 3rd party scraper to the plugin.

  275. Confirmed as a bug – the plugin grabs the biggest image from the search result, which in this case even though it looks small on screen is this express image:

    I need to alter the config section for search comparison to let users enter a CSS class for websites where the widget picks up the wrong image.

  276. I’ve tested all of these in the latest beta version and they’re all working perfectly.

  277. It doesn’t “autofill” – it’s not loading products onto your site – but it *will* automatically search those third party sites on your WooCommerce product detail page, or any other custom product detail page if you use our shortcodes.

    It keeps a cache of the search results, but most of the time it’s probably performing a fresh search of those third party sites each time, so you might want to get the proxy service listed in the plugin settings.

  278. Ok – finally implemented – I figured out a different approach. I had been trying to catch the underlying code to spoof it into thinking there was an image, turns out it was far easier to add a new view with the external_image_url in it then use JavaScript to update the images on the fly.

    KB article describing how to use here:

  279. I recommend you use the latest beta 2.34, but in all versions what you need to do is import your external images to a custom meta field called external_image_url

    In all import tools there will be an option to map your source fields to a custom meta destination field – i.e. you don’t use the ‘product image’ feature in whichever import tool, you use custom meta import.

    Separate the image URLs with a pipe symbol for galleries too.

    Beta now allows you to import images to product variations as well – again, import to the external_image_url custom meta field.

  280. This is fixed in 2.34 – the issue was I’ve moved the internal storage of image URLs from external_image_url to _external_image_url.

    This was done to make it more stable when importing images etc – you still import to external_image_url but the plugin will map that pipe separated list of image URLs to an array that it places in _external_image_url.

    Because of this, after you upgrade to beta 2.34 you’ll need to run the DB update button on the notice that appears in wp-admin.

    Please back up your database prior to doing the upgrade and let me know this works for you. It would have been fine for fresh beta installers, but because you installed 2.32 and then 2.33 this is where the issue came from (presumably you’d already run the DB update in 2.32 and I didn’t update the db version control variable).

  281. This has been implemented in beta 2.34 and there’s a new KB article here:

  282. This has been implemented in beta 2.33

  283. You can provide access through a support ticket but only existing customers can create support tickets. Did you take a look at the article I linked above? It goes through all the possible performance issues you could have?

    Also – so you know, our demo site has 800,000 products on it using our plugins and it’s very fast.

  284. This is ‘by design’ really. The option is there to remove this calculation because *many* customers won’t disable variations and the calculations this runs become unnnecessary.

    If you DO disable variations in your shop then don’t use this option.

  285. I changed the way the match operator is added to the main query now so this should be fixed.

  286. Sorry for missing this! Please can you download the beta version of FWW and confirm this is no longer an issue?

    There was an issue discovered relating to URL rewrites which sounds sort of close to what you’re describing that has been fixed in beta.

  287. To clarify – Scalability Pro includes an option for sites which don’t use pagination (e.g. you use infinite scroll) where disabling product counts can make a difference to performance of the main WP_Query.

    If you enable this option, Scalability Pro avoids counting products in the Query and instead fakes a count of 9999 pages which will give weird product counts.

    So, if you enable it, you need to hide product counts and use an infinite scroll system rather than pagination. It’s only one option – more info provided next to the option inside Scalability Pro.

  288. I’ve changed this to ‘Approved’ and I’ll run an actual comparison of third party hosts including SSDNODES as soon as I can.

    I’ve created the Trello card for this here, but it’s at the back of a fairly long backlog:

  289. I don’t track all the various hosting companies to be honest. If they provide good support, if they provide a good admin interface, if they have good SSD and GB ethernet and backups then I consider that viable for my stack.

    If you want a better conversation about the right hosting company to use, I can highly recommend you chat to Jeff or any of the team over at Gridpane – they have built an interface on top of an improved version of my stack and they are the most passionate hosting company I have ever talked to. Can’t recommend them enough to be honest.

    “You can pick companies like Digital Ocean, VULTR and Linode, or you can bring your own server from almost any provider that has Ubuntu KVM based VPS servers available. AWS and Google Compute Engine support, natively within the application, is coming very soon. ”

    So – probably SSDNODES would be fine if they use KVM?

  290. Can you confirm the shop page is not using any special effects (image resizing etc) on the images? If so, please switch them off.

  291. Can you add more info about this?

    apply_filters(‘woocommerce_pro…’, Array) #4

    Whatever that plugin is that starts ‘woocommerce_pro…’ sounds like it’s causing your issue.

  292. There’s a dev cycle of Price Comparison Pro due, so probably around a couple of weeks for it to be in beta – all users can download the beta version. It’ll probably be another two weeks after that before we push it live into core.

  293. Note: These options are now all in the beta version tested and confirmed working. You can see progress here:

  294. Implemented in beta. Rules for overriding title are now: If yoast option disabled AND any attribute filter is present.


    Browser title (meta title), og:title, twitter:title, name and description, meta description

  295. I’m adding an option into this release to disallow overwriting category URLs when no attributes present. Trello card linked above.

    Only concern I have is that Yoast picks up the correct category – it *should* do, so it should be trivial.

  296. Can I get feedback on this? I think the brands landing page can be implemented with the suggested new feature or allowing top and bottom HTML per URL.

    Basically – FWW will generate a list of all combinations of categories and canonical attributes and then for each you will be able to view and edit the top and bottom HTML.

    This would allow for example:

    /nike/ -> You could have HTML above and below the nike products

    /adidas/ -> You could have unique HTML above and below the adidas products

    /adidas/copa-mundial/ -> You could have unique HTML above and below these beautiful football boots.

  297. This is fixed in beta and more options have been added related to canonicals. You can now:

    1) Configure order of each attribute
    2) Configure if attribute is in canonical or not
    3) Configure if attribute is indexable or not
    4) Any URL parameters not registered as canonical and/or the product category, will not be included in the canonical. That means minprice, maxprice, orderby, and any attributes any malicious competitors add will *work* but the canonical will always be sorted. e.g. if you have the attribute order as flavour then colour you could have /dogs/beef/white/ and /dogs/white/beef/ but the canonical will ALWAYS be correct. This is the best approach.

    Note I’ve separated out the extra ‘noindex’ + rel=nofollow too. So you can specify that if a particular attribute is in the URL then the page should be set to noindex if you wish, or you can just rely on the canonical.

    And values per attribute are now always sorted in the canonical – regardless if you use pretty permalink or URL parameter.

  298. This has been fixed in beta and can be seen on foundthru now

  299. This is fixed on beta – now returns 404 and redirects correctly to the post category

  300. This has been implemented and tested in beta. Release coming soon. You can see it in action on

  301. This has been implemented and tested in beta. It’s fast and it includes 301 redirects from the old product category URLs to new ones.

    It also updates the canonical URLs if you’re using Yoast.

  302. It’s back in pages with /product-category/ in the URL, not when /filter/ is in the URL. It’s in beta too.

    Trello card made and this is being worked on.

  303. I’ll have a look into this.

  304. Testing underway for the fix for this.

  305. Presumably this was the ‘remove sorting’ option in scalability pro.

  306. Thanks for clarification.

  307. Please change the setting inside Scalability Pro to not disable the product counts. Then it will work.

  308. If you have disabled variations, this perf enhancement will not work. Other option is to delete the variations.

  309. This is in progress. It was harder than anticipated. I’ll get it released as soon as I can.

  310. It’s coming – can you please check the current fix for this and I’ll get the other feature requests all implemented too:

  311. This has been implemented on foundthru now and I’d really appreciate all interested parties testing and letting me know if you see any issues at all:

  312. Working on a fix for this.

  313. To delete indexes, click the delete button then refresh the page.

    re: performance, it improves underlying raw MySQL performance. If you have other issues as outlined here then there will be separate solutions:

  314. Before I approve this, can you confirm the performance issue still exists when you’re using Scalability Pro with WooCommerce for Facebook?

    For some reason this had been placed in the ‘auto infinite scroll’ group.

  315. There is an option to disable the category box in wp-admin, but your feature request still makes sense – it would be better to keep the functionality and only load it when a user clicks the box.

  316. It speeds up querying across all post types since all posts are in wp_posts and wp_postmeta etc.

    However, there is a separate request to be able to configure options per area – e.g. per post type for removing pagination etc.

    I’ll decline this one in favour of that other request.

  317. Hi – it would be possible to implement this currently using CSS.

    Basically, you need to alter the CSS for whatever you call your ‘multi’ and use a background image instead of a solid colour.

    e.g. Create a new colour, give it a unique colour code and note that code down. Name the colour ‘Multi’ then add this CSS:

    .wpilabel.wpicolour[style="background-color:#012345"] {





    Replace the background-color code above with whatever code you set for your ‘multi’ and the image url with whatever background image you’d like to use.

  318. I added the lg lightgallery instead of OWL. It’s better, faster, more feature-packed.

    It’s this one:

  319. The plugin was improved significantly to handle this – there is one option now in the plugin that may need to be selected depending on how your theme handles these things.

    We’ve erred on the side of caution and you may find 2 images displaying in your thumbnails (rather than no image) – if this happens in your theme, visit the settings page and enable the option to fix double images.

  320. The plugin was altered a while back to choose from the 2 possible fields from Datafeedr.

    In addition, there is an option to check on import which of these images is larger and use that one – i.e. rather than just a preference of which field, it automatically checks for the largest.

    If there’s anything remaining in this feature request, please reopen.

  321. I’ve moved this plugin request to Scalability Pro group.

    If others would like to see faster WooCommerce for Facebook, please let me know and I’ll get hold of the plugin and see what can be done to optimise it.

    To be honest, Scalability Pro should already optimise it, but if anyone else can provide feedback it’d be appreciated.

  322. This is now possible using CSS. It actually defaults to ‘Out of stock’ now but it’s configured using CSS with a :before property, so if you wish to alter the text you can do so through CSS.

  323. This was implemented a while back. Sorry for not updating the feature request.

  324. Hi – in a recent update, we added a great lightbox feature that includes click and zoom and other features.

    Can you confirm I can close this feature request now?

  325. First thing that needs to happen here is the class name for the free super speedy sales page needs to be altered so that it doesn’t conflict with FWW.

    Second, I need to update the settings page of SSS to make it clear what shortcodes and widgets are available.

  326. This is an odd one. In order for this error to happen, it means the shortcode is running outside of the WooCommerce product loop.

    It relies on there being a global $product variable, which *should* exist.

    Maybe in the WC_Tab plugin you added the pcpro shortcode inside the tab? And maybe inside there it’s outside of the product loop somehow?

    I’ll investigate, but if you have any further info to shed on this it would be helpful.

  327. There is an option already in the plugin to not change the titles and description. Presumably they are saying this isn’t working and that is causing ‘product tags’ to be removed somehow.

    Action: Fix the option so that if admin disables the titles and descriptions through FWW that the code really doesn’t run.

  328. This has been implemented in 2.22 due out shortly.

    There’s also a KB about it now:

  329. Implemented in v2.22 which will be released shortly.

  330. This is implemented in 2.22, which will be released once testing is finished.

  331. I’m not seeing this bug. It looks like it was fixed MID MARCH even though you reported this in April.

    Can you please confirm?

    Here’s the changelog entry:

    = 2.12 (23rd March 2019) =

    * Removed category description text when any filters other than category are applied

    * Fixed pagination bug (if not using inf scroll and you had attributes with values or 2, 3 etc) so that URL removes pagination when filters are added

    * Fixed 'clear filters' bug where it should not have been removing the product category from the filters if 'display cat as filter' was set to no

  332. As I understand it, this will list ATTRIBUTE NAMES based on filters in the shortcode, or with no filters – e.g. show all brands, show all colours, show all sizes etc.

    What else would then be displayed?

    e.g. Colours – White, Blue, Black etc

    * White example – could show count of white products, but should it also show a break-down of category counts or attribute counts that are in white?

    Could show: White (1,200) or it could be White with an attribute image, then a list of top categories underneath, e.g. Shirts (75), Jeans (2), Blazers (17) etc

    That would mean the shortcode would need to take a few params:

    1. Attribute to show
    2. Filters for the attribute
    3. Attributes/category to group by in the attribute description (e.g. category above for shirts, jeans, blazers etc)

    Another example:

    Brand: Adidas, Nike, Puma

    Filter could be Men, Women, Children etc in the shortcode.

    Dimension would probably be category, but could instead be Colour – if it were colour, you could have the filters of Men’s Shirts:

    Adidas: White (17), Blue (5), Green (3)
    Nike: White (25), Blue (7), Green 2) etc

    Presumably pagination would be required? Because some shops have a lot of attributes. Although maybe just the top X would suffice?

    What else am I missing?

    Does this relate to the Woo Brands functionality?

  333. This should be listed as a bug. I did not realise this bug was back in the plugin. I’ll get this fixed in this round of bug fixes.

  334. This was added in version 2.20

  335. This was fixed a couple of versions ago.

    There is a related bug that needs a new bug report about images not appearing in bulk edit.

  336. Just an update on this so far:

    I’ve created a test service using the library listed above to use this python cfscrape (cloudflare security bypass) library.

    It’s working for some cloudflare protected sites, but not yet all.

    I’m still working on this – you can see, for example, this URL times out:

    I’m still debugging the http errors generated by this to figure out this bypass.

  337. Ah – you also have Faster Woo Widgets installed. Disable the super speedy sale plugin – I’ve added the functionality directly into Faster Woo Widgets.

    I’ve still got documentation to do on this, but you can follow the guide from the product page for Super Speedy Sale page with just FWW installed.

    I’ll get this fixed asap and change the class names so the free option is still available.

  338. That’s odd. So do errors display when you enable debug? Can you try adding define(‘WP_DEBUG_LOG’, true); and define(‘WP_DEBUG_DISPLAY’, false); too?

  339. I believe this is fixed in release two days ago. Please re-open if this is still happening and provide a URL.

  340. This has been fixed in 2.18 but more testing is required, particularly in conjunction with Super Speedy Search.

    You can test it over on

    Now as you’re looking for you can see:

    1. /product-category/dogs/?s=bowl works

    2. If you click a filter FIRST rather than a product category, it will use the permalinkbase from FWW settings page.

    I’ve been working all day on FWW bug fixes, but some more testing is required to make me rest assured that the changes I’ve made aren’t breaking anything else.

    I’m intending to set up Selenium to handle regression testing so that I don’t have to worry about bug fixes breaking things from the past.

    Let me know what you think of the fixes over on foundthru.

  341. Fixed in 2.18. Parent category now always correctly included.

  342. Fixed in 2.18, shortly to be released. Here’s the relevant part of the changelog:

    • Removed category description text when any filters other than category are applied
    • Fixed double category description text when using non-pretty-permalinks and category + attribute were selected
    • Fixed bug causing inaccurate title to be displayed if user visited non-pretty-permalink with pretty-permalinks enabled. Now the attributes are correctly collected and titles correctly displayed, even if you visit an old style non-pretty-permalink URL
    • Fixed bug causing duplicate titles to appear on some pages with some themes
  343. Fixed in dev version due out today.

  344. I can’t reproduce this bug. I’ve tested it with multiple attribute types with both pretty permalinks and non-pretty permalinks.

    Please provide more details so I reproduce this bug.

    1. Which type of attribute?
    2. Pretty permalinks or normal permalinks?
    3. Is the attribute part of the pretty permalinks or is it a query parameter?

  345. I’ve found that the text is NOT duplicated if you use the permalink URL:

    That’s the equivalent to

    However, if I disable pretty-permalinks on foundthru and then reload the URL you provided, things actually get worse, not better – now the category text is listed *twice* with 2 separate titles.

    Dogs are called a man’s best friend for good reason. If it weren’t for dogs, our population would never have exploded after we left Africa and we wouldn’t have destroyed the neanderthals.

    For thousands of years, they’ve been by our side helping chase and tire down prey, cleaning up our scraps, warning us of approaching predators (their sense of smell is 200,000 times better than ours!) and now all they want is a little love.

    Buy your dog a toy, a bed, a treat, a rope to tug on – it doesn’t matter, you know your dog will love it.

    Buy barbecue flavour Dogs
    Dogs are called a man’s best friend for good reason. If it weren’t for dogs, our population would never have exploded after we left Africa and we wouldn’t have destroyed the neanderthals. For thousands of years, they’ve been by our side helping chase and tire down prey, cleaning up our scraps, warning us of approaching predators (their sense of smell is 200,000 times better than ours!) and now all they want is a little love. Buy your dog a toy, a bed, a treat, a rope to tug on – it doesn’t matter, you know your dog will love it.

    I’ve got a fix in the works and it should be out in today’s release if testing goes well.

  346. This has been fixed and deployed in 2.17.

    The issue took a little longer to discover because the root cause wasn’t as discussed above. The cause was actually when a site-owner had a different product category slug other than /product-category/ in use – i.e. it wasn’t related to manual sort ordering at all.

    Fixed, tested, released.

  347. Some more relevant content:

    Hi there,I’d like to provide a bit more in-depth overview. Spaces on our platform is indeed Object Storage, much comparable to Amazon S3. Spaces integrates with the s3 API, so a lot of the same behaviors and features you see with S3 are able to be used in conjunction with Spaces.
    With the launch of our CDN, Spaces now includes a built-in content delivery network (CDN) at no extra charge. Our standard 1TB of free bandwidth and overage pricing for Spaces will include usage for the origin and CDN combined. This provides you the ability to turn on global edge caching for a Space in any of our available Spaces regions.
    This differs from Amazon CloudFront in that CloudFront does integrate directly with AWS, so that CDN is serving more than just S3, and integrates with other products. The CDN we’re able to offer with Spaces will only cover Spaces, and excludes other services you may be running, such as Droplets or block storage (Volumes).
    I was able to take a look at the price calculation you performed and included the link to (thank you!), and the values you have there are correct. The main reason you’re seeing such a discrepancy is the logic above – with CloudFront, you’re seeing a CDN working on top of all AWS services, whereas Spaces CDN here at DigitalOcean would only cover your objects stored in Spaces.
    I hope this sheds some additional light on the questions you had. If you have further questions or concerns, please let me know, and I’ll be happy to assist!
    Mandi B.
    Developer Support Engineer

    FYI, I sent a calculation of costs for the same services on AWS Cloudfront as on a DO Spaces CDN of $5 a month, which resulted in almost $90/month on AWS. When more performance is needed costs on AWS Cloudfront rise even faster in comparison with DO Spaces CDN. So I asked if this price difference could be declared by significant differences between these services.

    Also this price calc:

    Here’s the link to the price calculation btw: (Please click on the “Services” tab to see the values I filled in)

  348. I cannot reproduce this.

    1. I see images being scraped properly
    2. They update on page immediately upon successful scrape

    Can you confirm:

    1. URL you are trying to scrape
    2. Your image CSS selector you’re using
    3. The scraping type you are using.

  349. Fixed in dev version. Now there is a span like this:

    And css like this:

    .lastchecked:before {
    content:”Last checked:”;

    So you can override the text through CSS.

  350. This has been fixed in the dev version, will be deployed today.

  351. This has been fixed in dev version.

  352. This has been fixed in the dev version. Shortly will be released.

  353. I understand what’s happening here now.

    In this case, you have a menu_order set for your attributes and that menu order is less than the order set for your category.

    Categories need to come first, so I need to amend this code so that categories will always come before attributes and that should solve the bug.

  354. Fixed in version 2.15 – please update your plugin. Thank you for the bug report.

  355. I’ve implemented this in the dev version – added rel=”nofollow” to all external links in the price comparison tables.

  356. Turns out this was related to a collation issue in the database. If you experience this issue, please see this declined bug report for info and a fix:

  357. I figured out why the affiliate link was being incorrectly updated.

    After the price table has been sorted and all prices fetched (or failed to fetch), the top price is the one that gets updated.

    This sorting has been fixed, but separately I’ve added belt & braces in the back-end to ensure this is never updated incorrectly due to broken JavaScript or similar.

  358. This has been implemented in the dev version, coming out soon.

    The plugin now correctly identifies if other prices still exist for this product and will only mark it out of stock once all external links are returning no prices.

    It also is now correctly keeping out of stock prices at the bottom of the sorted table.

    I could not reproduce the affiliate link being updated.

  359. I’ve double checked the code here, and the plugin is correctly using the WordPress default collation for the queue table.

    If you encounter this issue on your site, you somehow ended up with non-default collations installed in your database and you should fix them.

    Here’s a plugin which will fix your table collations:

  360. This has been fixed in 2.11. Please update and confirm.

    Please use pipe | symbol to separate your images.

    I’ve kept backwards compatibility with commas for other customers.

  361. Hi – I think this is fixed? Can you confirm?

  362. Hi – I’m testing this locally. Here are my settings:

    2 widgets – category & colour widget

    Permalinkbase: product-category

    Everything seems to be working. Can you message me directly with your URL and ideally access so I can figure this one out?

  363. 1) I’ll get this figured out – so if a search query exists, and the category filter is removed, it should go to site base url

    2) The categories are being affected by the search query. What behaviour would you like here?

    3) I’ll add the current search string as an existing filter that is removable through a click.

  364. Hi – can you please check against 2.14 and confirm this bug is fixed?

    I had real difficulty reproducing it, and I suspect the main problem was auto-update not working.

  365. This bug has been fixed in the dev version.

    Additionally, the following bugs were fixed:

    Removing final attribute filter, if category is present, will revert back to the category URL. If final attribute removed but no category, the remove attribute link will revert back to the shop URL.

    Also – if permalinks were enabled, but not all permalinks were set up in the ‘permalink ordering’ section, this was causing those filters to be missed. This was clearly an edge case as you’d normally set the ordering for all your items in the permalinks and only exclude certain items from the canonical URLs.

  366. There’s an additional bug here, possibly only in dev version, if a filter is removed and the remaining URL is just the category, then it should revert back to the /product-category/ permalink to avoid duplicate URLs.

  367. This has been fixed in the dev version. Now the behaviour is much better:

    1. If product-category set, then it’ll use /product-category/ (or whatever permalink you have)
    2. If no category set, it’ll use the permalinkbase set inside FWW settings
    3. If no cat set and permalinks not in use, the URL will be /shop?filter_color=xyz etc

  368. Hi – I found a bug in the json file for Faster Woo Widgets that was preventing auto-updates. This has been fixed.

  369. Note: At the same time, I’ve also added ajax to the category widget – I can’t remember why I didnt’ add it before but it doesnt’ really make sense to not have it on the categories.

  370. I’ve recoded the way the plugin detects the sidebar so now it will work for ANY sidebar that contains our widgets. This is in dev version, due out today.

  371. This has been fixed in dev version.

    There was a bug relating to how WooCommerce now provides a static function to grab the search query which we’re now correctly using.

    In addition, the search query was not previously filtering the attribute filters (only categories), so the code has been added to attributes too, so those counts will be restricted to only those which fulfil the search string.

  372. This has been fixed. At the same time, I discovered an error in the JSON file for Faster Woo Widgets preventing auto updates. This has been fixed too.

  373. Hi – I think the update server was briefly down. Can you confirm if this issue persists please?

  374. Hi – I believe this was fixed 1st April version 4.49.

    You can see the changelog here:

    Turns out it was a bug in how WordPress dbdelta works!

    Re-open this if the issue still exists somehow.

  375. Hi – thanks for the bug report. I believe you contacted me separately through the on-site chat.

    This looks like it was fixed in the release on the 1st April (version 4.49). You can view the change log here:

    Re-open this if I’m incorrect about this now being fixed.

  376. Hi – sorry about the delay. I’ve had to do some important admin work.

    re: the URL re-scraper, can you provide more info about what you are attempting to rescrape?

    Have you used the bulk import command to add all your existing WooCommerce products to the scraper queue?

  377. Hi – There is code in the plugin that is meant to catch the 404 error that is returned when the last page fails to load. On catching this error, the code hides the spinner.

    Can you provide a URL where I can see this happening and scroll to the bottom?

    It’ll be helpful so I can check if the /page/x that is failing to load actually does return the correct 404 status or maybe the 404 status has been overridden by a separate plugin you have?

  378. Ok – so this is happening inside a *single taxonomy*. e.g. if users search for Blue, Black and Red dog toys (with either expand or narrowing set for multi-select) then when the user removes Blue it removes ALL the colours.

    From what I see, it’s definitely not removing OTHER taxonomies. e.g. if you have blue, black (colour) + leather (material), then you click to remove leather, it is retaining blue and black, and similarly, if you remove blue the bug remains that it removes blue and black, but it’s not removing leather.

    Can you please confirm this is an accurate description?

    I’ll get this fixed in next update.

  379. Ok – I can see why this would happen. The standard ‘page’ is not the same as a woocommerce archive page, and the ajax feature requires that in order to update the filters after a new search request has completed.

    I’ll figure out a solution for this, but it’s probably going to have to involve specifying a CSS selector in the admin area to identify the sidebar.

  380. I’m struggling to reproduce this in my dev environment. I can see it on your site, but I cannot reproduce it.

    Can you tell me what settings you have for your widgets?

  381. The code was in there to do this, but had a bug. That bug has been fixed but it’s still possible to achieve the previous functionality if you wish.

    In the “existing filters” widget, if you set ‘display category as filter’ to yes then when user clicks ‘clear filters’ it will revert to /shop/ or whatever your shop URL is.

    If you have it set to no, it will now correctly send the user to /product-category/dogs/ or /filter/dogs/ depending on which approach you are using instead of /shop/ – i.e. the category will not be removed by the clear filters button.

  382. The plugin was mistakenly thinking the /2/ out of /page/2/ was actually a filter in cases where you actually have attributes with values of 2 (e.g. dress sizes or something).

    This has been fixed so that it checks:


    And if the URL contains that (by default /page/ but could be altered for other languages) then it’ll stop processing the URL from that point onwards.

  383. This has been further updated to remove the description on page 2+ etc

  384. This has been fixed in version 2.12. Now, if any filters other than category are applied, the category description text will not appear.

    That should fix part of this problem, but I’m flummoxed as to why the title is appearing twice for you. That seems very odd – please can you update to 2.12 and let me know if this is completely fixed? Otherwise I’ll need access to your server to figure the duplicate title part.

    2.12 will be released in an hour or two.

  385. This fix has been implemented, available to see on, will be deployed in upcoming release.

  386. This has been implemented – demo available over on – will be released with upcoming plugin update.

  387. This was actually implemented a while back and is already included.

    The latest version, deploying today, includes a couple of minor bug fixes for this feature.

    To get it, use the display option ‘search’ in the attributes widget.

  388. Ok – I’ll try and get this into this release.

    It’s half compatible right now:

    Above will search the dogs category for ‘bowl’.

    The parts not yet compatible are:

    1. The category counts should reflect the search query
    2. The search query should be passed forward with any extra filters clicked
    3. It should automatically work with super speedy search
  389. I think I understand what you are saying:

    If user clicks ‘red’, but has not clicked a category (if you allow this) then the category list should be restricted to ‘red’ products. That’s already achievable.

    Currently, when I test this on, I see all the categories – i.e. not restricted to the attributes at all. That’s the intended behaviour. The categories are more like top-level-pages really – and the default behaviour is to reset all attribute filters when a category is selected.

    You can change this behaviour by altering the widget settings – which I’ve just done now – so that if you visit:

    You see only the category of ‘dogs’ since that’s the only category containing ‘beef’ products.

  390. Yes I agree – it’s a little too dangerous. The primary problem is that a hyphen is also used for spaces inside a category/attribute. So, if you had the following categories:


    It would be impossible to distinguish. If you feel you really need this, come back to me again in future and I’ll take another look.

  391. This has been implemented in the latest version, currently in dev on, will be rolled into upcoming release.

    Some notes: The option now correctly prevents multiple selections in the WIDGETS – BUT – there is nothing to stop a user manually typing the additional items into the URL.

    However, if you use our canonical URL feature properly then this won’t matter, even if discovered by google bot.

  392. This has been implemented and tested and will roll with the upcoming release.

  393. Multi-select bug noted elsewhere
    Taxonomy ordering bug noted elsewhere

    Bug of min price and max price not appearing is new. Changing title to reflect this bug.

  394. By seo description I mean custom text on the top or bottom of the page just like the description of a category, but showed only with the certain combination of filters:


    if url is ‘/shoes/nike/black’ or active filters are ‘shoes and nike and black’ show ‘description 1’

    if url is ‘/shoes/adidas/white’ or active filters are ‘shoes and adidas and white’ show ‘description 2’

    We wrote about it earlier:

    “I’ll add the ability to edit meta-description, seo description, and even to add/inject product category descriptions to the top or bottom of your shop to create better landing pages.”

  395. This will be added in next update. To flesh this out a bit:

    1) Nofollow tags will be added to hyperlinks if they have < X products - will only apply to attributes - i.e. follow will always happen for product categories 2) Noindex meta will be added to pages with < X products

  396. This has been implemented

  397. Hi – thanks for contacting me through Discord as well – Jet Engine compatibility was added a couple of days ago.

  398. The object cache already does this. The real issue is how WooCommerce implemented variations as complete individual products when normally all that changes in a variation is sku, price, stock and image. They have added some speed ups for archive pages, because previously archive pages – e.g. if they were calculating price ranges – had to go grab all the underlying variations rather than just fetch from an array and quickly display.

  399. All of the product options plugins I’ve tried have been ok, the different architecture where there are no multiples of multiples makes them inherently fast.

    Either Yith or Acowebs are good choices, probably best to avoid WooCommerce official plugins, they tend to be naff.

    If you don’t need prices to change (e.g. fixed +€10 for large or +X%) then the free version of Acoweb would probably do what you need

  400. Ok, noted, and thank you! Everyone else, use the Managed Challenge rather than the Interactive Challenge.

  401. Yes, but there’s no plugin I’m aware of yet that does this. Some of my clients have custom-built ajax code to make the basket completely ajax driven so the entire page can still be cached. I’ve had a plan for a while to build a plugin to fix this entire cart issue for high-traffic-spike sites, but I’m still busy upgrading all the plugins I have already!

  402. Because they would still use up nginx, php and sql resource to run the page prior to failing the captcha. If I were to do this again, I would just block the traffic using Cloudflare. Back then I was using my own custom-made stack with fail2ban etc. I no longer rely on fail2ban, although I still have it as a backup plan on my servers.

  403. This code is inside my Scalability Pro plugin, but if you’re replicating it manually you can put it in the functions.php file. Maybe give it a different function name from mine in case you end up installing Scalability Pro.

  404. Thank you for your kind comments. Remember to come and join our performance-obsessed Discord server for more help!

  405. Yes, that’s a SQL query but that was for that specific investigation. These optimisations have all been added to Scalability Pro so that’s the best way to get these speed boosts.

    Install Scalability Pro, create indexes from indexes tab then choose whatever other options from the Import tab to speed things up further.

  406. I’ve used memcached when multiple web servers are involved before. Yes, one of the issues with moving multi-server with WordPress is that there are so many database calls so network latency and all the overhead of network calls becomes a real issue.

    Why would it be read only though? You want the web servers to be able to update the redis cache if they need to, so why not just use a regular Redis cluster which is writeable by the web servers?

    I take it you also have databases on a different server to the web servers then? Are you not seeing high latency from that? How many DB queries do you tend to get per page?

  407. The basket and checkout are addressed in the automatic Cloudflare rules. What issues are you experiencing?

  408. Please update to latest version released today and og:image tags should now be working properly with Rankmath and Yoast etc.

  409. If they all truly have their own unique prices, you’ll have to stick with variations.

    If the prices change a relative amount, e.g. small +£0, medium +£10, large + £20 then you can use product options. There are a few of these plugins around.

    Re: Object cache and siteground, I’m sure they can handle giving you a Redis Object Cache. This will probably give you your best speed boost. Once a product has been loaded once in e.g. product detail or in the archive, the product object is cached so next time on product detail or in the archive, there’s no need to refill everything. This works best if you have a few popular products which are viewed more than others.

  410. Come onto our Discord. I’ve literally just taken over that plugin. It had an XSS scripting vulnerability in it which I’ve fixed and performance on it is looking great. It’s not properly released to the public yet, but come ask about it in Discord and I’ll send you a copy.

  411. This sounds like an issue with the Wholesale Prices Plugin. If you can enable Query Monitor and capture the queries from the wholesale prices plugin there may be optimisations I can implement through my Scalability Pro plugin.

    Do that, grab the screenshots, then come paste those screenshots into our Discord Server so I can help you

  412. You need my Super Speedy Filters plugin. I tried originally to bake everything into Scalability Pro but in the end Search and Filters had to be separate plugins. You’ll also need redis-cache.

  413. No I don’t, but there’s a new update out for External Images today which may help. If it doesn’t, come chat to me on our Discord server.

  414. You need to figure out your imports – that’s the biggest issue. Other than that, you just need our Super Speedy Pack to get to a million products on half-way decent hosting.

  415. Thank you for your kind words!

  416. That’s great news – if you can spare a minute, reviews really help drive sales – you can leave a review here:

  417. Click the ENABLE button next to Image Sizes:

    Then you can pick which image sizes you wish to keep.

  418. Please check you have your cron job properly configured to run every minute or every 2 minutes.

    Also, on the imports tab of spro, click the enable/add button next to the image sizes option then choose the WooCommerce catalog image sizes to keep.

  419. Thank you for the review, I’m very glad we helped you out!

  420. It replaces the Datafeedr API but I have not used this myself for a while now. I’ll get back to this plugin in a few months once my other plugins have all received their updates.

    In the meantime, you can get a decent speed boost for imports using Scalability Pro, or you can try this free plugin but bear in mind it REPLACES the plugin of the same name from Datafeedr. There are not so many changes they have made since I coded this plugin so you are not missing out on much if you use this one but you do get far faster speed. You can check their changelog for the past 2 years to see what they added to their updates.

  421. Glad to hear you’ve found us! Remember to check out our Discord server too, link at the bottom of every page.

  422. Thank you – we have a lot of resources here and if you are ever stuck, come join our Discord server.

  423. Yes if you need stock options per combo then you need variations. If the options do not affect stock levels then you should options – add ons, options, called different things by different plugins and yes this functionality is unfortunately not native. Unfortunately you only get variations as native functionality for handling this stuff which leads to performance issues when people use them for things that would be better served by product options or product addons.

  424. Thank you, glad to be able to help and very happy that everyone is happy with our Discord server for support 🙂

  425. Thank you for your kind review, we’ve worked hard on speeding up wp-admin. Got more speed boosts coming too for edit.php to make it even faster!

  426. If you are determined to use varnish, you can actually use varnish AS your load balancer and it will also cache.

  427. Hi, yes, to be fair it’s been fixed for a while. Just when you’re logged out only, so when you’re looking at status = published rather than status in (published, private) then it’s quite a bit faster with scalability pro.

    I’m working on some case studies to demo this difference, will publish soon. In any case, if it doesn’t help you enough we have a 60-day money back guarantee.

  428. Thank you so much for your review! Just one clarification for others, we also read from the DB for the terms and stock levels, but I write the queries myself to be ultra fast and SSF has it’s own highly optimised object relationships table which is far superior to the default ones provided with WordPress.

    For example, if you have a term which contains 20 other terms – e.g. different types of clothing inside the clothing category, default WordPress/WooCommerce will grab all the child terms of the clothing category and then perform a SQL statement like this: WHERE term_id in (1, 2, 3, 4, ….) IN statements in SQL are terrible and prevent further use of indexes. My table lets you say WHERE topterm_id = 1 and this naturally includes the children. I’ll write up a full info article on this soon.

    Also – if you have a look at the defines.php file, you’ll find some BETA level performance optimisations if you’re looking for EVEN MORE speed boost. Really! These beta options need to be added by adding the define to your wp-config.php file currently, but soon they will be in your options page.

  429. There’s not really a perfect resource out there to be honest. I’ll make sure and get something written up to help explain how to create indexes yourself if you have uncovered slow queries that would benefit.

    In the meantime, there is the official MySQL documentation which is a little tricky to read:

    And there’s a quite good article from spinupwp about indexes with some examples:

  430. The best things you can do right now is to try and reduce how many variations you have and use an object cache. The object cache helps with variations a lot, but if you have > 1000 variations then things will still be slow.

    If a variation changes the price consistently and you do not have different images for that variation, then probably this could be a product option or product addon.

    Scalability Pro does not help with product variations. It helps with many other areas, but not product variations.

  431. Any further improvements require custom coding – but in most cases, you can make it work although sometimes you need to customise the code a little.

    For example, there is some code in a lot of themes which alters the ‘sales flash’ to show a ‘percentage discount’ – this code got copied from the businessbloomer website where it had been submitted very badly coded. Basically, they looped through all child variations and got the prices from them. This involved loading each product variation. The code rewrite for this involves using a function available on the parent product to get child variation prices in an array. This is maintained at the parent level and is far faster, uses less RAM etc.

    So – if you have a performance issue due to product variations, there’s a high chance that your codebase (some plugin feature or some theme feature) suffers from this bad coding pattern.

    If you search for get_children() in your code base and then look at that code, if you see the code is performing a loop and then creating an object with each child variation then this code could probably be rewritten.

  432. Thank you very much for your kind words! Glad to ease your performance pains.

  433. It still hasn’t completed on my million product site – I increased the batch size to 10,000 – it should be done soon. I don’t like how they build these tables – they make them super reliable on every site but as a result, they take ages to build.

    My tables use MySQL 8 features (recursive CTEs) to make building and maintaining these tables really fast.

  434. re: WP All Import – I’ve run into problems twice with it recently. I may start changing my recommendation. Which import tool are you using now?

    re: SOLR/Super Speedy Search – my own super speedy search plugin doesn’t yet include ‘Search Suggestions’. This is what I’m working on right now. Search suggestions will use its own custom table I create, will pull n-grams from posts/taxonomies/post meta, will record n-gram counts per taxonomy, and will then be able to instantly appear as you type.

    Also – I need to update my ajax calls to be faster – I want super speedy search to be showing suggestions literally as you type which it WILL once I’m finished with the search suggestions.

    re: The ‘and’ operation – you asked this on Discord – I’m adding the option – this is specifically when you DO NOT use a fulltext index. I’m also updating the fulltext index to span across wp_posts, wp_postmeta and wp_terms/wp_term_taxonomy so that the fulltext index can also do the AND operation you need. This will be faster and produce more relevant results, but I’ll also add this AND option into the ‘normal’ LIKE-based search for completeness.

    In my ajax results, there is the option to show search results per taxonomy – e.g. music exams – and then a ‘VIEW ALL’ link which will then give you the search results full page for music exams.

    You can also optionally configure each widget to search specific post types if you wish, but I think this all in one solution with a single search box will work well for you.

  435. Thank you. Glad to have you on board.

  436. Check your debug log, it should tell you what’s going wrong.

  437. If you have variations where a variation changes the price by a specific amount – e.g. medium + £10 or large + £20 then you can have them as rules rather than variations.

    If you have varitions where the price doesn’t change and the images don’t change, you can have them as product addons. It’s a shame variations are the only default included in woo because people overuse them and end up with a slow site.

  438. I’m probably going to go with WPI WooCommerce Product Filters. In the meantime, I’ve rebranded all the plugins and packs to be prefixed with WPI since Glyn started doing outreach and people currently can’t find us if they search for WPI plugin packs…

  439. Which version of the plugin are you running? Make sure you run version 2.75, you should also use an object cache to speed things up since the faster woo widgets plugin makes use of that to remember work it has done from page to page.

    If you need further help, I’ll need credentials to access your site – you can email credentials to where they’ll be deleted after 4 weeks.

  440. WPI Fast Filters for WooCommerce?

  441. The price filter has to join to wp_postmeta – it does it in the fastest way possible, but still – it’s a range query on a meta_value column that isn’t numeric so can’t use an index. I’m working on a solution for that soon.

    re: searching taxonomies – I’ve got that bit disabled in the beta right now because it wasn’t quite working how I wanted it – if you had a taxonomy called Books, it was returning every product under books when really it should just show you the matching taxonomy options.

    But note: if you search ‘Harry Potter’ on, you’ll see the taxonomies on the side DO become filtered because they have the ‘adaptive filters’ setting enabled. This may be close to what you want, but how about you tell me how you’d like it to behave and I’ll add that as an option?

    I was coding Super Speedy Search Beta updates today, so the code is all fresh in my mind and I can implement something cool for you.

  442. re: dropdown with thumbnails – that WAS in super speedy search, it’s not right now, but there is a widget that will update the actual woocommerce results (rather than a dropdown) – it just ajaxes the woocommerce archive as you search. If you type into the SIDEBAR Super Speedy Search you’ll see the products searching immediately without the user having to hit enter. If they DO hit enter currently then it DOES go to a new page.

    The top search box is also super speedy search but not ajaxified.

    I’ve added a price range slider for you, but it’s not recommended to use this on your shop home page – it should be restricted to when a taxonomy is selected (e.g. when a category or brand is selected) otherwise you see 10s perf on this million product store which is pretty slow.

  443. Not yet but this sounds like a great feature to let users choose if the header nav bar or footer should be included – not quite full screen then, but if you have a fixed/floating bar then it would still work well.

    If you submit a feature request then I’ll email other fullscreen typeform users to gather more feedback for this option so we can make it perfect.

  444. Not bad, but it has custom taxonomy filters, colour filters, ajax filters, ajax sorting etc, it’ll soon have distance filters, it has great SEO and permalink control and they’re really fast.

    Difficult to encapsulate all that in a name.

  445. Yes – I thought I’d linked it in the article, but here’s the overall changelog page:

    I removed them from the product page just because Google is complaining about the page being far too large for mobile devices so Google wasn’t ranking my pages. I’ll add them back in along with some other cool stuff like lists of plugins/themes compatibility, but it’ll come back in with Ajax.

    From that link above, you’ll find the changelogs in text format but they’ll be back on the product pages soon when I find the time to ajaxify them.

  446. Hah – yeah I like the alliteration. Fast Fluid Filters? Or Fluid Filters Software so the acronym would be FFS. People might think we sell drainage equipment though.

  447. I’ll say a ‘caveated’ YES – it depends what other plugins you are using too. But yes, 500K products is fast on $20 per month digital ocean server and your server is massive compared to that.

  448. Ok – I’ll have to alter the stats function to return something I guess. It checks its import speed after every row – this is why it’s running so slowly, it counts how many it has left to do and how many are done after every item imported. This calculation should ideally be done when the import is finished, not per row.

  449. And if you really DO want to force users to select the compatible device when buying (to reduce returns?) then just add that as a Product Option instead and force users to pick one in order to purchase. With that approach, you’d still have a Simple Product rather than a Variable Product, so you’d just sidestep this product variations performance issue.

  450. You say it’s the same product, regardless of which machine it’s compatible with – so why have these as variations at all? Just have them as a product attribute so users can search on that attribute filter. The compatible attribute will still appear on the product detail pages, but it makes no sense for the users to choose the machine for a single part when it’s the same part for all machines.

    You should change this variation to just be an attribute – then, if you use my Faster Woo Widgets plugin, you can have the ‘compatible device’ as a scrollable list of items with a little search box above for them to enter their device name to show that attribute from 1500 possibilities. Then the search results would show all parts for that device with a single add to cart button available from the /shop/ product archive since there really are no variations the way you described. You’re selling that one product, it just so happens to be compatible with 1500 devices, but it’s still a SIMPLE PRODUCT not a VARIABLE PRODUCT. You might have variations if the same part was available in different colours, or maybe with different power outputs or EU/US connectors or something like that, but even then you might have them as separate products like ‘EU kettle plug’, ‘US kettle plug’ or whatever.

  451. Yeah I don’t see why not – it’s an open source control panel so I’m sure it could be modified to install and configure this stack. Would be very cool.

  452. I’ve added our Subscribe box to the sidebar, subscribe to the newsletter and get notified for new articles.

  453. WooCommerce orders are stored in wp_posts, so yes it’s best to create the indexes at a quieter period. With 40,000 orders, and 1500 products, your wp_posts table is probably only 100,000 rows or fewer though. It’s your wp_postmeta table that may take a little longer, it might be as many as 1 million rows. Even then though, the indexes for 1 million rows take a few seconds. With MySQL 5.6+ (hopefully you’re on MySQL 8 right?) then CREATE INDEX statements (that Scalability Pro uses) are non-blocking. They are CPU and disk heavy though, so create the indexes at night if you’re worried.

    The best approach would be for you to apply the indexes on your staging environment – a clone of your live – and then you’ll see how quickly they get created.

  454. Dude that’s pretty unfair – you purchased the plugin and then didn’t ask any questions. The only question you ‘asked’ was, give me a refund. Our refund policy is great – 60 days money back guarantee – I only ask that you give me 7 days to address any issues you experienced. You haven’t actually told me about any issues you experienced. I’d be happy to help, but you didn’t actually ask for help.

  455. Can you please provide a link to the Rankmath zip file you use so I can download it to my dev environment and test it. Have you tried unticking the box to overrule yoast? i think it would be the same function.

  456. LOL – Full of *knowledge* – that’s not normally how that phrase goes!

  457. First, follow this guide to reduce image sizes. Then install Scalability Pro. If you’re still having issues after that there’s something really wrong and I’ll need to take a look personally. If you try both of those, can you please ask this question in the public Q&A area and link to that question here and I’ll answer. In the question, you can provide private credentials so I can access your site and take a look.

  458. I don’t have any ICO files in Faster Woo Widgets – in fact, I don’t have ICO files in any of my plugins.

    I suggest you install Sucuri and check your WordPress core files for hacks since it looks like you are hacked.

  459. I am pleased to confirm that a new Custom Taxonomy widget was added in beta 2.34 to add compatibility for Yith Brands, Woo Brands etc. Many improvements made to Faster Woo Widgets since then too – complete control over your custom taxonomy URLs etc.

  460. Hi – the bug is fixed in 2.53 Beta (30th November 2020).

    Please download the latest beta version and test with that.

    You can see the fix in the changelog here:

  461. No firm ETA yet, sorry. Schedule pretty much looks as follows: This week & next is bug & perf fixing + FWW testing. FWW should be released next week I think.

    After FWW is released, I’ll have a sprint dedicated to Scalability Pro – there are quite a few potential things to include in that upgrade.

    I haven’t prioritised this as high as maybe I should since there are workarounds that really help – reduce how many variations you have (e.g. using product options or product addons) and use a persistent object cache (e.g. redis or memcached). On top of that, recent versions of Woo have included ‘helper’ tables to improve performance, so I need to take time with a proper Scalability Pro sprint to examine how I can use those tables to further optimise, or whether I actually need to go the whole hog and create my own tables to improve performance.

  462. Oops, sorry, check again now, 2.45 has been pushed.

  463. I consider the current beta to be stable – it’s just such a big release that before pushing to core I really need to have all the docs in place to help people use everything to the fullest.

    You can see the changelog here:

    And you can view a lot more detail of what’s been fixed and implemented in this current sprint directly on this Trello card:

    If you close that Trello card, then look to the right, you can see all the stuff done in beta for Faster Woo Widgets – there’s a LOT.

  464. Cool – that looks easy – thanks for the help and the function link.

  465. Thanks – that’ll be very useful for others. I’ve got a fresh guide for Ubuntu 20.04 in the works, probably coming out in May.

  466. I’ll be releasing a 20.04 version in the summer. Focusing on plugin updates first.

  467. Thank you for the links.

  468. Beaver Builder compatibility was added in the last beta update. If I can get one or two more confirming it’s working perfectly I’ll push those updates to core.

  469. Hi – the update for variations is not out yet and not in the current sprint – you can see the Trello card for it here:

    Make sure you have an object cache (Redis is best, but Memcached is also good). It’s not a perfect solution but it does help a bit.

    Aiming to have this fix implemented in February.

  470. I’m never happy to hear about unhappy customers – I’m really sorry it didn’t speed things up for you.

    Here’s a guide explaining what each of the plugins do:

    As for contacting us – please use the Q&A through the site and you will get a response – I don’t see any questions from you. I do not reply to email questions any more if that’s where you tried to contact me. This was an intentional decision to eliminate the vast number of questions I used to answer in private – now other customers can benefit from the questions and answers.

    You can see my blog article discussing this here:

    If you are really in a rush, you can contact me through facebook, but if it’s a general question I’ll still ask you to ask the question through our Q&A system.

    For refunds – email

    I just looked through my emails and I see that your site crashed when you were creating the indexes – this is almost certainly due to your server running out of disk space. The indexes don’t take up too much extra space on your disks, but they do need some free space in order to be created.

  471. Thank you! This plugin was built for large stores or large blogs, so it’s really great to hear from happy customers.

  472. Thank you – I’m sure some of my readers would appreciate it if you shared a github link to your ansible playbooks.

  473. Thank you for letting us all know.

  474. In the settings page you would enter just the DOMAIN for the website(s) you are configuring.

    Then in the shortcode where you are placing the box you add your URLs and affiliate URLs.

  475. You might want to check your RAM consumption on the server. If you run the topcommand through SSH, you’ll see your PHP processes.

    If you see some of them consuming a lot of RAM then you probably have a memory leak. Quickest and easiest way to fix that (other than finding the leak) is to recycle your PHP processes.

    You could switch your PHP config to this:

    pm = ondemand
    pm.max_children = 32
    pm.process_idle_timeout = 3s

    ondemand rather than static will ensure the PHP processes get recycled. You’ll probably see a slightly slower speed when your site hasn’t had visitors in a while, but you should see higher overall capacity.

  476. Can you log into MySQL by justting running the mysql command from SSH?

    If you have configured a root password, then you can create a credential file to avoid having to enter the username and password every time. See this guide:

    1. Create a second file in /etc/nginx/sites-available/ and configure it for 2nd domain
    2. Ensure there is a symbolic link to this file in /etc/nginx/sites-enabled/
    3. Restart nginx

    To configure the 2nd domain:

    1. Change the server names server_name directive
    2. Change log path locations
    3. Change cache locations
    4. Generate fresh SSL
  477. Thank you! I’m glad you’re happy – I’m aware it’s quite daunting at first to build your own stack and I probably will at some point make an automated build for all this, but there’s a big benefit to going through the steps yourself so you understand your own stack a lot more.

    Remember to check out my plugins too once your store gets bigger as even with this stack WooCommerce will slow down once it gets bigger unless you use our plugins.

  478. Please visit the settings page and configure how you wish your permalinks to display and this warning should disappear.

  479. The primary part Scalability Pro optimises for imports is checking against wp_posts or wp_postmeta for existing data – i.e. should the import update or insert.

    So, it depends on your custom import script – I can recommend the WP All Import plugin – one-off license fee and it works with any size of file.

  480. Sorry for your poor experience, August had me pulled in all directions.

  481. Done – sorry for absence – it’s been a weird month. Working on two bugs in External Images now, Faster Woo Widgets again after that.

  482. Are you sure DB replication is running properly? You can test by modifying data manually in wp_options on one server and checking on the other.

    The other potential issue is maybe your web server cannot actually connect to the database on the other server – you can test that using the MySQL command with the IP of the other node.

    Also – you should make sure you use the INTERNAL IP addresses for the database host.

  483. If gallery does not display, ensure you are using DEFAULT gallery in your theme – if you use any advanced theme gallery functionality, quite often they pull the image URLs directly from the database rather than using the default WP functions.

    Please raise a bug if this issue persists – I’m working on External Images next few days.

  484. My current road map is: Faster Woo Widgets update, another Super Speedy Search update, then thorough docs and videos for everything, THEN I’m doing a new hosting stack alongside a hosting comparison of the best hosting options out there.

  485. There are by nature plenty of ‘warnings’ in the beta version – some deliberate, some not deliberate. You should switch off error display and use error logging instead if you’re using the beta version of any of our plugins.

  486. Yeah, you should install the latest of all components. I’ll get an updated article out before the end of the year.

  487. That looks pretty cool. I’m still finishing off plugin updates for Faster Woo Widgets, but once that is done and live I’ll be taking a fresh look at stack options and hosting options for people.

  488. Great! Thanks for letting me know.