Php 在WooCommerce中移动变动价格位置
我已经开始用WooCommerce插件在Wordepress中建立一个电子商店 我添加了一些有变化的产品,我注意到价格显示在属性选择字段之后 对于简单的产品,是否可以在标题和简短描述之间移动价格 一种产品的url为: 更新(2019年9月):Php 在WooCommerce中移动变动价格位置,php,wordpress,woocommerce,price,variations,Php,Wordpress,Woocommerce,Price,Variations,我已经开始用WooCommerce插件在Wordepress中建立一个电子商店 我添加了一些有变化的产品,我注意到价格显示在属性选择字段之后 对于简单的产品,是否可以在标题和简短描述之间移动价格 一种产品的url为: 更新(2019年9月): 避免重复可用性(缺陷于2018年解决) 保持其他产品类型不变(2019年) 这是可能的,这是基于我所做的: 在这里,我更新了jQuery代码,以便在为变量产品默认设置变量时将其考虑在内 代码如下: add_action( 'woocommerce
- 避免重复可用性(缺陷于2018年解决)
- 保持其他产品类型不变(2019年)
add_action( 'woocommerce_single_product_summary', 'move_single_product_variable_price_location', 2 );
function move_single_product_variable_price_location() {
global $product;
// Variable product only
if( $product->is_type('variable') ):
// removing the price of variable products
remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_price', 10 );
// Add back the relocated (customized) price of variable products
add_action( 'woocommerce_single_product_summary', 'custom_single_product_variable_prices', 10 );
endif;
}
function custom_single_product_variable_prices(){
global $product;
// Main Price
$prices = array( $product->get_variation_price( 'min', true ), $product->get_variation_price( 'max', true ) );
$price = $prices[0] !== $prices[1] ? sprintf( __( 'From: %1$s', 'woocommerce' ), wc_price( $prices[0] ) ) : wc_price( $prices[0] );
// Sale Price
$prices = array( $product->get_variation_regular_price( 'min', true ), $product->get_variation_regular_price( 'max', true ) );
sort( $prices );
$saleprice = $prices[0] !== $prices[1] ? sprintf( __( 'From: %1$s', 'woocommerce' ), wc_price( $prices[0] ) ) : wc_price( $prices[0] );
if ( $price !== $saleprice && $product->is_on_sale() ) {
$price = '<del>' . $saleprice . $product->get_price_suffix() . '</del> <ins>' . $price . $product->get_price_suffix() . '</ins>';
}
?>
<style>
div.woocommerce-variation-price,
div.woocommerce-variation-availability,
div.hidden-variable-price {
height: 0px !important;
overflow:hidden;
position:relative;
line-height: 0px !important;
font-size: 0% !important;
visibility: hidden !important;
}
</style>
<script>
jQuery(document).ready(function($) {
// When variable price is selected by default
setTimeout( function(){
if( 0 < $('input.variation_id').val() && null != $('input.variation_id').val() ){
if($('p.availability'))
$('p.availability').remove();
$('p.price').html($('div.woocommerce-variation-price > span.price').html()).append('<p class="availability">'+$('div.woocommerce-variation-availability').html()+'</p>');
console.log($('div.woocommerce-variation-availability').html());
}
}, 300 );
// On live variation selection
$('select').blur( function(){
if( 0 < $('input.variation_id').val() && null != $('input.variation_id').val() ){
if($('.price p.availability') || $('.price p.stock') )
$('p.price p').each(function() {
$(this).remove();
});
$('p.price').html($('div.woocommerce-variation-price > span.price').html()).append('<p class="availability">'+$('div.woocommerce-variation-availability').html()+'</p>');
console.log($('input.variation_id').val());
} else {
$('p.price').html($('div.hidden-variable-price').html());
if($('p.availability'))
$('p.availability').remove();
console.log('NULL');
}
});
});
</script>
<?php
echo '<p class="price">'.$price.'</p>
<div class="hidden-variable-price" >'.$price.'</div>';
}
add_action('woocommerce_single_product_summary'、'move_single_product_variable_price_location'、2);
函数移动\单个\产品\变量\价格\位置(){
全球$产品;
//仅可变产品
如果($product->is_类型('variable'):
//消除可变产品的价格
删除行动('woocommerce\u single\u product\u summary'、'woocommerce\u template\u single\u price',10);
//加回可变产品的重新定位(定制)价格
添加行动('woocommerce\u single\u product\u summary','custom\u single\u product\u variable\u prices',10);
endif;
}
函数自定义\单产品\可变\价格(){
全球$产品;
//主要价格
$prices=array($product->get_variation_price('min',true),$product->get_variation_price('max',true));
$price=$prices[0]!=$prices[1]?sprintf('From:%1$s','woocommerce'),wc_prices($prices[0]):wc_prices($prices[0]);
//销售价格
$prices=array($product->get_variation_regular_prices('min',true),$product->get_variation_regular_prices('max',true));
排序(价格);
$saleprice=$prices[0]!=$prices[1]?sprintf('From:%1$s','woocommerce'),wc_prices($prices[0]):wc_prices($prices[0]);
如果($price!=$saleprice&&$product->正在销售()){
$price='.$saleprice.$product->get_price_suffix()。$price.$product->get_price_suffix()。';
}
?>
商业-变化-价格部门,
商业-变化-可用性分部,
部门隐藏-可变价格{
高度:0px!重要;
溢出:隐藏;
位置:相对位置;
线高:0px!重要;
字体大小:0%!重要;
可见性:隐藏!重要;
}
jQuery(文档).ready(函数($){
//默认情况下选择可变价格时
setTimeout(函数(){
如果(0<$('input.variation_id').val()&&null!=$('input.variation_id').val()){
如果($('p.availability'))
$('p.availability').remove();
$('p.price').html($('div.woocommerce-variation-price>span.price').html()).append(''+$('div.woocommerce-variation-availability').html()+'
');
log($('div.woocommerce-variation-availability').html();
}
}, 300 );
//论活变选择
$('select').blur(函数(){
如果(0<$('input.variation_id').val()&&null!=$('input.variation_id').val()){
如果($('price p.availability')| |$('price p.stock'))
$('p.price p')。每个(函数(){
$(this.remove();
});
$('p.price').html($('div.woocommerce-variation-price>span.price').html()).append(''+$('div.woocommerce-variation-availability').html()+'
');
log($('input.variation_id').val());
}否则{
$('p.price').html($('div.hidden-variable-price').html());
如果($('p.availability'))
$('p.availability').remove();
log('NULL');
}
});
});
谢谢LoicTheAztec。它可以工作,但当我选择一个变体时,第二个价格几乎会在添加到购物车之前显示。请告诉我如何删除它?当然,这是产品!@Giorgos我在我的代码中添加了可见性:隐藏!重要;
…请尝试这种方式。它应该可以工作…但仍然有一个类似的bug。Tha非常感谢!它很有效!!!我还删除了价格中的“From”和价格后的未定义删除了代码中的可用性。请问你指的是什么样的错误?