Reverse Cross-Sells (WooCommerce)

When you run get_post_meta( get_the_ID(), '_crosssell_ids',true); you get an array of all the products that the current product cross sells to.

How do I reverse that? To get all the products that cross sells to the current item?

Example:

Not this: Product 1 -> Cross-sell: Product 2, Product 3

But this: Product 3 - Cross-sell: Product 1

Topic woocommerce-offtopic get-the-id post-meta php Wordpress

Category Web


You could do it with a meta query

$current_post_id = 'YOUR_POST_ID';

$args = array(
    'post_type' => 'product',
    'posts_per_page' => -1,
    'meta_query' => array(
        array(
            'key' => '_crosssell_ids',
            'value' => $current_post_id,
            'compare' => 'LIKE'
        )
    )
);

$query = new WP_Query($args);

if($query->have_posts()){
    while($query->have_posts()): $query->the_post();
        $product = wc_get_product(get_the_ID());

        // Do what you want with the product.
    endwhile;
}

This query will return all products that have the $current_post_id as a cross sell id.

Hope this helps.

About

Geeks Mental is a community that publishes articles and tutorials about Web, Android, Data Science, new techniques and Linux security.