Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 有条件地向Woocommerce中的购物车项目和订单项目添加一个类_Php_Wordpress_Woocommerce_Cart_Orders - Fatal编程技术网

Php 有条件地向Woocommerce中的购物车项目和订单项目添加一个类

Php 有条件地向Woocommerce中的购物车项目和订单项目添加一个类,php,wordpress,woocommerce,cart,orders,Php,Wordpress,Woocommerce,Cart,Orders,当相关产品使用插件自定义字段时,我想对Woocommerce购物车和订单项目进行不同的样式设置,因此我需要有条件地添加类(到购物车项目和订单项目) 但我无法使用\u wc\u pao\u addon\u name元键使其工作。这是我的密码: add_filter( 'woocommerce_order_item_class', 'add_product_addon_classes', 10, 4 ); add_filter( 'woocommerce_cart_item_class',

当相关产品使用插件自定义字段时,我想对Woocommerce购物车和订单项目进行不同的样式设置,因此我需要有条件地添加类(到购物车项目和订单项目)

但我无法使用
\u wc\u pao\u addon\u name
元键使其工作。这是我的密码:

  add_filter( 'woocommerce_order_item_class', 'add_product_addon_classes', 10, 4 );
  add_filter( 'woocommerce_cart_item_class', 'add_cart_addon_classes', 10, 4 );

  function add_cart_addon_classes ( $class, $cart_item, $values  ) {

    if ( isset( $values['_wc_pao_addon_name'] ) ) {
        $class = $class . ' fl-addon-item';
    }

    return $class;
}
我做错了什么


相关:

不能使一个函数同时适用于两个钩子,因为它们具有不同的钩子参数:

  • 钩子
    woocommerce\u cart\u item\u class
    使用
    $class
    $cart\u item
    $cart\u item\u key
    参数
  • 钩子
    woocommerce\u order\u item\u class
    使用
    $class
    $item
    $order
    参数
正如您看到的那样,
$values[''u wc\u pao\u addon\u name']
无法在您的代码中工作

1)购物车项目:

要检查并获得Woocommerce产品附加组件插件使用的正确meta_密钥,您将首先使用此答案末尾添加的测试挂钩函数

一旦找到正确的
meta\u键
,您将在以下代码中用正确的
meta\u键
替换addon\u parent\u id:

add_filter( 'woocommerce_cart_item_class', 'additional_class_to_cart_item_classes', 10, 3 );
function additional_class_to_cart_item_classes ( $class, $cart_item, $cart_item_key ) {
    if ( isset( $cart_item['addon_parent_id'] ) ) {
        $class .= ' fl-addon-item';
    }

    return $class;
}
add_filter( 'woocommerce_order_item_class', 'additional_class_to_order_item_classes', 10, 3 );
function additional_class_to_order_item_classes ( $class, $item, $order ) {
    if ( $item->get_meta('_wc_pao_addon_name') ) {
        $class .= ' fl-addon-item';
    }

    return $class;
}
代码进入活动子主题(活动主题)的function.php文件。它应该适用于购物车和结帐


2)对于订单项目(订单接收、订单查看、订单付款和电子邮件通知):

更复杂的是,您需要知道如何将
\u wc\u pao\u addon\u name
保存在订单项中。为此,您需要查看数据库表
wp\u woocommerce\u order\u itemmeta
以搜索与
\u wc\u pao\u addon\u name
匹配的
meta\u键

一旦找到正确的
meta_键
,您将在以下代码中用右边的
meta_键
替换加载项名称

add_filter( 'woocommerce_cart_item_class', 'additional_class_to_cart_item_classes', 10, 3 );
function additional_class_to_cart_item_classes ( $class, $cart_item, $cart_item_key ) {
    if ( isset( $cart_item['addon_parent_id'] ) ) {
        $class .= ' fl-addon-item';
    }

    return $class;
}
add_filter( 'woocommerce_order_item_class', 'additional_class_to_order_item_classes', 10, 3 );
function additional_class_to_order_item_classes ( $class, $item, $order ) {
    if ( $item->get_meta('_wc_pao_addon_name') ) {
        $class .= ' fl-addon-item';
    }

    return $class;
}
代码进入活动子主题(活动主题)的function.php文件。它应该适用于订单项目


检查并获取正确的购物车自定义元数据(仅限测试): 要在cart对象中找到插件作为Woocommerce产品加载项添加的自定义元数据的正确元数据,您将使用以下内容(将在cart页面中显示cart项目原始数据):

//测试和获取购物车项目原始数据
添加\u操作('woocommerce\u在\u购物车之前',函数(){
//循环浏览购物车项目
foreach(WC()->cart->get_cart()作为$cart_项目){
//输出购物车项目原始数据
回显“”;打印($cart\u项目);回显“”;
}
}, 987 );

代码进入活动子主题(活动主题)的function.php文件。

谢谢!对于邮件/订单项目,代码工作正常(我查看了数据库,meta_键正好是_wc_pao_addon_name)。但cart的代码不起作用(不是因为订单还没有创建吗?)。谢谢你,你每次都是天才。)正确的元似乎是附加的家长id。非常感谢!