Frissítés a problémához: sikerült azonosítani a pontos okot és egy ideiglenes megoldást is találtunk.
A hiba a checkout_ui() függvényben keletkezik, ahol a foreach hívás előtt nincs null-ellenőrzés:
$chosen_methods = WC()->session->get( ‘chosen_shipping_methods’ );
foreach ($chosen_methods as $chosen_method) { // ← a problémás sor
Ha a WooCommerce session még nem tartalmazza a chosen_shipping_methods értéket – ami CheckoutWC használatakor bizonyos AJAX hívásoknál rendszeresen előfordul –, a $chosen_methods null lesz és a foreach PHP Warning-ot dob. Megjegyezném, hogy a cart_ui() és a hide_shipping_address() függvényekben ez már le van védve if($chosen_methods) ellenőrzéssel, de a checkout_ui()-ban és a validate_checkout()-ban hiányzik.
Ideiglenes megoldásként egy WPCode snippettel váltottuk le a hookot:
add_action( ‘wp’, function() {
$plugin = VP_Woo_Pont();
remove_action( ‘woocommerce_review_order_after_shipping’, array( $plugin, ‘checkout_ui’ ) );
add_action( ‘woocommerce_review_order_after_shipping’, function() use ( $plugin ) {
if ( ! WC()->session ) return;
$chosen_methods = WC()->session->get( ‘chosen_shipping_methods’ );
if ( empty( $chosen_methods ) ) return;
$plugin->checkout_ui();
});
}, 20 );
Kérjük, hogy a következő frissítésben a checkout_ui() és validate_checkout() függvényekbe kerüljön null/empty ellenőrzés a foreach hívások elé.