Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/241.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 在简单产品中显示前缀价格和附加单价_Php_Wordpress_Woocommerce_Product_Price - Fatal编程技术网

Php 在简单产品中显示前缀价格和附加单价

Php 在简单产品中显示前缀价格和附加单价,php,wordpress,woocommerce,product,price,Php,Wordpress,Woocommerce,Product,Price,使用Woocommerce,我每盒销售6瓶葡萄酒。 因此,在设置产品时,我自然会输入每个盒子的价格。 不过,我确实希望用户也能看到每瓶的价格 每盒$120 每瓶20美元 我试着使用应答码。它完全符合我的要求,只是去掉了原价(每盒) 下面编辑的代码段显示原始$price和单价$price以及组/单位指示器(对于简单产品): add_filter('woocommerce_get_price_html','unit_product_price_on_archives',10,2); 功能单元产品价格

使用Woocommerce,我每盒销售6瓶葡萄酒。 因此,在设置产品时,我自然会输入每个盒子的价格。 不过,我确实希望用户也能看到每瓶的价格

每盒$120

每瓶20美元

我试着使用应答码。它完全符合我的要求,只是去掉了原价(每盒)

下面编辑的代码段显示原始$price和单价$price以及组/单位指示器(对于简单产品):

add_filter('woocommerce_get_price_html','unit_product_price_on_archives',10,2);
功能单元产品价格档案($price,$product){
if(is_product()| | is_product_category()| | is_product_tag()){
$unit_divider=6;
$group_后缀=“”.uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu;
$unit_后缀=“”.uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu;
如果($product->正在销售())
{
$regular\u price\u unit=$product->get\u regular\u price()/$unit\u divider;
$regular_price_unit=wc_get_price_to_display($product,array('price'=>$regular_price_unit));
$regular\u price\u group=$product->get\u regular\u price();
$regular_price_group=wc_get_price_to_display($product,array('price'=>$regular_price_group));
$group_price_sale=$product->get_sale_price();
$group_price_sale=wc_get_price_to_display($product,array('price'=>$group_price_sale));
$group_price_sale=wc_格式_sale_价格($group_price_group,$group_price_sale)。$group_后缀;
$unit\u price\u sale=$product->get\u sale\u price()/$unit\u divider;
$unit_price_sale=wc_get_price_to_display($product,array('price'=>$unit_price_sale));
$unit\u price\u sale=wc\u格式\u sale\u价格($regular\u price\u unit,$unit\u price\u sale)。$unit\u后缀;
$price=$group\u price\u sale.“
”。$unit\u price\u sale; } 其他的 { $group_价格=$price; $group_价格=$group_价格。$group_后缀; $unit\u price=$product->get\u price()/$unit\u divider; $unit_price=wc_get_price_to_display($product,array('price'=>$unit_price)); $unit_price=$price=wc_price($unit_price)。$unit_后缀; $price=$group\u price.“
”.$unit\u price; } } 返回$price; }
然而,我只为标准产品提供常规价格或销售价格


我没有将其扩展到分组或可变产品。

有几种方法可以实现这一点。当您通过更改这两行将新价格附加到原始字符串后,上面发布的可能会起作用

$price = $group_price_sale . '<br>' . $unit_price_sale;
$price = $group_price . '<br>' . $unit_price;
或者,如果您想在单个产品页面上显示每瓶的价格,您可以使用此代码(我将其用于每升的价格信息):

函数so1664798\u添加\u瓶子\u价格(){
全球$产品;
$price=$product->get_price();
$price_/瓶=$price/6;
回显“”。数字格式((浮动)$price_/瓶,2,wc_get_price_decimal_分隔符(),“”)。get_woocommerce_currency_symbol()。/。uuu('瓶子','txtdomain'),';
}
添加行动(“woocommerce\u single\u product\u summary',“so1664798\u add\u bottle\u price\u summary”,10);

最后一个选项是最安全的,如果您想避免在其他几个地方(结账、购物车等)显示您的瓶子价格,但只想在产品页面显示它。

我重新查看了代码并简化了它(仅适用于单个产品):

add_filter('woocommerce_get_price_html','custom_product_price_html',10,2);
函数自定义\产品\价格\ html($price,$product){
//仅适用于简单产品
如果($product->is_type('simple')){
$unit_divider=6;
$suffix_box=''。uuu('(每框)'woocommerce');
$suffix_unit=''。uuuu('(每瓶)'woocommerce');
$active_price_unit=wc_get_price_to_display($product,array('price'=>($product->get_price()/$unit_divider)));
如果($product->正在销售())
{
$product_price_unit=wc_get_price_to_display($product,数组('price'=>($product->get_regular_price()/$unit_divider));
$formatted_price_unit=wc_format_sale_price($常规_price_unit,$active_price_unit);
$price.=$suffix_-box.$formatted_-price_-unit.$suffix_-unit.';
}
其他的
{
$price.=$suffix_-box.'
'.wc_-price($active_-price_-unit)。$suffix_-unit.''; } } 返回$price; }
代码进入活动子主题(或主题)的function.php文件。测试和工作


相关的:


欢迎对以下答案进行反馈。
$price = $group_price_sale . '<br>' . $unit_price_sale;
$price = $group_price . '<br>' . $unit_price;
$price .= $group_price_sale . '<br>' . $unit_price_sale;
$price .= $group_price . '<br>' . $unit_price;
function so1664798_add_bottle_price_suffix( $html, $product, $price, $qty ){
  $bottleprice = $price / 6;
  $html .= ' ('.$bottleprice .' per bottle)';
  return $html;
}
add_filter( 'woocommerce_get_price_suffix', 'so1664798_add_bottle_price_suffix', 99, 4 );
function so1664798_add_bottle_price() {
    global $product;
    $price = $product->get_price();
    $price_per_bottle = $price / 6;
    echo '<span class="price-unit smaller">'.number_format((float)$price_per_bottle, 2, wc_get_price_decimal_separator(), '').get_woocommerce_currency_symbol().' / '.__('Bottle','txtdomain').',&nbsp;</span>';
}
add_action('woocommerce_single_product_summary','so1664798_add_bottle_price_summary',10);
add_filter( 'woocommerce_get_price_html', 'custom_product_price_html', 10, 2 );
function custom_product_price_html( $price, $product ) {
    // For simple products only
    if ( $product->is_type('simple') ) {

        $unit_divider = 6;
        $suffix_box   = ' '. __('(per box)', 'woocommerce');
        $suffix_unit  = ' '. __('(per bottle)', 'woocommerce');

        $active_price_unit  = wc_get_price_to_display( $product, array( 'price' => ( $product->get_price() / $unit_divider ) ) );

        if($product->is_on_sale() )
        {
            $regular_price_unit   = wc_get_price_to_display( $product, array( 'price' => ( $product->get_regular_price() / $unit_divider ) ) );
            $formatted_price_unit = wc_format_sale_price( $regular_price_unit, $active_price_unit );

            $price .= $suffix_box . '<br><span class="unit-price">' . $formatted_price_unit . $suffix_unit . '</span>';
        }
        else
        {
            $price .= $suffix_box . '<br><span class="unit-price">' . wc_price($active_price_unit) . $suffix_unit . '</span>';
        }
    }
    return $price;
}