首页 > 解决方案 > 在 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;
}

它采用产品简短描述并将其显示在产品下方。

它几乎可以完美运行,但它会在描述的末尾显示一个冒号 (:),即使没有简短的描述,冒号也会保留。

结果:

在此处输入图像描述


我不知道为什么它会出现如何摆脱它。我需要一些帮助。

标签: phpwordpresswoocommerceproductcheckout

解决方案


冒号会自动添加到密钥中。因为您只使用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>

推荐阅读