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.

Products

Database

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!

Logo

WooCommerce社区为您提供最前沿的新闻资讯和知识内容

更多推荐