在Woocommerce单个产品页面中更改并保存产品价格

JPashs

我有此功能,当页面加载时会触发。它检查帖子类型为“产品”,在这种情况下,我需要更改产品价格并保存页面。

我工作正常,但我需要知道如何设置新产品的价格。

function changeAndSave( $array ) { 

    $post_type = get_post_type();
    if ($post_type == "product"){

        /*GET THE PRODUCT*/
        global $product;
        $product_id=$product->id;

        /*GET CURRENT PRICE*/
        $currentPrice=$product->get_price_html();

        /*SET NEW PRICE*/
        /* HERE.... ¿¿ how do I set my new price */
        $newPrice = 100€;

        /*SAVE THE PRODUCT*/    
        $product = wc_get_product($product_id);
        $product->save();
    }
}; 

// add the action 
add_action( 'loop_start', 'changeAndSave', 10, 1 ); 

更新:我试过了,但是没有用:

function changeAndSave( $array ) { 

    $post_type = get_post_type();
    if ($post_type == "product"){

        /*GET THE PRODUCT*/
        global $product;
        $product_id=$product->id;
        $product = wc_get_product($product_id);

        /*GET CURRENT PRICE*/
        $currentPrice=$product->get_price_html();

        /*SET NEW PRICE*/
        $newRegularPrice = 81;
        $product->set_regular_price($newRegularPrice);

        /*SAVE THE PRODUCT*/    
        $product->save();
    }
}; 

// add the action 
add_action( 'loop_start', 'changeAndSave', 10, 1 ); 
LoicTheAztec

更新

首先,您没有为此使用正确的钩子,因为它需要在页面加载之前被触发。

尝试以下操作(对于简单产品):

add_action( 'template_redirect', 'change_and_save_product_price' );

function change_and_save_product_price() {
    if ( get_post_type() === "product" ){ // or use: is_product()
        // HERE your new product price
        $new_price = 100;

        // Get an instance of the WC_Product Object
        $product = wc_get_product( get_the_id() );

        if ( $product->is_type('simple') ) {
            // Get current price (if needed)
            // $price = $product->get_price();

            // Set the new price
            $product->set_regular_price( $new_price );
            $product->set_price( $new_price );

            // (optionally) reset sale price => uncomment below
            // $product->set_sale_price( false );

            // Save to database refresh refresh caches
            $product->save();
        }
    }
}

代码进入您的活动子主题(或活动主题)的functions.php文件中。经过测试和工作。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

更新WooCommerce产品价格和库存

根据WooCommerce单个产品页面中的尺寸计算价格

如何从WooCommerce中的可变产品中获取产品价格?

在php页面上获取woocommerce产品价格

通过自定义字段在Woocommerce中更改购物车中的产品价格

MySQL查询以更改WooCommerce中的可变产品价格

在Woocommerce 3中获取产品价格

通过WooCommerce 3中的挂钩更改产品价格

在Woocommerce单个产品页面和购物车中有条件地设置特定产品价格

获取要在WooCommerce 3中显示的产品价格

在Woocommerce 3中更新和显示更新的产品价格

在Woocommerce单个产品页面中显示高于产品价格的自定义字段

恢复Woocommerce中特定运输方式的打折产品价格

在WooCommerce单一产品页面上显示总价格,包括原始产品价格*最小数量

从Woocommerce 3中的特定产品标签更改所有产品价格

有条件地更改Woocommerce中的特定产品价格

产品类别的WooCommerce产品价格中的自定义小数

根据woocommerce中的产品价格显示%

Woocommerce中基于产品价格的条件简码

Woocommerce可变产品价格前缀

如何更改woocommerce价格样式,但仅在当前产品的单个产品页面上

如何在以下Woocommerce缺货产品文本中添加单个产品上的Woocommerce产品价格

通过挂钩更改WooCommerce 3+中特定类别的产品价格

根据产品价格在WooCommerce产品页面上显示其他货币

Magento,如何在查看页面中更改产品价格?

可变产品价格未显示在列表和详细信息页面中WooCommerce价格(基于国家)

更改 WooCommerce 单个产品页面中的产品维度顺序

使用 Woocommerce 中的挂钩更新产品价格

使用短代码显示产品价格,包括 WooCommerce 中的可变产品