Как получить текущие данные об изменениях в хуке raw_woocommerce_price?

Я хотел бы получить текущие данные о вариациях в хуке 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 );

Как я могу этого достичь?

Спасибо

2

Решение

используйте этот код, если продукт в порядке, используйте вашу собственную логику, например:

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

Другие решения

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

}
0

По вопросам рекламы [email protected]