Php 将父产品名称添加到WooCommerce中的每个购物车项目名称中
我想在购物车页面中显示我的分组产品的父产品名称和子产品名称(购物车项目)。 我正在链接产品->分组产品添加子产品下选择父产品数据作为分组产品 模板中的代码Php 将父产品名称添加到WooCommerce中的每个购物车项目名称中,php,wordpress,woocommerce,cart,product,Php,Wordpress,Woocommerce,Cart,Product,我想在购物车页面中显示我的分组产品的父产品名称和子产品名称(购物车项目)。 我正在链接产品->分组产品添加子产品下选择父产品数据作为分组产品 模板中的代码cart.php: echo apply_filters( 'woocommerce_cart_item_name', sprintf( '<a href="%s">%s</a>', esc_url( $product_permalink ), $_product->get_name() ), $cart_item
cart.php
:
echo apply_filters( 'woocommerce_cart_item_name', sprintf( '<a href="%s">%s</a>', esc_url( $product_permalink ), $_product->get_name() ), $cart_item, $cart_item_key )
echo应用过滤器('woocommerce\u cart\u item\u name',sprintf('',esc\u url($product\u permalink),$\u product->get\u name()),$cart\u item,$cart\u item\u key)
这是我对每个购物车项目的要求:
父产品>子产品
于2018-02更新 无法以传统方式获取父分组产品名称或分组产品ID,因为它们不存在于购物车对象中强> 方法是当使用
woocommerce\u add\u cart\u item\u data
操作钩子中的自定义函数将产品添加到购物车时,在购物车对象中包含分组的产品id(只有分组的产品id将作为购物车对象中的自定义数据添加)
然后,为了使用当前购物车项目名称显示父分组产品名称,我们使用另一个自定义函数,该函数挂接在woocommerce\u cart\u item\u name
过滤器钩子中
请参阅此更新:
最后的代码是:
// Adding the grouped product ID custom hidden field data in Cart object
add_filter( 'woocommerce_add_cart_item_data', 'save_custom_fields_data_to_cart', 10, 2 );
function save_custom_fields_data_to_cart( $cart_item_data, $product_id ) {
if( ! empty( $_REQUEST['add-to-cart'] ) && $product_id != $_REQUEST['add-to-cart'] ) {
$cart_item_data['custom_data']['grouped_product_id'] = $_REQUEST['add-to-cart'];
$data['grouped_product_id'] = $_REQUEST['add-to-cart'];
// below statement make sure every add to cart action as unique line item
$cart_item_data['custom_data']['unique_key'] = md5( microtime().rand() );
WC()->session->set( 'custom_data', $data );
}
return $cart_item_data;
}
// Add the parent grouped product name to cart items names
add_filter( 'woocommerce_cart_item_name', 'custom_product_title_name', 10, 3 );
function custom_product_title_name( $cart_item_name, $cart_item, $cart_item_key ){
// Only in cart and checkout pages
if ( is_cart() || is_checkout() )
{
// The product object from cart item
$product = $cart_item['data'];
$product_permalink = $product->is_visible() ? $product->get_permalink( $cart_item ) : '';
// The parent product name and data
if( ! empty( $cart_item['custom_data']['grouped_product_id'] ) ){
$group_prod_id = $cart_item['custom_data']['grouped_product_id'];
$group_prod = wc_get_product($group_prod_id);
if ( ! $group_prod->is_type( 'grouped' ) ) return $cart_item_name;
$parent_product_name = $group_prod->get_name();
$group_prod_permalink = $group_prod->is_visible() ? $group_prod->get_permalink() : '';
if ( ! $product_permalink )
return $parent_product_name . ' > ' . $product->get_name();
else
return sprintf( '<a href="%s">%s</a> > <a href="%s">%s</a>', esc_url( $group_prod_permalink ), $parent_product_name, esc_url( $product_permalink ), $product->get_name() );
}
else
return $cart_item_name;
}
else
return $cart_item_name;
}
//在购物车对象中添加分组的产品ID自定义隐藏字段数据
添加过滤器('woocommerce\u add\u cart\u item\u data','save\u custom\u fields\u data\u to\u cart',10,2);
功能保存\自定义\字段\数据\到\购物车($cart\项目\数据,$product\ id){
如果(!empty($\u请求['add-to-cart'])和&$product\u id!=$\u请求['add-to-cart']){
$cart_item_data['custom_data']['grouped_product_id']=$\u请求['add-to-cart'];
$data['grouped_product_id']=$_请求['add-to-cart'];
//下面的语句确保每个“添加到购物车”操作都是唯一的行项目
$cart_item_data['custom_data']['unique_key']=md5(microtime().rand());
WC()->session->set('custom_data',$data);
}
返回$cart\u item\u数据;
}
//将父分组产品名称添加到购物车项目名称
添加过滤器('woocommerce\u cart\u item\u name','custom\u product\u title\u name',10,3);
功能自定义商品标题名称($cart\u item\u name、$cart\u item、$cart\u item\u key){
//仅在购物车和结帐页面中
if(is_cart()| | is_checkout())
{
//购物车项目中的产品对象
$product=$cart_项目['data'];
$product\u permalink=$product->is\u visible()?$product->get\u permalink($cart\u item):“”;
//父产品名称和数据
如果(!empty($cart\u item['custom\u data']['grouped\u product\u id'])){
$group_prod_id=$cart_item['custom_data']['grouped_product_id'];
$group\U prod=wc\U get\U product($group\U prod\U id);
如果(!$group\U prod->是类型('GROUBLED'),则返回$cart\U item\U名称;
$parent_product_name=$group_prod->get_name();
$group\u prod\u permalink=$group\u prod->is\u visible()?$group\u prod->get\u permalink():'';
如果(!$product\U permalink)
返回$parent_product_name.'>'.$product->get_name();
其他的
返回sprintf('>',esc_url($group_prod_permalink),$parent_product_name,esc_url($product_permalink),$product->get_name());
}
其他的
返回$cart\u item\u name;
}
其他的
返回$cart\u item\u name;
}
代码位于活动子主题(或主题)的function.php文件或任何插件文件中
此代码经过测试,适用于WooCommerce版本3+
您将获得以下信息:
注意:分组的产品名称有自己的永久链接
@Asher新版本: