更改 WooCommerce 价格显示
Change WooCommerce price display
请允许我提供更多信息,希望对您有所帮助。
目标:
- 自定义商店页面
- 使某些类别的产品不可购买
- 隐藏变量产品的价格范围,价格仅在选中时显示
- 更改商店页面上的价格显示(与第 1 点有关,尤其是价格,我创建了一个具有自定义价格值的属性 - 'pa_harga')
已完成:
---第1点的代码---
add_action('woocommerce_loop_add_to_cart_link','displaying_product_attributes',5);
function displaying_product_attributes () {
global $product;
$tipe_iklan_val = $product->get_attribute('pa_tipe-iklan');
$title_val = $product->get_title();
$harga_val = $product->get_attribute('pa_harga');
$harga2_val = $product->get_price_html();
$kt_val = $product->get_attribute('pa_kt');
$km_val = $product->get_attribute('pa_km');
$luas_bangunan_val = $product->get_attribute('pa_luas-bangunan');
$luas_tanah_val = $product->get_attribute('pa_luas-tanah');
$kelurahan_val = $product->get_attribute('pa_kelurahan');
$area_val = $product->get_attribute('pa_area');
$sku_val = $product->get_sku();
echo "<p style='color:#000; margin-left:5px; text-align:center; font-size:16px; height:24px; border:1px solid transparent; background-color:#e4e4e4; border-radius:5px; width:fit-content; width:-moz-fit-content; font-weight:600;padding-top:3px; padding-left:10px;padding-right:10px; margin-top:5px; letter-spacing:1.1px; box-shadow: 0px 0px 4px 1.5px rgb(0 0 0 / 0.8);'>".str_replace(',',' atau', $product->get_attribute .$tipe_iklan_val)."</p>";
echo "<h2 style='font-size:16px; margin-left:5px;text-overflow: ellipsis;overflow:hidden;white-space:nowrap;'>".$title_val."</h2>";
echo "<p style='color:#1ebf41; text-align:left;margin-left:6px; padding-top:10px; font-size:18px;line-height:0.9; font-weight:bold'>".$harga_val."</p>";
echo "<p style='color:#1ebf41; text-align:left;margin-left:6px; padding-top:10px; font-size:18px;line-height:0.9; font-weight:bold'>".$harga2_val."</p>";
echo "<p style='color:#333; text-align:left;margin-left:7px;font-size:14px;line-height: 0.1;'><i class='fas fa-bed'></i> ".$kt_val." <i class='fas fa-shower'></i> ".$km_val." <i class='fa fa-home'></i> ".$luas_bangunan_val."m<sup>2</sup> <i class='fas fa-expand-arrows-alt'></i> ".$luas_tanah_val."m<sup>2</sup></p>";
echo "<p style='color:#333; text-align:left; margin-left:7px;font-size:14px;line-height: 1;'><i class='fas fa-map-marker-alt'></i> ".$kelurahan_val.", ".$area_val."</p>";
echo "<p style='color:#333; text-align:left;margin-left:7px; font-size:14px;line-height: 0.8;'>ID : ".$sku_val."</p>";
}
查看结果 > Point 1
---点2的代码---
add_filter('woocommerce_is_purchasable','misha_catalog_mode_on_for_category',10, 2 );
function misha_catalog_mode_on_for_category( $is_purchasable, $product {
if( has_term( 'sold', 'product_cat', $product->get_id() ) ) {
return false;
}
return $is_purchasable;
}
add_filter( 'woocommerce_variable_sale_price_html','woocommerce_remove_prices', 10, 2 );
add_filter( 'woocommerce_variable_price_html', 'woocommerce_remove_prices', 10, 2 );
add_filter( 'woocommerce_get_price_html', 'woocommerce_remove_prices', 10, 2 );
function woocommerce_remove_prices( $price, $product ) {
if( is_product_category('sold') || has_term( 'sold', 'product_cat',$product->get_id() ) )
$price = '';
return $price;
}
add_action( 'woocommerce_single_product_summary','unavailable_product_display_message', 20 );
function unavailable_product_display_message() {
global $product;
if(! $product->is_purchasable() ){
echo '<p style="color:#e00000;font-size:20px;font-weight:600; font-family:verdana;">' . __("Unit telah terjual/Disewa.") . '</p>';
echo '<p style="background-color: #fff5ee; padding-top:6px; text-align:center; border: 1px solid transparent; border-radius: 8px; width: 250px; height: 40px; margin-left: 20px;font-size:15px;box-shadow:0px -2px 6px 0px rgb(210 0 1)"><a style="color: black;"href="http://www.wajaraja.com/hubungi-kami/">Tinggalkan pesan di sini</a></p>';
}
}
查看结果 > Point 2
---点3的代码---
//Hide Price Range for WooCommerce Variable Products
add_filter('woocommerce_variable_sale_price_html','lw_variable_product_price', 10, 2 );
add_filter( 'woocommerce_variable_price_html','lw_variable_product_price', 10, 2 );
function lw_variable_product_price( $v_price, $v_product ) {
// Product Price
$prod_prices = array( $v_product->get_variation_price( 'min', true ),
$v_product->get_variation_price( 'max', true ) );
$prod_price = $prod_prices[0]!==$prod_prices[1] ? sprintf(__('Harga terendah : %1$s', 'woocommerce'),
wc_price( $prod_prices[0] ) ) : wc_price( $prod_prices[0] );
// Regular Price
$regular_prices = array( $v_product->get_variation_regular_price( 'min',true ),
$v_product->get_variation_regular_price( 'max', true ) );
sort( $regular_prices );
$regular_price = $regular_prices[0]!==$regular_prices[1] ?
sprintf(__('Harga terendah : %1$s','woocommerce'), wc_price( $regular_prices[0] ) ) : wc_price( $regular_prices[0] );
if ( $prod_price !== $regular_price ) {
$prod_price = '<del>'.$regular_price.$v_product->get_price_suffix() . '</del> <ins>' .
$prod_price . $v_product->get_price_suffix() . '</ins>';
}
return $prod_price;
}
//Hide “From:$X”
add_filter('woocommerce_get_price_html', 'lw_hide_variation_price', 10, 2);
function lw_hide_variation_price( $v_price, $v_product ) {
$v_product_types = array( 'variable');
if ( in_array ( $v_product->product_type, $v_product_types ) && !(is_shop()) ) {
return '';
}
// return regular price
return $v_price;
}
查看结果 > Point 3 - before || Point 3 - After
---第4点的代码---
add_filter( 'woocommerce_get_price_html','rei_woocommerce_price_html', 9999, 2 );
function rei_woocommerce_price_html( $price, $product ) {
$currency = get_woocommerce_currency_symbol( );
$price = $currency . custom_number_format( floatval($product->get_price() ), 0 );
return $price;
}
function custom_number_format( $n, $precision = 0 ) {
if ( $n < 1000 ) {
// Default
$n_format = number_format( $n );
} elseif ( $n < 1000000 ) {
// Thousand
$n_format = number_format( $n / 1000, $precision ) . ' Ribu';
} elseif ( $n < 1000000000 ) {
// Million
$n_format = number_format( $n / 1000000, $precision ) . ' Juta';
} else if ( $n < 1000000000000 ) {
// Billion
$n_format = number_format( $n / 1000000000, $precision ) . ' M';
} else {
// Trillion
$n_format = number_format( $n / 1000000000000, $precision ) . ' T';
}
return $n_format;
}
(看对比,我没有去掉属性product > Top price position建的价格)
注意:代码运行良好。但是我无法设置条件为千(Ribu)、百万(Juta)、M 或 T 时出现多少个数字。
查看结果 > Point 4
我要:
798,500,000 印尼盾 > 798,5 印尼盾
925,799,000 印尼盾 > 925,8 印尼盾
535,000,000 印尼盾 > 535 印尼盾
1,000,000,000 印尼盾 > 1 M 印尼盾
Rp。 1,050,000,000 > Rp 1,05 M
Rp。 2,539,000,000 > 卢比。 2,54 米
所以我做了一点修改,这是代码(如果我错了请纠正我)
---代码点 4 > 修改---
add_filter( 'woocommerce_get_price_html','rei_woocommerce_price_html', 9999, 2 );
if (!is_shop()) return;
function rei_woocommerce_price_html( $price, $product ) {
$currency = get_woocommerce_currency_symbol( );
$price = $currency .' ' .custom_number_format( floatval( $product->get_price() ), 2 );
return $price;
}
$n = 1000000;
function custom_number_format($n) {
$n = (0+str_replace(",","",$n));
if(!is_numeric($n)) return false;
if($n>1000000000000) return round(($n/1000000000000),1).' '.'-T';
else if($n>1000000000) return round(($n/1000000000),2).' '.'M';
else if($n>1000000) return round(($n/1000000),3).' '.'Juta';
else if($n>1000) return round(($n/1000),1).' '.'Ribu';
return number_format($n);
}
$v = custom_number_format($n);
echo $v;
查看结果 > Point 4 - revise
至此我觉得我达到了目标。
但是当我浏览每个产品时,我觉得有些地方不对劲,需要修复。
代码点 2 和 3 无法正常工作。第 4 点和第 4 点修改的附加代码带回了本应隐藏的价格。
这是添加代码点 4 后的样子
查看结果 > Related with point 2 || Related with point 3
请帮助我,以便在不改变现有内容的情况下实现第 4 点的目标。
为您清理了一下,并更换了过滤器:
add_filter( 'woocommerce_get_price_html','rei_woocommerce_price_html', 9999, 2 );
function rei_woocommerce_price_html( $price, $product ) {
$currency = get_woocommerce_currency_symbol( );
$price = $currency . custom_number_format( floatval( $product->get_price() ), 0 );
return $price;
}
function custom_number_format( $n, $precision = 0 ) {
if ( $n < 1000 ) {
// Default
$n_format = number_format( $n );
} elseif ( $n < 1000000 ) {
// Thousand
$n_format = number_format( $n / 1000, $precision ) . ' Ribu';
} elseif ( $n < 1000000000 ) {
// Million
$n_format = number_format( $n / 1000000, $precision ) . ' Juta';
} else if ( $n < 1000000000000 ) {
// Billion
$n_format = number_format( $n / 1000000000, $precision ) . ' M';
} else {
// Trillion
$n_format = number_format( $n / 1000000000000, $precision ) . ' T';
}
return $n_format;
}
请允许我提供更多信息,希望对您有所帮助。
目标:
- 自定义商店页面
- 使某些类别的产品不可购买
- 隐藏变量产品的价格范围,价格仅在选中时显示
- 更改商店页面上的价格显示(与第 1 点有关,尤其是价格,我创建了一个具有自定义价格值的属性 - 'pa_harga')
已完成:
---第1点的代码---
add_action('woocommerce_loop_add_to_cart_link','displaying_product_attributes',5);
function displaying_product_attributes () {
global $product;
$tipe_iklan_val = $product->get_attribute('pa_tipe-iklan');
$title_val = $product->get_title();
$harga_val = $product->get_attribute('pa_harga');
$harga2_val = $product->get_price_html();
$kt_val = $product->get_attribute('pa_kt');
$km_val = $product->get_attribute('pa_km');
$luas_bangunan_val = $product->get_attribute('pa_luas-bangunan');
$luas_tanah_val = $product->get_attribute('pa_luas-tanah');
$kelurahan_val = $product->get_attribute('pa_kelurahan');
$area_val = $product->get_attribute('pa_area');
$sku_val = $product->get_sku();
echo "<p style='color:#000; margin-left:5px; text-align:center; font-size:16px; height:24px; border:1px solid transparent; background-color:#e4e4e4; border-radius:5px; width:fit-content; width:-moz-fit-content; font-weight:600;padding-top:3px; padding-left:10px;padding-right:10px; margin-top:5px; letter-spacing:1.1px; box-shadow: 0px 0px 4px 1.5px rgb(0 0 0 / 0.8);'>".str_replace(',',' atau', $product->get_attribute .$tipe_iklan_val)."</p>";
echo "<h2 style='font-size:16px; margin-left:5px;text-overflow: ellipsis;overflow:hidden;white-space:nowrap;'>".$title_val."</h2>";
echo "<p style='color:#1ebf41; text-align:left;margin-left:6px; padding-top:10px; font-size:18px;line-height:0.9; font-weight:bold'>".$harga_val."</p>";
echo "<p style='color:#1ebf41; text-align:left;margin-left:6px; padding-top:10px; font-size:18px;line-height:0.9; font-weight:bold'>".$harga2_val."</p>";
echo "<p style='color:#333; text-align:left;margin-left:7px;font-size:14px;line-height: 0.1;'><i class='fas fa-bed'></i> ".$kt_val." <i class='fas fa-shower'></i> ".$km_val." <i class='fa fa-home'></i> ".$luas_bangunan_val."m<sup>2</sup> <i class='fas fa-expand-arrows-alt'></i> ".$luas_tanah_val."m<sup>2</sup></p>";
echo "<p style='color:#333; text-align:left; margin-left:7px;font-size:14px;line-height: 1;'><i class='fas fa-map-marker-alt'></i> ".$kelurahan_val.", ".$area_val."</p>";
echo "<p style='color:#333; text-align:left;margin-left:7px; font-size:14px;line-height: 0.8;'>ID : ".$sku_val."</p>";
}
查看结果 > Point 1
---点2的代码---
add_filter('woocommerce_is_purchasable','misha_catalog_mode_on_for_category',10, 2 );
function misha_catalog_mode_on_for_category( $is_purchasable, $product {
if( has_term( 'sold', 'product_cat', $product->get_id() ) ) {
return false;
}
return $is_purchasable;
}
add_filter( 'woocommerce_variable_sale_price_html','woocommerce_remove_prices', 10, 2 );
add_filter( 'woocommerce_variable_price_html', 'woocommerce_remove_prices', 10, 2 );
add_filter( 'woocommerce_get_price_html', 'woocommerce_remove_prices', 10, 2 );
function woocommerce_remove_prices( $price, $product ) {
if( is_product_category('sold') || has_term( 'sold', 'product_cat',$product->get_id() ) )
$price = '';
return $price;
}
add_action( 'woocommerce_single_product_summary','unavailable_product_display_message', 20 );
function unavailable_product_display_message() {
global $product;
if(! $product->is_purchasable() ){
echo '<p style="color:#e00000;font-size:20px;font-weight:600; font-family:verdana;">' . __("Unit telah terjual/Disewa.") . '</p>';
echo '<p style="background-color: #fff5ee; padding-top:6px; text-align:center; border: 1px solid transparent; border-radius: 8px; width: 250px; height: 40px; margin-left: 20px;font-size:15px;box-shadow:0px -2px 6px 0px rgb(210 0 1)"><a style="color: black;"href="http://www.wajaraja.com/hubungi-kami/">Tinggalkan pesan di sini</a></p>';
}
}
查看结果 > Point 2
---点3的代码---
//Hide Price Range for WooCommerce Variable Products
add_filter('woocommerce_variable_sale_price_html','lw_variable_product_price', 10, 2 );
add_filter( 'woocommerce_variable_price_html','lw_variable_product_price', 10, 2 );
function lw_variable_product_price( $v_price, $v_product ) {
// Product Price
$prod_prices = array( $v_product->get_variation_price( 'min', true ),
$v_product->get_variation_price( 'max', true ) );
$prod_price = $prod_prices[0]!==$prod_prices[1] ? sprintf(__('Harga terendah : %1$s', 'woocommerce'),
wc_price( $prod_prices[0] ) ) : wc_price( $prod_prices[0] );
// Regular Price
$regular_prices = array( $v_product->get_variation_regular_price( 'min',true ),
$v_product->get_variation_regular_price( 'max', true ) );
sort( $regular_prices );
$regular_price = $regular_prices[0]!==$regular_prices[1] ?
sprintf(__('Harga terendah : %1$s','woocommerce'), wc_price( $regular_prices[0] ) ) : wc_price( $regular_prices[0] );
if ( $prod_price !== $regular_price ) {
$prod_price = '<del>'.$regular_price.$v_product->get_price_suffix() . '</del> <ins>' .
$prod_price . $v_product->get_price_suffix() . '</ins>';
}
return $prod_price;
}
//Hide “From:$X”
add_filter('woocommerce_get_price_html', 'lw_hide_variation_price', 10, 2);
function lw_hide_variation_price( $v_price, $v_product ) {
$v_product_types = array( 'variable');
if ( in_array ( $v_product->product_type, $v_product_types ) && !(is_shop()) ) {
return '';
}
// return regular price
return $v_price;
}
查看结果 > Point 3 - before || Point 3 - After
---第4点的代码---
add_filter( 'woocommerce_get_price_html','rei_woocommerce_price_html', 9999, 2 );
function rei_woocommerce_price_html( $price, $product ) {
$currency = get_woocommerce_currency_symbol( );
$price = $currency . custom_number_format( floatval($product->get_price() ), 0 );
return $price;
}
function custom_number_format( $n, $precision = 0 ) {
if ( $n < 1000 ) {
// Default
$n_format = number_format( $n );
} elseif ( $n < 1000000 ) {
// Thousand
$n_format = number_format( $n / 1000, $precision ) . ' Ribu';
} elseif ( $n < 1000000000 ) {
// Million
$n_format = number_format( $n / 1000000, $precision ) . ' Juta';
} else if ( $n < 1000000000000 ) {
// Billion
$n_format = number_format( $n / 1000000000, $precision ) . ' M';
} else {
// Trillion
$n_format = number_format( $n / 1000000000000, $precision ) . ' T';
}
return $n_format;
}
(看对比,我没有去掉属性product > Top price position建的价格)
注意:代码运行良好。但是我无法设置条件为千(Ribu)、百万(Juta)、M 或 T 时出现多少个数字。
查看结果 > Point 4
我要:
798,500,000 印尼盾 > 798,5 印尼盾
925,799,000 印尼盾 > 925,8 印尼盾
535,000,000 印尼盾 > 535 印尼盾
1,000,000,000 印尼盾 > 1 M 印尼盾
Rp。 1,050,000,000 > Rp 1,05 M
Rp。 2,539,000,000 > 卢比。 2,54 米
所以我做了一点修改,这是代码(如果我错了请纠正我)
---代码点 4 > 修改---
add_filter( 'woocommerce_get_price_html','rei_woocommerce_price_html', 9999, 2 );
if (!is_shop()) return;
function rei_woocommerce_price_html( $price, $product ) {
$currency = get_woocommerce_currency_symbol( );
$price = $currency .' ' .custom_number_format( floatval( $product->get_price() ), 2 );
return $price;
}
$n = 1000000;
function custom_number_format($n) {
$n = (0+str_replace(",","",$n));
if(!is_numeric($n)) return false;
if($n>1000000000000) return round(($n/1000000000000),1).' '.'-T';
else if($n>1000000000) return round(($n/1000000000),2).' '.'M';
else if($n>1000000) return round(($n/1000000),3).' '.'Juta';
else if($n>1000) return round(($n/1000),1).' '.'Ribu';
return number_format($n);
}
$v = custom_number_format($n);
echo $v;
查看结果 > Point 4 - revise
至此我觉得我达到了目标。
但是当我浏览每个产品时,我觉得有些地方不对劲,需要修复。
代码点 2 和 3 无法正常工作。第 4 点和第 4 点修改的附加代码带回了本应隐藏的价格。
这是添加代码点 4 后的样子
查看结果 > Related with point 2 || Related with point 3
请帮助我,以便在不改变现有内容的情况下实现第 4 点的目标。
为您清理了一下,并更换了过滤器:
add_filter( 'woocommerce_get_price_html','rei_woocommerce_price_html', 9999, 2 );
function rei_woocommerce_price_html( $price, $product ) {
$currency = get_woocommerce_currency_symbol( );
$price = $currency . custom_number_format( floatval( $product->get_price() ), 0 );
return $price;
}
function custom_number_format( $n, $precision = 0 ) {
if ( $n < 1000 ) {
// Default
$n_format = number_format( $n );
} elseif ( $n < 1000000 ) {
// Thousand
$n_format = number_format( $n / 1000, $precision ) . ' Ribu';
} elseif ( $n < 1000000000 ) {
// Million
$n_format = number_format( $n / 1000000, $precision ) . ' Juta';
} else if ( $n < 1000000000000 ) {
// Billion
$n_format = number_format( $n / 1000000000, $precision ) . ' M';
} else {
// Trillion
$n_format = number_format( $n / 1000000000000, $precision ) . ' T';
}
return $n_format;
}