将选定的变体价格移至 Woocommerce 中的产品附加组件表单下方

问题描述 投票:0回答:3

我有官方的 WooCommerce Product Addon's 插件,我正在可变产品上使用它。但是我希望价格显示在“添加到购物车”按钮上方,而不是显示在变体选择列表下方,因为现在不是这样。

我已经到处查看,并将单一产品的价格移至简短描述下方,但无法解决带有产品附加组件的可变产品的问题。

显示当前位置和所需位置的屏幕截图:

enter image description here

非常感谢任何帮助。

php wordpress woocommerce product-variations product-price
3个回答
3
投票

WooCommerce Product Addon's 插件在“添加到购物车”按钮之前已经显示了一个自定义定价表,其中显示了所选的变体价格,以及所选选项的定价和小计:

enter image description here

您不能仅单独移动显示的选定变体价格,因为它是由实时选择事件上的 JavaScript 驱动的,并与变体可用性和变体描述(如果有)分组。

所以你能做的是:

1) 要在添加到购物车按钮之前移动变体价格及其可用性和描述,请使用:

add_action( 'woocommerce_before_variations_form', 'reposition_display_for_variable_products', 10 );
function reposition_display_for_variable_products() {
    global $product;

    if( $product_addons = $product->get_meta('_product_addons') ) {
        if( sizeof($product_addons) > 0 ) {
            remove_action( 'woocommerce_single_variation', 'woocommerce_single_variation', 10 );
            add_action( 'woocommerce_single_variation', 'woocommerce_single_variation', 16 );
        }
    }
}

代码位于活动子主题(或活动主题)的 function.php 文件中。已测试并有效。

但它将显示在自定义“Addon's”定价表之后:

enter image description here


2) 隐藏 Woocommerce 变体价格 (因为它已由自定义“插件”定价表显示)

add_filter( 'woocommerce_available_variation', 'hide_variation_selected_price', 10, 3 );
function hide_variation_selected_price( $data, $product, $variation ) {
    if( $product_addons = $product->get_meta('_product_addons') ) {
        if( sizeof($product_addons) > 0 ) {
            $data['price_html'] = '';
        }
    }
    return $data;
}

代码位于活动子主题(或活动主题)的 function.php 文件中。已测试并有效。

enter image description here


3)同时使用两者,将变体可用性和变体描述移至“Addon”定价表之后和“添加到购物车”按钮之前:

enter image description here


0
投票
jQuery('.price').insertAfter('.sauce')

前端解决方案(只需放置正确的选择器)


0
投票

要移动产品附加组件总计位置,您可以将其添加到您的

functions.php
文件中:

if( isset($GLOBALS['Product_Addon_Display']) ){
  remove_action( 'woocommerce_product_addons_end', array( $GLOBALS['Product_Addon_Display'], 'totals' ), 10 );
}

如果您想将其添加回来:

if( isset($GLOBALS['Product_Addon_Display']) ){
  add_action( 'some_action_hook', array( $GLOBALS['Product_Addon_Display'], 'totals' ), 10 );
}

您必须确保两件事:

  1. 您必须将 id(或某个 id)作为参数传递给您的新钩子。
  2. 生成总计的 JS 会在某个
    #product-addons-total
    元素中查找
    .cart
© www.soinside.com 2019 - 2024. All rights reserved.