在Woocommerce中将选定的变化价格移动到产品附加组件表格下方

时间:2019-03-31 12:46:59

标签: php wordpress woocommerce price variations

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

我到处都看过了,我已经将单个产品的价格调到简短描述以下,但是无法解决带有附加产品的可变产品的问题。

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

enter image description here

非常感谢您的帮助。

3 个答案:

答案 0 :(得分:1)

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文件中。经过测试,可以正常工作。

但是它将显示在自定义“附加组件”定价表之后:

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)一起使用,将变体可用性和变体描述移动到“附加组件”定价表之后和添加到购物车按钮之前:

enter image description here

答案 1 :(得分:0)

jQuery('.price').insertAfter('.sauce')

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

答案 2 :(得分: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