我在WooCommerce网站上工作,其中包含大量可变产品和用户角色,这些产品和用户角色会动态影响显示的价格。我需要创建一个片段,我可以将其添加到我的functions.php文件中,仅显示库存商品的可变产品价格范围 - 并且 - 显示价格取决于用户角色规则。
WooCommerce有两个正在运行的默认功能:
1)显示所有变化的价格范围,与库存数量无关。如果某个商品有一些变化"库存"和一些变化"缺货" - 然后商店页面将显示"库存"价格范围是带有删除线的小灰色文本,而正常显示全价格范围。
2)WooCommerces在动态定价方面的默认功能是在用户将商品添加到购物车之前不会显示折扣价。
我尝试了什么: 这个片段对我们来说没问题,直到我们添加了变量产品,其变量都具有相同的价格。
function patricks_custom_variation_price( $price, $product ) {
$target_product_types = array(
'variable'
);
if ( in_array ( $product->product_type, $target_product_types ) ) {
// if variable product return and empty string
return 'Multiple Sizes';
}
// return normal price
return $price;
}
add_filter('woocommerce_get_price_html', 'patricks_custom_variation_price', 10, 2);
CSS没有为我们工作:
.outofstock .price {
display:none
}
是的,我们有"不显示缺货商品"在设置中选中复选框
我需要帮助 这是最有希望的代码片段,可以完成这项工作,但它不会将库存数量考虑在内,也不会考虑用户角色。你能帮我重新安排一下吗?
add_filter( 'woocommerce_variable_sale_price_html', 'wc_wc20_variation_price_format', 10, 2 );
add_filter( 'woocommerce_variable_price_html', 'wc_wc20_variation_price_format', 10, 2 );
function wc_wc20_variation_price_format( $price, $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 ) {
$price = '<del>' . $saleprice . '</del> <ins>' . $price . '</ins>';
}
return $price;
}
我的Crap编码尝试,现在笑
add_filter( 'woocommerce_variable_sale_price_html', 'wc_wc20_variation_price_format', 10, 2 );
add_filter( 'woocommerce_variable_price_html', 'wc_wc20_variation_price_format', 10, 2 );
function wc_wc20_variation_price_format( $price, $product ) {
// Display In Stock prices Only
$stockamount = $product->get_stock_quantity();
$price = $product->get_price_html();
$pricelabel = "";
if($stockamount == 0)
{
echo $pricelabel;
}
else
{
echo $price;
};
// Display Prices For User Role
add_filter('woocommerce_get_price', 'custom_price_WPA111772', 10, 2);
function custom_price_WPA111772($price, $product) {
if (!is_user_logged_in()) return $price;
}
return $price;
}
HELP