wordpress 如何在raw_woocommerce_price钩子中获取当前的变化数据?

8ljdwjyq  于 2022-11-22  发布在  WordPress
关注(0)|答案(2)|浏览(119)

我想在raw_woocommerce_price钩子中获取当前的变化数据。

function filter_raw_woocommerce_price( $price_1 ) {
    global $product;

    // Some custom code to change price by variation factor
    $variation_id = product->Something_I_Need_To_Know_To_Get_Current_Variation();

    // bla bla bla
    $factor = PutSomeCustomCalculationHere($variation_id);
    $price_1 = $price_1 * $factor;

    return $price_1;
};

add_filter( 'raw_woocommerce_price', 'filter_raw_woocommerce_price', 10, 1 );

我怎么才能做到呢?
谢谢你

oalqel3c

oalqel3c1#

使用此代码,如果产品正常,则键入以下自定义逻辑:

add_filter( 'raw_woocommerce_price', array( $this, 'asdfasdadf' ) );
function asdfasdadf($price){
    global $product;
    // check if that is var product
    if( ! $product->is_type( 'variable' ) ) return $price;
    // get variable data!
    var_dump( $product->get_attributes() ); exit;
}
3hvapo4f

3hvapo4f2#

“raw_woocommerce_price”不是我需要的钩子。
用这些钩子来代替是要走的路。
为什么?因为这些钩子有产品的示例作为第二个参数。在那里,它得到了我需要进一步得到的所有信息。

add_filter('woocommerce_get_price', 'return_custom_price', $product, 10, 2 );
add_filter('woocommerce_get_regular_price', 'return_custom_price', 10, 2 );
add_filter('woocommerce_get_sale_price', 'return_custom_price', 10, 2 );
function return_custom_price($price, $product) {
    global $post, $woocommerce;

    if( ! $product->product_type == 'variable'  ) return $price;

    switch (@$product->variation_data['attribute_pa_support']) {
        case "pdf" :
            return ($price * 0.5);
        break;
    }

    return $price;

}

相关问题