我在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 );
我在什么地方出错了吗?
我想我找到了一个非常简单的解决办法。当变体的选择发生变化时,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;
}
这会将变动价格移动到数量下方,刚好在“添加到购物车”按钮上方。您可能需要根据需要应用一些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\u
hook,以便在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>
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 variation
hook也会显示“添加到购物车”按钮,因此您必须使用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”将内存位置(