2014-10-31 105 views
0

我已经使用下面的代码来改变价格从functions.php。即使在购物车页面上,它也在为单一产品工作。我如何使用具有不同定价的不同产品的代码?那可能吗?Woocommerce多个产品与定制的价格从函数.php

'团队'是一个分类学,'A-team','B-team'是条款。我将产品分配给'A队'和'B队'。

例如:

对于 'A-队':PRODUCT_ID 14 = $ 200 15 = $ 600 17 = $ 800元; 'B-Team':product_id 14 = 100美元,15 = 300美元,17美元= 400美元;

原价:product_id 14 = 55美元,15 = 44美元,17美元= 88美元;

在分类学档案页:

如果 'A-队' 归档产品应该显示

[PRODUCT_ID 14 = $ 200 15 = $ 600 17 = $ 800元;]

如果' B-队”归档产品应该显示

[PRODUCT_ID 14 = $ 100 15 = $ 300 17 = $ 400;]

我的代码:

function change_price($price, $productd){ 
    if($productd->id == 16): 
     return 160; 
    else: 
     return $price; 
    endif; 

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); 

在此先感谢。

+0

可能重复[需要从functions.php的woocommerce店铺页面定制产品定价](http://stackoverflow.com/questions/26653946/need-custom-pricing -for-woocommerce-shop-page-products-from-functions-php) – helgatheviking 2014-10-31 12:50:29

+0

这不起作用。我改变了代码的方式,问题解决了。即使代码也在add_to_cart()中工作。现在我得到了不同团队的不同定制定价(分类术语)。无论如何感谢您的支持。 – 2014-11-03 06:21:49

+0

请至少在您的线索上发布您的答案,以便下一个具有相同问题的人可以找到它。 – helgatheviking 2014-11-03 10:08:38

回答

0

我改变了我的代码,如下所示。它为我工作。希望这可能有助于其他有问题的其他人。

`add_filter('woocommerce_get_price', function ($price, $productd) { 
     if($team_id) : 
      return get_post_meta($productd->id, 'tax_'.$team_id , true); 
     else: 
      return $price; 
     endif; 

    }, 10, 2);` 

即使在'Add-to-cart'功能也没有问题。

感谢, 萨蒂亚

+0

我不是WordPress的匿名函数的粉丝。但我很好奇,'$ team_id'是如何定义的?根据你提供的代码,你总是应该返回'$ price',而不是改变,因为'$ team_id'永远不会是真的。 – helgatheviking 2014-11-04 12:14:17

+0

为了清楚理解目的,我给了$ team_id。我使用会话动态获取价值。例如:在分类归档页面中,我们有一个分类标识。我给了一个自定义字段并用'tax_'保存。我的定制价格为每个产品的。使用get_post_meta函数,我在这里调用这个值。它为我工作。 – 2014-11-04 12:28:32

+0

好的。我只是指出未来的访问者,这个代码(现在)只会返回未经调整的价格。 – helgatheviking 2014-11-04 17:47:39

0

谢谢萨蒂亚和helgatheviking。我为其设定货币(美元或欧元)的用户创建了自定义字段。我为每个产品创建了两个自定义字段:“_price_usd”“_price_euro”,每个字段都包含产品的美元价格和欧元的欧洲价格。使用匿名函数解决了一些问题。现在我只需要根据用户的货币输入正确的后缀或前缀。这是我适应您的代码的版本:

add_filter('woocommerce_get_price', function ($price, $productd) { 
     $logged_in_user_id = get_current_user_id(); 
     $user_currency = get_user_meta($logged_in_user_id, 'usd_euro', true); 
     $new_price = strtolower("_price_".$user_currency); 
     return get_post_meta($productd->id, $new_price, true); 

    }, 10, 2); 
相关问题