WooCommerce One Page Checkout不显示属性或变体

时间:2017-08-23 16:03:31

标签: wordpress woocommerce attributes checkout variations

Wordpress> WooCommerce>一页结帐

在启用了One Page Checkout的单个产品上,我有3个属性变体:

Product Variations Dashboard

如果选择了变体并将其添加到订单,则单页结帐会显示产品名称,但不包括变体:

One Page Checkout - No Variations Displayed

变量ARE显示在完整的购物车中,但不是在使用One Page时。当客户订购多种变体时,这可能会让他们感到困惑。

我只想显示客户选择的变体以及使用单页结账的产品名称。

有人可以帮忙吗?

PS:如果这是不正确的发布地点我很抱歉。我是社区的新手,只花了1个Php和CSS课程,并且已经搜索谷歌和Stack以获得答案。希望有人可以提供帮助。先感谢您! :)

1 个答案:

答案 0 :(得分:2)

在WooCommerce 2.x中,变体属性在购物车中显示为元数据,但在WooCommerce 3.x中,它们包含在产品名称中。但是,这需要更改插件或主题中的任何购物车自定义,以使用新的WC_Product方法get_name()代替get_title()

如果这是第三方插件或主题,理想情况下,您应该了解是否有与WooCommerce 3.x完全兼容的新版本并解决了该问题。但作为一种解决方法,假设插件/主题使用过滤器挂钩woocommerce_cart_item_name,您可以将以下内容添加到主题functions.php中(如果您使用的是第三方主题,则应create a child theme这样你就不会在更新它时失去你的更改):

add_filter(
  'woocommerce_cart_item_name',
  function($name, $cart_item, $cart_item_key) {
    $product = apply_filters(
      'woocommerce_cart_item_product',
      $cart_item['data'],
      $cart_item,
      $cart_item_key
    );
    if (method_exists($product, 'get_name')) {
      // WooCommerce 3.x
      $is_link = substr($name, 0, 3) === '<a ';
      $name = $product->get_name();
      if ($is_link) {
        $name = sprintf(
          '<a href="%s">%s</a>',
          esc_url($product->get_permalink($cart_item)),
          $name
        );
      }
    }
    return $name;
  },
  50, 3
);