在Woocommerce中,我想获得一个产品列表,该产品被定义为针对它们的交叉销售。
因此,检查哪些产品B是交叉销售,就会得出:A,C
找不到任何背景
示例: 产品A具有产品B,C作为交叉销售 产品B具有交叉销售的产品A,C,D 产品C具有交叉销售的产品A,B,D
因此,检查哪些产品B是交叉销售,就会得出:A,C
答案 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);