当前位置: 首页 > 知识库问答 >
问题:

变动价格

越风史
2023-03-14

我在Woocommerce下运行我的演示商店,我想将当您选择产品变体时显示的价格移动到数量字段的正下方,而不是介于数量字段和上一个变体之间。

这是我在函数中尝试的代码。php文件到目前为止,但它不起作用:

// Move WooCommerce price
remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_price', 10 );
add_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_price', 25 );

我在什么地方出错了吗?

共有3个答案

尉迟景福
2023-03-14

我想我找到了一个非常简单的解决办法。当变体的选择发生变化时,Woocommerce将启动一个javascript事件。

我们可以收听该事件并复制该事件。吴宇森:价格变化。woocommerce价格金额html,我们想去哪里就去哪里。

接下来,我给大家举一个我的解决方案的例子:

js



    jQuery(function ($) {
        /**
        * Change Price Variation to correct position
        */
        $('.variations_form').on('woocommerce_variation_has_changed', function () {
            $('.wrap-price-variation').empty();
            $('.wrap-price-variation').html($('.woocommerce-variation-price .woocommerce-Price-amount').html())
        });
    });


CSS



    .woocommerce-variation .woocommerce-variation-price {
        display: none;
    }


勾学博
2023-03-14

这会将变动价格移动到数量下方,刚好在“添加到购物车”按钮上方。您可能需要根据需要应用一些CSS样式。

function move_variation_price() {
    remove_action( 'woocommerce_single_variation', 'woocommerce_single_variation', 10 );
    add_action( 'woocommerce_after_add_to_cart_quantity', 'woocommerce_single_variation', 10 );
}
add_action( 'woocommerce_before_add_to_cart_form', 'move_variation_price' );

由于在woocommerce 3.0中添加了添加到购物车数量后的woocommerce\uhook,以便在woocommerce 2.6中使用上述代码。x、 您需要覆盖单个产品/添加到购物车/变体添加到购物车按钮。php模板,将其保存到主题的woocommerce文件夹中,然后添加到动作挂钩中。见下文:

<?php
/**
 * Single variation cart button
 *
 * @see     https://docs.woocommerce.com/document/template-structure/
 * @author  WooThemes
 * @package WooCommerce/Templates
 * @version 2.5.0
 */
if ( ! defined( 'ABSPATH' ) ) {
    exit;
}

global $product;
?>
<div class="woocommerce-variation-add-to-cart variations_button">
    <?php if ( ! $product->is_sold_individually() ) : ?>
        <?php woocommerce_quantity_input( array( 'input_value' => isset( $_POST['quantity'] ) ? wc_stock_amount( $_POST['quantity'] ) : 1 ) ); ?>
    <?php endif; ?>
    
    <?php do_action( 'woocommerce_after_add_to_cart_quantity' ); ?>
    
    <button type="submit" class="single_add_to_cart_button button alt"><?php echo esc_html( $product->single_add_to_cart_text() ); ?></button>
    <input type="hidden" name="add-to-cart" value="<?php echo absint( $product->id ); ?>" />
    <input type="hidden" name="product_id" value="<?php echo absint( $product->id ); ?>" />
    <input type="hidden" name="variation_id" class="variation_id" value="0" />
</div>
何玉韵
2023-03-14

javascript文件woocommerce/assets/js/frontend/addtocart变体。js负责显示可变产品价格,基本上使用$('form')。查找(“.单变量”)更新价格,因此如果。单变量在表单之外,它将不起作用。

所以像这样的事情是行不通的:

function move_variation_price() {
    remove_action( 'woocommerce_single_variation', 'woocommerce_single_variation', 10 );
    add_action( 'woocommerce_single_product_summary', 'woocommerce_single_variation', 5 );
}
add_action( 'woocommerce_before_add_to_cart_form', 'move_variation_price' );

也就是说,如果你想在你的产品上使用它,最好的选择是使用woocommerce\u before\u variations\u表单hook。

woocommerce\u single\u variationhook也会显示“添加到购物车”按钮,因此您必须使用CSS隐藏该按钮:

form.variations_form.cart .single_variation_wrap:nth-child(1) .quantity {
    display: none !important; /* important is necessary */
}
form.variations_form.cart .single_variation_wrap:nth-child(1) button {
    display: none;
}

我知道很痛。但这是唯一的办法。

好的,我对方法1很生气,想出了这个新方法,它不需要对PHP进行任何更改,只需要Javascript和CSS。

Javascript,它将检查可变产品价格是否更改,并使用新值更新实际价格div。这个新的价格分区可以是任何地方,而不仅仅是表单内部。

Javascript:

// Update price according to variable price
if (jQuery('form.variations_form').length !== 0) {
    var form = jQuery('form.variations_form');
    var variable_product_price = '';
    setInterval(function() {
        if (jQuery('.single_variation_wrap span.price span.amount').length !== 0) {
            if (jQuery('.single_variation_wrap span.price span.amount').text() !== variable_product_price) {
                variable_product_price = jQuery('.single_variation_wrap span.price span.amount').text();
                jQuery('.single-product-summary p.price span.amount').text(variable_product_price);
            }
        }
    }, 500);
}

CSS:

.single_variation_wrap .price {
    display: none;
}

 类似资料:
  • 问题内容: 我想做的是,某个类别产品的整体价格变化。我们从供应商那里收到建议的零售价格,但有时这些价格对我们不起作用。因此,我们需要考虑产品的成本价格,例如,将20%添加到产品中。.足够容易的成本=成本+ 0.2 *成本。现在,我需要对所选类别中的所有产品执行此操作,因此这就是我到目前为止所拥有的… 现在,我需要使用原始SQL,因为我的php服务器无法处理所有magento产品的加载和保存(Mag

  • 动态gas价格与限价 在使用智能合约时,你可能需要根据调用函数指定不同的gas价格和最大值。你可以通过为智能合约封装包创建自己的ContractGasProvider来实现这一点。 每一个生成的封装包都包含作为常量的所有智能合约方法名称,这有助于通过switch来进行编译时间匹配。 例如,使用Greeter合约: Greeter greeter = new Greeter(...); greete

  • 在我们的woocommerce网站上,我试图根据客户从下拉菜单中选择的变化来更新显示的价格,如下所示: 我使用了LoictheAztec在另一个答案中提交的php函数: 用WooCommerce 3中选择的Variable Price替换Variable Price range 但是,当选择一个变体时,它会在FROM:$PRICE下面显示未定义,如下所示: 未定义错误示例: 因此,如果有人能帮助我

  • 我正在使用这个我在网上找到的脚本,在Woocommerce/WordPress中删除价格范围,只显示可变产品的最低价格,语法如下:From us$xxxx 当变量产品只有一个变体时,我希望脚本做同样的事情。有一个自动的cron(bash+SQL脚本)可以删除不可用的产品。有时,它只留下一个变化的产品,并列出一个价格说明“从XXX美元”的变化看起来是不恰当的,因为只有一个单一的变化)。 如何添加一个

  • 问题内容: 假设您有一个类似的表(使用SQL Server 2008,没有审核日志-表很大): 假设此表非常庞大(数百万行用于不同的secID和Date)-价格更改后,我想返回记录(寻找比使用游标和迭代更好的东西): 我正在尝试弄清楚如何获得: 即另一种查看方式是我正在寻找价格保持不变的日期范围。 问题答案: 这是一个“孤岛”问题。

  • 问题内容: 我有以下代码,其中包含可变的Person类,String和修改String和Person实例的方法 -- The output is as expected. It prints 现在,我的问题是 您说的地方str =” foo”发生了什么事? 最初,假设s =’bar’并且数据驻留在0x100内存中 现在,字符串的引用传递给另一个方法,另一个方法尝试使用s =” foo”将内存位置(