wc_price($price) 未按 FILTER "woocommerce_product_get_regular_price" 显示折扣
wc_price($price) not showing the discount by FILTER "woocommerce_product_get_regular_price"
使用 WooCommerce,我有以下功能可以让我的产品价格打折:
add_filter('woocommerce_product_get_regular_price', 'custom_price' , 99, 2 );
function custom_price( $price, $product )
{
$price = $price - 2;
return $price
}
这在任何地方都有效(在商店、购物车、后端),但在我的自定义产品列表插件中无效:
add_action( 'woocommerce_account_nybeorderlist_endpoint', 'patrickorderlist_my_account_endpoint_content' );
function patrickorderlist_my_account_endpoint_content() {
//All WP_Query
echo wc_price($price);
}
这里显示的是没有折扣的正常价格。两段代码都在同一个插件中。
关于信息,wc_price()
只是一个用于格式化价格的格式化函数,与$price
本身的主要参数无关。你的问题是在你的第二个函数中,变量 $price
当然不使用 WC_Product
方法 get_regular_price()
,这在你的情况下是必需的......所以在你的 WP_Query 循环中,您需要获取 WC_Product 对象实例,然后使用方法 get_regular_price()
...
从该对象获取价格
所以试试 (这是一个例子,因为你没有在你的问题中提供你的 WP_Query
):
add_action( 'woocommerce_account_nybeorderlist_endpoint', 'rm_orderlist_my_account_endpoint_content' );
function rm_orderlist_my_account_endpoint_content() {
$products = new WP_Query( $args ); // $args variable is your arguments array for this query
if ( $products->have_posts() ) :
while ( $products->have_posts() ) : $products->the_post();
// Get the WC_Product Object instance
$product = wc_get_product( get_the_id() );
// Get the regular price from the WC_Product Object
$price = $product->get_regular_price();
// Output the product formatted price
echo wc_price($price);
endwhile;
wp_reset_postdata();
endif;
}
现在它应该可以正常工作了。
使用 WooCommerce,我有以下功能可以让我的产品价格打折:
add_filter('woocommerce_product_get_regular_price', 'custom_price' , 99, 2 );
function custom_price( $price, $product )
{
$price = $price - 2;
return $price
}
这在任何地方都有效(在商店、购物车、后端),但在我的自定义产品列表插件中无效:
add_action( 'woocommerce_account_nybeorderlist_endpoint', 'patrickorderlist_my_account_endpoint_content' );
function patrickorderlist_my_account_endpoint_content() {
//All WP_Query
echo wc_price($price);
}
这里显示的是没有折扣的正常价格。两段代码都在同一个插件中。
关于信息,wc_price()
只是一个用于格式化价格的格式化函数,与$price
本身的主要参数无关。你的问题是在你的第二个函数中,变量 $price
当然不使用 WC_Product
方法 get_regular_price()
,这在你的情况下是必需的......所以在你的 WP_Query 循环中,您需要获取 WC_Product 对象实例,然后使用方法 get_regular_price()
...
所以试试 (这是一个例子,因为你没有在你的问题中提供你的 WP_Query
):
add_action( 'woocommerce_account_nybeorderlist_endpoint', 'rm_orderlist_my_account_endpoint_content' );
function rm_orderlist_my_account_endpoint_content() {
$products = new WP_Query( $args ); // $args variable is your arguments array for this query
if ( $products->have_posts() ) :
while ( $products->have_posts() ) : $products->the_post();
// Get the WC_Product Object instance
$product = wc_get_product( get_the_id() );
// Get the regular price from the WC_Product Object
$price = $product->get_regular_price();
// Output the product formatted price
echo wc_price($price);
endwhile;
wp_reset_postdata();
endif;
}
现在它应该可以正常工作了。