John Davidson

php - WooCommerce get cart information from postmeta

0 comments
Message:


I have written a function that should add discount amounts on the woo cart, depends on product combination and custom fields.
If the action is wp_footer i can see get_post_meta works well.
But if I write action to be woocommerce_cart_calculate_fees seems not to work fine.


Can anyone help me with getting into the right direction? Thanks
Here is my code and screenshot below for it:


add_action('woocommerce_cart_calculate_fees', 'action_woocommerce_cart_calculate_fees2');
function action_woocommerce_cart_calculate_fees2($cart) {
// if ( is_admin() && ! defined( 'DOING_AJAX' ) )
// return;

//if ( did_action( 'woocommerce_before_calculate_totals' ) >= 1 )
//return;

//$cart = WC()->cart->get_cart();

foreach ( $cart as $cart_item_key => $cart_item ) {
// Get product id
$product_id = $cart_item['product_id'];
$product = wc_get_product($product_id);
//echo $product_id . "<br>";

$is_enable = get_post_meta( $product_id, '_enable_promo_for_current_product', true );
if ($is_enable == 'yes') {
$product_arr[] = $product_id;
}
}
foreach ( $product_arr as $val ) {
$product = wc_get_product($val);

$otstapka = get_post_meta( $val, '_procent_otstapka_promo', true );

if (empty($otstapka)) {
$otstapka = 10;
}

$value = get_post_meta( $val, 'wc_product_ids', true );

if ( ! empty( $value ) ) {
$promo_product = wc_get_product( $value );
$name = $promo_product->name;
$price = $promo_product->get_price();
$sale_price = $price * (1 - ($otstapka / 100));
$otstapka2 = $price - $sale_price;
$product_promo_id = $promo_product->get_id();

if ( check_variation_is_in_cart($val) ) {
$cart->add_fee('Отстъпка за промо пакет', -$otstapka2, false);
}
}
}


}




My Answer:
) return; // Avoiding backend operations_ global $wpdb;_ foreach ($cart->get_cart() as $cart_item_key => $cart_item) {_ $product_id = $cart_item['product_id'];_ $custom_field_value = get_post_meta($product_id, 'custom_field_name', true);_ // Perform calculations based on $custom_field_value and add fees to cart_ }_}

Rate this post

3 of 5 based on 9376 votes

Comments




© 2024 Hayatsk.info - Personal Blogs Platform. All Rights Reserved.
Create blog  |  Privacy Policy  |  Terms & Conditions  |  Contact Us