php - 在 WooCommerce 结帐时添加产品描述时出现问题
问题描述
我正在尝试在 WooCommerce 结帐时显示产品描述。
我在用着:
add_filter( 'woocommerce_get_item_data', 'wc_checkout_product_description_2', 10, 2 );
function wc_checkout_product_description_2( $other_data, $cart_item )
{
$post_data = get_post( $cart_item['product_id'] );
$other_data[] = array( 'name' => $post_data->post_excerpt );
return $other_data;
}
它采用产品简短描述并将其显示在产品下方。
它几乎可以完美运行,但它会在描述的末尾显示一个冒号 (:),即使没有简短的描述,冒号也会保留。
结果:
我不知道为什么它会出现如何摆脱它。我需要一些帮助。
解决方案
冒号会自动添加到密钥中。因为您只使用name
,所以这将被添加到产品描述的末尾。
要正确显示它,您可以使用:
// Display on cart & checkout pages
function filter_woocommerce_get_item_data( $item_data, $cart_item ) {
// Product excerpt
$post_excerpt = get_the_excerpt( $cart_item['product_id'] );
// NOT empty
if ( ! empty( $post_excerpt ) ) {
$item_data[] = array(
'key' => __( 'Product description', 'woocommerce' ),
'value' => $post_excerpt,
'display' => $post_excerpt,
);
}
return $item_data;
}
add_filter( 'woocommerce_get_item_data', 'filter_woocommerce_get_item_data', 10, 2 );
或者,如果您真的想删除冒号/名称(键)。除了使用我的答案中的代码过滤钩子之外,您还必须覆盖cart/cart-item-data.php模板文件
- 此模板可以通过将其复制到
yourtheme/woocommerce/cart/cart-item-data.php
.
代替
<dl class="variation">
<?php foreach ( $item_data as $data ) : ?>
<dt class="<?php echo sanitize_html_class( 'variation-' . $data['key'] ); ?>"><?php echo wp_kses_post( $data['key'] ); ?>:</dt>
<dd class="<?php echo sanitize_html_class( 'variation-' . $data['key'] ); ?>"><?php echo wp_kses_post( wpautop( $data['display'] ) ); ?></dd>
<?php endforeach; ?>
</dl>
和
<dl class="variation">
<?php foreach ( $item_data as $data ) : ?>
<dt class="<?php echo sanitize_html_class( 'variation-' . $data['key'] ); ?>"><?php echo wp_kses_post( wpautop( $data['display'] ) ); ?></dt>
<?php endforeach; ?>
</dl>
推荐阅读
- c - 发送日期和时间作为 TCP 服务器欢迎消息
- javascript - 对现有请求提出请求
- javascript - 在对象数组中创建具有相同键平均值的新数组
- sql - 在 Oracle PL SQL 中的 CONNECT_BY_ROOT 之后显示直接父级
- python - 将点分隔字符串转换为 json Python
- css - Bootstrap 4 在 div 上使用粘性和浮动
- javascript - 在我的服务器代码中使用“setHeader”设置内容安全策略失败?
- reactjs - 使用受保护的路由时反应 js this.props.match.params 为空
- javascript - 如何在 NODE.JS 中从浏览器插入新的 MySQL JSON TYPES 对象
- xml - XSLT:UTC TimeStamp 使用adjust-dateTime-to-timezone 转换为时区