我有从外部数据库更新产品价格的问题.我需要在每次访问此位置时检查产品的价格.为此,我使用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(); } } }
此代码更新了数据库中的产品价格,但它不会在同一时刻更改页面上的价格视图,而是仅在页面重新加载后,因为post和product变量是由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',2 ); add_filter( 'woocommerce_product_get_sale_price',2 );
有没有可以用更好的方式做这个动作的钩子?