当前位置: 首页 > 知识库问答 >
问题:

在WooCommerce 3中以编程方式设置产品销售价格

公冶阳德
2023-03-14

我有一个Woocommerce商店,里面有各种各样的产品。

我要给所有产品打八折,属于产品类别Cuckoo

现在我所要做的就是在我的functions.php中设定一个销售价格

它的做法如下:

    /* 
     * For a specific date, 20% off all products with product category as cuckoo clock.
     */
    function cuckoo_minus_twenty($sale_price, $product) { 
        $sale_price = $product->get_price() * 0.8;
        return $sale_price;
    }; 

    // add the action 
    add_filter( 'woocommerce_get_sale_price', 'cuckoo_minus_twenty', 10, 2 ); 

如果我在计算后var_dump$sale_price的结果,我会得到正确的答案,但是前端的价格显示会击出正常价格,并将销售价格显示为正常价格。

是否有一个钩子/过滤器可以用来实现这一点?

我还尝试通过以下方式设定销售价格:

$product->set_sale_price($sale_price); 

无济于事。

共有3个答案

邹嘉荣
2023-03-14

使用woocomerce\u get\u sale\u price过滤器。

add_filter('woocommerce_get_sale_price', 'my_custom_price', 99, 2);
add_filter('woocommerce_get_price', 'my_custom_price', 99, 2);

function my_custom_price( $price, $product )
{
    //your logic for calculating the new price here
     $price = $product->get_regular_price() * 0.8;

    //Return the new price (this is the price that will be used everywhere in the store)
    return $price;
}
乐修远
2023-03-14

我意识到,您或多或少需要以下所有过滤器来使HTML开箱即用。

add_filter( 'woocommerce_product_get_price', 'custom_dynamic_sale_price', 10, 2 );
add_filter( 'woocommerce_product_variation_get_price', 'custom_dynamic_sale_price', 10, 2 );
add_filter( 'woocommerce_product_get_sale_price', 'custom_dynamic_sale_price', 10, 2 );
add_filter( 'woocommerce_product_variation_get_sale_price', 'custom_dynamic_sale_price', 10, 2 );
add_filter( 'woocommerce_variation_prices_price', 'custom_dynamic_sale_price', 10, 2 );
add_filter( 'woocommerce_variation_prices_sale_price', 'custom_dynamic_sale_price', 10, 2 );

如果您想正确显示可变产品的woocommerce_get_variation_prices_hash,您需要确保您已经更改了存储的瞬态。

你可能会发现我为客户创建的要点很有用

https://gist.github.com/xandl/743fb6af60827eb95ad42b20b478b020

宇文航
2023-03-14

自woocommerce 3以来,hookwoocommerce\u get\u sale\u price已被弃用,取而代之的是woocommerce\u product\u get\u sale\u price

此外,还缓存了产品显示的价格。当销售价格处于活动状态时,正常价格也处于活动状态。

试试这个吧:

// Generating dynamically the product "regular price"
add_filter( 'woocommerce_product_get_regular_price', 'custom_dynamic_regular_price', 10, 2 );
add_filter( 'woocommerce_product_variation_get_regular_price', 'custom_dynamic_regular_price', 10, 2 );
function custom_dynamic_regular_price( $regular_price, $product ) {
    if( empty($regular_price) || $regular_price == 0 )
        return $product->get_price();
    else
        return $regular_price;
}


// Generating dynamically the product "sale price"
add_filter( 'woocommerce_product_get_sale_price', 'custom_dynamic_sale_price', 10, 2 );
add_filter( 'woocommerce_product_variation_get_sale_price', 'custom_dynamic_sale_price', 10, 2 );
function custom_dynamic_sale_price( $sale_price, $product ) {
    $rate = 0.8;
    if( empty($sale_price) || $sale_price == 0 )
        return $product->get_regular_price() * $rate;
    else
        return $sale_price;
};

// Displayed formatted regular price + sale price
add_filter( 'woocommerce_get_price_html', 'custom_dynamic_sale_price_html', 20, 2 );
function custom_dynamic_sale_price_html( $price_html, $product ) {
    if( $product->is_type('variable') ) return $price_html;

    $price_html = wc_format_sale_price( wc_get_price_to_display( $product, array( 'price' => $product->get_regular_price() ) ), wc_get_price_to_display(  $product, array( 'price' => $product->get_sale_price() ) ) ) . $product->get_price_suffix();

    return $price_html;
}

代码function.php活动子主题(活动主题)的文件中。

在单个产品、商店、产品类别和标签归档页面上进行测试和工作。

以编程方式设置产品销售价格后,
中的继续项错误

 类似资料:
  • 我有一个产品属性变化,有选项-小-20美元中等-25美元大-30美元 因为商店里的所有产品都有相同的价格。 如何以编程方式设置属性值的价格? 当我将3个属性变体按钮添加为变体时,它们会显示在产品页面上。 如何更改产品的价格时,"小"选项选择编程方式,而不是设置价格的变化选项在管理面板。

  • 在WooCommerce中,我试图找到一种类似于方法或的方法,例如,设置产品类型,如简单或变化。 实际上,我使用的是对象如下: 如果用户选中“简单产品”或“可变产品”,我如何设置产品类型? 任何帮助都很感激。

  • 在购物车中,我添加了一个按钮来创建报价单。我正在使用一个数量范围定价插件,所以我所有的可变产品都有一个广泛的定价范围。 当数量低于100时,产品A的项目成本为5美元。当数量为100到199时,项目成本为3美元。 我的购物车显示正确的项目成本,我设法检索每个购物车项目的产品价格。但是,我无法设置变更价格并将数据添加到订单中。 有人知道我怎么解决这个问题吗? 先谢谢你。

  • 我有大约10个产品和接近200个变体每一个。我需要更新特定产品的销售价格,包括它的所有变化。 问题是: 所有的变种都有不同的价格。未输入销售价格-所有销售价格输入框均为空。 我需要一个SQL解决方案运行和更新所有特定产品的销售价格,采取常规价格并从中扣除350,或 任何其他方式,我不知道在这个阶段,因为我已经尝试了许多解决方案,包括Woocommerce内置的解决方案“设置销售价格”,再次不工作,

  • 我试图在woocommerce中安排保存(发布)帖子时的销售期。 我试过下面两种方法,但都不起作用。代码在正确的时间被调用,只是没有更新post meta。 这两种方法都没有更新销售计划。

  • 我有一个WS,它返回非常基本的产品数据:代码、价格和图像。我需要用这些基本数据以编程方式创建Hybris产品,然后进行同步,以便在店面上看到这些产品。 创建具有这些基本信息的产品的步骤是什么?有OOTB服务吗?