在Woocommerce中,如何找到某个产品可以交叉销售的所有产品?

时间:2019-06-01 05:03:49

标签: php wordpress woocommerce

在Woocommerce中,我想获得一个产品列表,该产品被定义为针对它们的交叉销售。

因此,检查哪些产品B是交叉销售,就会得出:A,C

找不到任何背景

示例: 产品A具有产品B,C作为交叉销售 产品B具有交叉销售的产品A,C,D 产品C具有交叉销售的产品A,B,D

因此,检查哪些产品B是交叉销售,就会得出:A,C

1 个答案:

答案 0 :(得分:0)

您可以使用mysql查询来做到这一点。

当WooCommerce将交叉销售ID作为序列化数据存储时-正确的方法似乎是通过某个WP循环读取所有产品,然后反序列化->分析所有交叉销售ID然后搜索所需的ID-但是这会花费太多时间和内存。 / p>

这就是为什么我们需要找到更简单的方法-一些技巧。在这里:

假设产品A的ID为132,产品B的ID为60,产品C的ID为34。

产品A有2个交叉销售产品-B和C。

因此wp_postmeta表将具有以下行:

1098    132 _crosssell_ids  a:2:{i:0;i:60;i:1;i:34;}

产品B当前在其他产品的crossell_ids元数据中以“ i:60”表示;唯一字符串。这就是为什么我们只需要在所有wp_postmeta中查找该字符串acroos。

global $wpdb;
$product_b_id=60;

$product_that_have_B_as_crossell= $wpdb->get_col("select post_id 
from $wpdb->postmeta 
where 
meta_key='_crosssell_ids' 
and
meta_value like  '%i:".esc_sql($product_b_id).";%' ");

var_dump($product_that_have_B_as_crossell);