php - 如何在 Woocommerce 项目中显示变体名称
问题描述
我正在尝试制作一个 Ajax 弹出式购物车,其中将动态添加产品。除产品变化外,一切正常。当将变量产品添加到购物车时,它不显示变体名称:
<?php
$items = WC()->cart->get_cart();
foreach($items as $item => $values) {
$_product = wc_get_product( $values['data']->get_id() );
$product_link = get_permalink( $values['data']->get_id() );
$title = $_product->get_title();
$variations = wc_get_formatted_cart_item_data($values,true);
echo '<a href="'.$product_link.'">'. $title.'</a>';
echo $variations;
}
?>
解决方案
首先,您只需要使用WC_Product
方法 get_name()
(参见cart/minicart.php
第 36 行的模板)替换代码中的行:
$title = $_product->get_title();
和:
$title = $_product->get_name();
重要提示:在某些情况下,您需要添加以下行(取决于您要显示的内容和位置):
// Force displaying variation attributes in the product name (in cart/minicart/checkout) add_filter( 'woocommerce_product_variation_title_include_attributes', '__return_true' ); // (Optional) Force displaying product variation attributes as separated formatted metadata (in cart/minicart/checkout) add_filter( 'woocommerce_is_attribute_in_product_name', '__return_false' );
代码位于活动子主题(或活动主题)的 functions.php 文件中。
为了测试它,一旦将此代码添加到您的主题
functions.php
文件中,首先清空购物车,因为购物车片段缓存在迷你购物车(Ajax)中。
这次它将显示变体名称。
推荐阅读
- docker - Docker Microsoft 包哈希和不匹配
- angular - 如何根据环境替换 Angular 8.3+ 中的 index.html?
- c# - 如何获取父节点子节点的子节点值
- php - 使用 PHP 和 WSDL 下载数据不起作用,但在 SoapUI 中它可以工作
- presto - 尝试在画面中连接 presto
- postgresql - ORDER BY 表达式必须出现在选择列表中
- javascript - asp.net 中 fullCalendar 的 json 问题
- object - 无法将 OBJ MTL 和纹理文件导入 Cinema 4d
- java - 编辑 ObservableList 中的多个元素,并且仅在最后一次更改后触发更改侦听器
- python - 图像到文本解码器