Dado que las solicitudes de fragmentos de WooCommerce de los fanáticos de #BloomerArmada siguen llegando a mi bandeja de entrada, es hora de publicar una funcionalidad muy útil.
Hoy, veremos cómo denegar la compra a una dirección de correo electrónico de facturación determinada, si es un usuario y ya tiene un pedido pendiente.

Fragmento de PHP: denegar pago si el usuario tiene pedidos pendientes | WooCommerce
/** * @snippet Deny Checkout to User With Pending Orders | WooCommerce * @how-to Get CustomizeWoo.com FREE * @sourcecode https://businessbloomer.com/?p=55387 * @author Rodolfo Melogli * @testedwith WooCommerce 3.0.5 */ add_action( 'woocommerce_after_checkout_validation' , 'bbloomer_deny_checkout_user_pending_orders' ); function bbloomer_deny_checkout_user_pending_orders( $posted ) { global $woocommerce ; $checkout_email = $posted [ 'billing_email' ]; $user = get_user_by( 'email' , $checkout_email ); if ( ! empty ( $user ) ) { $customer_orders = get_posts( array ( 'numberposts' => -1, 'meta_key' => '_customer_user' , 'meta_value' => $user ->ID, 'post_type' => 'shop_order' , // WC orders post type 'post_status' => 'wc-pending' // Only orders with status "completed" ) ); foreach ( $customer_orders as $customer_order ) { $count ++; } if ( $count > 0 ) { wc_add_notice( 'Sorry, please pay your pending orders first by logging into your account' , 'error' ); } } } |