步骤1将获取产品的父ID。
下一步是循环遍历购物车,并检查购物车中的每个产品是否是父产品的变体(将显示为$cart_item->product_id
) 并将属性信息保存在另一个数组中。属性中存在一个问题,因为它随安装而变化,并且取决于产品的设置方式。例如:如果您有一个属性“color”,它将显示在中的购物车项目中$cart_item->variation->attribute_pa_color
. 您需要在wp\\u postmeta表中查询数据库,以获得正确的元键。另一种选择是只保存购物车项目变体元素中的所有内容。
最后,循环浏览结果并显示它们。
现在至于把它放在哪里,从技术上讲,它进入了功能。主题的php文件。您可能应该使用child theme 这是另一个讨论。WooCommerce使用钩子来添加或扩展功能,您使用哪个钩子取决于您希望它显示在哪里。Business Bloomer有一个优秀的视觉挂钩指南post for the product page. 例如,如果要将此列表置于简短描述下,则需要在函数中使用此列表。php(我喜欢把这些放在顶部附近)。。。
add_action( \'woocommerce_before_single_product_summary\', \'products_in_cart\', 5 );
代码引用函数
products_in_cart()
. 这可以在函数中的任何位置进行。php(除了在另一个代码块内!)我通常把这些放在底部。。。
function products_in_cart() {
$parent = get_the_id(); // the parent product
$products_in_cart = array();
$cart_items = WC()->cart->get_cart();
foreach( $cart_items as $cart_item ){
if ($cart_item[\'product_id\'] == $parent) {
$products_in_cart[] = $cart_item[\'variation\']; // possibly array(\'attribute_pa_color\'=>\'black\')
}
}
if (count($products_in_cart) > 0) {
echo(\'You have selected these seats already:<br>\');
foreach($products_in_cart as $product) {
foreach($product as $key=>$val) {
echo($val.\'<br>\');
}
}
}
}
免责声明:我正在按原样共享此代码。我刚刚做了一些类似的事情,所以它在理论上是可行的,但几乎肯定需要根据您的安装和需要进行调整。