How to remove duplicate product with same product ID in Woocommerce?
Answer a question
I updated the database. After the update I was faced with duplicate products in Woocommerce -- even though I didn't have duplicate products in database.
I deleted the transient but it's not fixed. I'd appreciate it if you guide me on how to fix it.
Thanks in advance.


The below block shows the list of active plugins
+------------------------------------------------+--------+------------------------------+----------+
| name | status | update | version |
+------------------------------------------------+--------+------------------------------+----------+
| wc-abandoned-carts-by-small-fish-analytics | active | none | 2.6.2 |
| admin-menu-search | active | none | 1.2 |
| woo-advanced-shipment-tracking | active | available | 3.1.4 |
| woo-auto-coupons | active | none | 1.3.2 |
| better-search-replace | active | none | 1.3.3 |
| bookly-responsive-appointment-booking-tool | active | none | 18.9 |
| bookly-addon-pro | active | none | 3.1 |
| code-snippets | active | none | 2.14.0 |
| commercegurus-commercekit | active | none | 1.1.7 |
| customizer-export-import | active | none | 0.9.2 |
| delete-duplicate-posts | active | none | 4.4.7 |
| elementor | active | none | 3.0.13 |
| elementor-pro | active | available | 3.0.5 |
| essential-addons-for-elementor-lite | active | none | 4.3.6 |
| essential-addons-elementor | active | available | 4.2.1 |
| export-import-menus | active | none | 1.6.0 |
| facebook-for-woocommerce | active | available | 1.9.11 |
| kliken-marketing-for-google | active | none | 1.0.6 |
| jet-engine | active | available | 2.5.2 |
| kirki | active | none | 3.1.5 |
| mailchimp-for-woocommerce | active | none | 2.4.7 |
| one-click-demo-import | active | none | 2.6.1 |
| payment-gateways-by-user-roles-for-woocommerce | active | none | 1.2.3 |
| seo-by-rank-math | active | available | 1.0.52.1 |
| redux-framework | active | available | 4.1.21 |
| google-site-kit | active | none | 1.20.0 |
| smart-variations-images-premium | active | none | 4.0.75 |
| string-locator | active | none | 2.4.1 |
| analogwp-templates | active | none | 1.7.5 |
| transients-manager | active | none | 1.8.1 |
| updraftplus | active | available | 1.16.29 |
| woo-variation-swatches | active | available | 1.1.0 |
| woocommerce | active | none | 4.7.0 |
| woocommerce-advanced-bulk-edit | active | none | 4.5 |
| advanced-product-labels-for-woocommerce | active | available | 1.1.16.4 |
| woocommerce-attribute-images | active | none | 1.2.0 |
| woocommerce-brands | active | none | 1.6.10 |
| woocommerce-composite-products2 | active | none | 7.1.1 |
| woocommerce-currency-converter-widget | active | none | 1.6.23 |
| woocommerce-email-test | active | version higher than expected | 2.1 |
| order-emails-log-for-woocommerce | active | version higher than expected | 2.0 |
| woocommerce-order-status-manager | active | none | 1.9.2 |
| woocommerce-product-bundles | active | none | 6.4.0 |
| woocommerce-sequential-order-numbers | active | none | 1.9.5 |
| woocommerce-gateway-stripe | active | none | 4.5.5 |
| weight-based-shipping-for-woocommerce | active | none | 5.3.7 |
| wordpress-importer | active | none | 0.7 |
| xforwoocommerce | active | none | 1.2.8 |
| yith-woocommerce-pre-order-premium | active | none | 1.5.9 |
+------------------------------------------------+--------+------------------------------+----------+
Also I found I have duplicate product on category page with different price while they have same price in inner pages!
Answers
In fact I had two issue. the first issue was duplicate product in product list page, that I figured it out the issue relate the some codes like this:
add_filter('posts_clauses', 'order_by_stock_status');
function order_by_stock_status($posts_clauses) {
global $wpdb;
// only change query on WooCommerce loops
if ( is_woocommerce() && (is_shop() || is_product_category() || is_product_tag() || is_product_taxonomy())) {
$posts_clauses['join'] .= " INNER JOIN $wpdb->postmeta istockstatus ON ($wpdb->posts.ID = istockstatus.post_id) ";
$posts_clauses['orderby'] = " istockstatus.meta_value ASC, " . $posts_clauses['orderby'];
$posts_clauses['where'] = " AND istockstatus.meta_key = '_stock_status' AND istockstatus.meta_value <> '' " . $posts_clauses['where'];
}
return $posts_clauses;
}
I added the !is_admin() to conditions, then It fixed.
Also I had another same issue but this time in categories page. For this case I checked plugins and I figured it out the xforwoocommerce (filter) plugin makes duplicate product with different pricing! :| ( I don't know why! )
I disabled it and it fixed, but I think the root cause is the above code.
Thanks from @benjamin, @grégory-c and @Mtxz!
更多推荐
所有评论(0)