我有从外部数据库更新产品价格的问题。我需要在每次访问此位置时检查产品的价格。为此,我使用 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 );
有没有可以更好地完成此动作的钩子?
答案 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);