【问题标题】:How to get current variation data inside raw_woocommerce_price hook?如何在 raw_woocommerce_price 挂钩中获取当前变化数据?
【发布时间】:2016-05-02 13:43:02
【问题描述】:

我想在 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 );

我怎样才能做到这一点?

谢谢

【问题讨论】:

    标签: php wordpress woocommerce variation


    【解决方案1】:

    使用此代码,如果产品没问题,请使用您的自定义逻辑,如下所示:

    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;
    }
    

    【讨论】:

    • 感谢您的快速回复。我只有一个没有足够信息的数组,请继续: Array ( [pa_support] => Array ( [name] => pa_support [value] => [position] => 0 [is_visible] => 1 [is_variation] => 1 [is_taxonomy] => 1 ) [pa_difficulte] => Array ( [...] ) ) 我希望在 [pa_support] 中获得当前属性。
    • 你希望在这里得到什么数据,你能说得更具体些吗?
    【解决方案2】:

    '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;
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-16
      • 2021-03-13
      • 2023-04-05
      • 1970-01-01
      相关资源
      最近更新 更多