php - Reverse Cross-Sells (WooCommerce)

admin2025-06-06  0

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

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

Share Improve this question asked Oct 31, 2018 at 8:40 Gustav GesarGustav Gesar 11 bronze badge
Add a comment  | 

1 Answer 1

Reset to default 0

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.

转载请注明原文地址:http://conceptsofalgorithm.com/Algorithm/1749210940a317290.html

最新回复(0)