在购物车上展示第一类产品

时间:2019-03-05 作者:Carolyn DeHass

我正在使用下面的代码在我的购物车页面上显示类别。我只想显示第一个类别,而不是列表。我该怎么做呢?

// Add category to product in shopping cart
add_filter( \'woocommerce_cart_item_name\', \'cart_item_category\', 99, 3);

function cart_item_category( $name, $cart_item, $cart_item_key ) {


$product_item = $cart_item[\'data\'];

// make sure to get parent product if variation
if ( $product_item->is_type( \'variation\' ) ) {
$product_item = wc_get_product( $product_item->get_parent_id() );
} 

$cat_ids = $product_item->get_category_ids();

// if product has categories, concatenate cart item name with them
if ( $cat_ids ) $name .= \'</br>\' . wc_get_product_category_list( $product_item->get_id(), \', \', \'<span class="posted_in">\' . _n( \'\', \'\', count( $cat_ids ), \'woocommerce\' ) . \' \', \'</span>\' );
return $name;
}
感谢advanced的帮助!

1 个回复
SO网友:Gert

您可能希望使用一个简单的操作挂钩,而不是对产品名称使用过滤器。那将是一种更干净的方式。

使用get_the_terms() 要获取产品类别的数组,然后选择第一个,请执行以下操作:

function display_first_category( $cart_item, $cart_item_key ){

   $product_cat =  get_the_terms( $cart_item[\'product_id\'], \'product_cat\' );

   if ( $product_cat && ! is_wp_error( $product_cat ) ) {

      // Display first category
      echo \'<p>Category: <a href=\' . esc_url( get_category_link( $product_cat[0]->term_id ) ) . \' title="Category Name">\' . $product_cat[0]->name . \'</a></p>\';

      // Display all categories
      //echo \'<p>Categories: \' . wc_get_product_category_list( $cart_item[\'product_id\'] ) . \'</p>\';
   }
}

add_action( \'woocommerce_after_cart_item_name\', \'display_first_category\', 10, 2);
请记住,过滤器的目标是修改现有的输出,而动作挂钩更倾向于添加一些东西。

如果希望函数在另一个动作挂钩上运行,只需在do_action(\'hook_you_want_to_use\', \'your_function\') 与过滤器不同,无需再进行任何更改。这个插件可以在开发时显示页面上的所有过滤器和操作挂钩。Simply show hooks周围也有一些其他的。

相关推荐