Woocommerce从外部来源更新价格

时间:2017-08-11 05:56:41

标签: php wordpress woocommerce hook-woocommerce

我有从外部数据库更新产品价格的问题。我需要在每次访问此位置时检查产品的价格。为此,我使用 the_post 钩子。例如,我得到了#1718'单品价格。

function chd_the_post_action( $post ) {
    if ( $post && $post->post_type == 'product' ) {
        $product = wc_get_product( $post->ID );  
        if ( $product ) {
            $price = '1718';
            $product->set_price( "$price" );    
            $product->set_regular_price( "$price" );    
            $product->set_sale_price( "$price" );    
            $product->save();
        }
    }
}

此代码更新数据库中的产品价格,但它不会在同一时刻更改页面上的价格视图,但仅在页面重新加载后因为 setup_postdata()设置了帖子和产品变量。 因此我使用woocommerce钩子显示更新价格:

function chd_get_price_filter( $price, $item ) {
    return '1718';
}
add_filter( 'woocommerce_product_get_price', 'chd_get_price_filter', 100, 2 );
add_filter( 'woocommerce_product_get_regular_price', 'chd_get_price_filter', 100, 2 );
add_filter( 'woocommerce_product_get_sale_price', 'chd_get_price_filter', 100, 2 );

有没有可以更好地完成此动作的钩子?

2 个答案:

答案 0 :(得分:0)

使用update_post_meta函数更新产品价格

update_post_meta( $product->id, '_sale_price', '1718' );
update_post_meta( $product->id, '_regular_price', '1718 );

答案 1 :(得分:0)

add_action( 'the_post', 'chd_the_post_action', 9, 1);