我想从functions.php获得自定义定价。对于woocommerce商店页面,我想要输出如下。 我创建了一个自定义的taxonamy(团队),我正在从后端应用自定义价格。
例如:
1. Taxonomy : Team1
a) Product Id : 17, Price =222; //Original price $45
b) Product Id : 18, Price = 444; // Original price $55
2. Taxonomy : Team2
a) Product Id : 17, Price =999; //Original price $45
b) Product Id : 18, Price = 888; // Original price $55
如何使用以下代码获取我的示例输出?如有任何更改或修改,请告诉我。
我使用以下代码:
add_filter( 'woocommerce_get_regular_price', function ($price, $productd ) {
foreach($_SESSION['my_array'] as $id => $price1) :
$regular_price = get_post_meta(get_the_ID(), '_regular_price');
$price = $regular_price[0];
if(get_the_ID() == $id) :
return $price1;
else :
return $price;
endif;
endforeach;
}, 10, 2 );
谢谢, 萨蒂亚
答案 0 :(得分:0)
一旦我更正了你的解析错误,评论中的代码就可以了。
add_filter('woocommerce_get_price','change_price', 10, 2);
add_filter('woocommerce_get_regular_price','change_price', 10, 2);
add_filter('woocommerce_get_sale_price','change_price', 10, 2);
function change_price($price, $productd){
if($productd->id == 16):
$price = 160;
endif;
return $price;
}
修改为检查某个分类术语中的产品,我们只使用has_term( $term, $taxonomy, $post )
。您需要调整期限和税收滞后。
add_filter('woocommerce_get_price','change_price', 10, 2);
add_filter('woocommerce_get_regular_price','change_price', 10, 2);
add_filter('woocommerce_get_sale_price','change_price', 10, 2);
function change_price($price, $productd){
if( has_term( 'team1', 'teams', $productd->id ) ):
$price = 160;
endif;
return $price;
}
更新
阅读你的新问题,看起来你错了(我仍然可能会误解你)。如果产品1位于两个第1组和第2组,您可以使用is_taxonomy("team-A")
更改分类法页面上的价格,但所有add_to_cart()
功能都不会知道使用正确的价格,因为没有办法根据期限辨别它应该使用哪个价格(因为产品是两个术语)。
如果要向不同的用户组显示不同的价格,那么您需要一个自定义用户功能,并使用它来检查当前用户何时具有该上限.ex:current_user_can('team-b')
。