【问题标题】:How do I change the add to cart text for specific variations in WooCommerce?如何更改 WooCommerce 中特定变体的添加到购物车文本?
【发布时间】:2018-01-15 01:32:31
【问题描述】:

在我的 WooCommerce 商店中,我有简单产品和可变产品,简单产品和变体都有一个元值“pre_order”,即是/否。

如果在后端设置了此选项,我希望添加到购物车按钮显示“预购”而不是“添加到购物车”。

对于简单的产品,我可以使用过滤器或编辑文件模板来更改它,但变化似乎要复杂得多......

选择变体选项后,价格和 sku 会更新,在此过程中,我还想检查上述元值,如果该变体的元值预订单为“是”,那么我还想更改按钮文本,但我找不到这样做的方法!

【问题讨论】:

    标签: woocommerce


    【解决方案1】:

    WooCommerce 提供了一个名为variation_id 的隐藏输入字段。一旦变体发生变化,更新的变体 ID 就会保存在这个隐藏的输入字段中。因此,首先您必须在更新此输入字段的值时使用 jQuery 进行检测,当检测到时触发您自己的 ajax 请求并检查此变体是否已分配给预购,如果是,现在您可以更改添加到购物车后的文本ajax 的响应是成功。

    【讨论】:

      【解决方案2】:

      WooCommerce 将变体详细信息(如价格、尺寸、重量等)存储在 .variations_form 元素中名为 data-product_variations 的数据属性中。当用户选择特定变体时,此数据用于显示价格和其他详细信息。您可以使用过滤器 woocommerce_available_variation 在此数据属性中添加元值,例如:

      add_filter('woocommerce_available_variation', 'vna_add_variation_meta');
      function vna_add_variation_meta($dataattr, $product, $variation) {
          $dataattr['pre_order'] = get_post_meta($variation->get_id(), 'pre_order', true);
          return $dataattr;
      }
      

      您可以在class-wc-product-variable.php 文件中找到有关woocommerce_available_variation 的更多详细信息。

      一旦您在 DOM 元素中获得元值,您可以使用以下事件来了解用户何时选择了一个变体。

      $( ".single_variation_wrap" ).on( "show_variation", function ( event, variation ) {
          // Fired when the user selects all the required dropdowns / attributes
          // and a final variation is selected / shown
          // Here you will need to get the value of 'pre_order' from the variation object
          // something like: variation.pre_order
          // and take appropriate action
      } );
      

      请注意:代码未经测试,因此可能存在一些拼写错误;)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-04-21
        • 2020-04-23
        • 2016-09-15
        • 1970-01-01
        • 2018-06-29
        • 1970-01-01
        • 2017-10-02
        • 1970-01-01
        相关资源
        最近更新 更多