【问题标题】:Need custom Pricing for woocommerce shop page products from functions.php需要来自functions.php的woocommerce商店页面产品的自定义定价
【发布时间】:2014-10-31 20:50:08
【问题描述】:

我想从functions.php 获得自定义定价。对于 woocommerce 商店页面,我希望输出如下。 我创建了一个自定义分类(团队),我正在从后端应用自定义价格。

例如:

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

谢谢, 萨提亚

【问题讨论】:

  • 您已经告诉我们您想要什么以及您在做什么,但没有告诉我们您遇到了什么问题。这里的实际问题是什么?
  • 我没有使用上面的代码获得示例输出。如果我的代码有任何变化。请告诉我。
  • 是的,我也不明白这个问题。您想根据分类更改价格吗?
  • 我之前必须为我建立的批发订购网站解决这个问题,该网站涉及基于不同客户订购的最终包装和加工需求的某些产品的不同价格。喜欢以后完整的答案。快速信息:我通过添加一个新的产品元价格字段来做到这一点,使用 Groups 插件为需要不同价格的每个产品填写它,然后确保在所有模板中显示正确的价格并正确添加到购物车。
  • @helgatheviking 我刚刚根据一些论坛定制了一些代码。 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): return 160; else return $price;} 它不适用于具有不同价格的不同产品的商店页面。

标签: php wordpress woocommerce


【解决方案1】:

一旦我纠正了您的解析错误,您评论中的代码就会起作用。

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() 功能都不会知道使用正确的价格,因为会有无法根据术语来辨别它应该使用哪个价格(因为产品是两种术语)。

如果您想向不同的用户组显示不同的价格,那么您需要一个自定义用户功能并使用它来检查当前用户何时有该上限。例如:current_user_can('team-b')

【讨论】:

  • 感谢您的回复。该代码仅提供商店页面的最后一次产品更新。在这里,我为产品 ID 的 14、16、17 等分配了定价。对于产品 14=$200、16=$800、$17=$700 等。但是,您的修改只给出了最后一个产品价格变化。
  • 我用你的代码为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( 'A-Team', 'team', $productd->id ) ): $wst_team_price = get_post_meta($productd->id, 'tax_32', true); $price = $wst_team_price; endif; return $price; }
  • @sphanley 我在这里可能更清楚Click here
  • 你为什么创建一个新问题而不是编辑这个问题?另外,我不明白您所说的“代码仅针对商店页面提供最后一次产品更新”是什么意思。你使用了我的代码,但结果如何?
  • 根据您给定的解决方案。在“team1”中有 5 种价格不同的产品。直接将returns 160; 应用到第 5 个产品。例如,我刚刚给出了 160。它将根据产品-> id 和分类术语(例如:team1)而改变。我以商店页面为例。我们正在获取那些分类术语产品(team1 产品)。在存档页面中。希望这次我清楚这一点。如果我不清楚,请告诉我。感谢您的考虑。
猜你喜欢
  • 2014-12-27
  • 2020-11-17
  • 2015-04-13
  • 1970-01-01
  • 2018-12-17
  • 2016-09-21
  • 2019-05-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多