Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在WooCommerce中移动变动价格位置_Php_Wordpress_Woocommerce_Price_Variations - Fatal编程技术网

Php 在WooCommerce中移动变动价格位置

Php 在WooCommerce中移动变动价格位置,php,wordpress,woocommerce,price,variations,Php,Wordpress,Woocommerce,Price,Variations,我已经开始用WooCommerce插件在Wordepress中建立一个电子商店 我添加了一些有变化的产品,我注意到价格显示在属性选择字段之后 对于简单的产品,是否可以在标题和简短描述之间移动价格 一种产品的url为: 更新(2019年9月): 避免重复可用性(缺陷于2018年解决) 保持其他产品类型不变(2019年) 这是可能的,这是基于我所做的: 在这里,我更新了jQuery代码,以便在为变量产品默认设置变量时将其考虑在内 代码如下: add_action( 'woocommerce

我已经开始用WooCommerce插件在Wordepress中建立一个电子商店

我添加了一些有变化的产品,我注意到价格显示在属性选择字段之后

对于简单的产品,是否可以在标题和简短描述之间移动价格

一种产品的url为:

更新(2019年9月):

  • 避免重复可用性(缺陷于2018年解决)
  • 保持其他产品类型不变(2019年)
这是可能的,这是基于我所做的:

在这里,我更新了jQuery代码,以便在为变量产品默认设置变量时将其考虑在内

代码如下:

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”和价格后的未定义删除了代码中的可用性。请问你指的是什么样的错误?