Encima de Agregar productos al carrito a través de URL y redirigir para pagarhay una manera de completar también los campos de entrada de la página de pago dentro del mismo enlace.
Esto podría ser muy útil cuando conoce los detalles de facturación/envío de un cliente registrado o invitado y desea acelerar el proceso de pedido.
Es importante tener en cuenta que el URL deberá contener datos personales por ejemplo, dirección de correo electrónico, dirección de facturación, número de teléfono, etc. Debe asegurarse de que la URL solo se comparta con el cliente específico (en un correo electrónico, por ejemplo, ya que el contenido se adapta al suscriptor; o solo cuando el cliente de WooCommerce inicia sesión si está utilizando la URL detrás de un botón de sitio web ).
Una vez que esté claro, sigamos adelante y veamos cómo funciona mi fragmento de WooCommerce. ¡Disfrutar!
Php Snippet: Popule WooCommerce Checkout facturación y envío a través de URL
Notas:
1) Una vez que se instala el fragmento, puede usar el siguiente formato de URL (en negrita verá el Parámetros de URL Debe usar y deben ser idénticos a los definidos en el fragmento):
example.com/checkout/?add-to-cart=1234&bfn=Rodolfo&bln=Melogli&bem=test@test.com&bph=123456789&bco=BusinessBloomer&bcy=IT&bst=PA&ba1=viaRoma&ba2=1&bci=Palermo&bpo=90100&sfn=John&sln=Doe&sem=john@doe.doe&sco=JDCO&scy=US&sst=CA&sa1=SunsetBoulevard&sa2=1234&sci=LosAngeles&spo=90145[/php]2) No espacios en blanco están permitidos en la URL, por ejemplo, "SunsetBoulevard". Si necesita generar un espacio, por ejemplo, "Sunset Boulevard", debe usar el personaje espacial codificado: "%20". No probado.
3) Puede omitir lo que desee en la URL, Excepto la identificación del producto Agregar al carritoque es responsable de agregar un producto al carrito. Lea esto útil Guía para agregar productos simples / variables / etc. al carro con una cantidad dada
4) La URL se redirige a "/TACKOUT/" - Ese es el Slug de la página de pago. Si ha editado eso, cambie la URL en consecuencia
5) Los países y, en algunos casos, los estados requieren su Códigos de 2 letras ("Nosotros", "CA", por ejemplo)
6) Dentro del fragmento de PHP, tenga mucho cuidado al editar la matriz $ topopulada. Los valores de la matriz deben coincidir con las ID de campo de pago de WooCommercede lo contrario, no los llenará. Puede eliminar cualquier clave/valor de la matriz si no necesita llenar cualquier campo, por ejemplo, el teléfono de facturación
/** n*@snippet Populate Fields Via URL @ WooCommerce Checkout n*@how-to https://tdestudiodesign.com/tutoriales n*@author Tomás Lucas D´Amario, TD Estudio Design n*@compatible WooCommerce 6 n*@community https://tdestudiodesign.com/club */add_filter( 'woocommerce_add_cart_item_data', 'tddesign_save_custom_data_in_cart_object', 9999, 3 );function tddesign_save_custom_data_in_cart_object( $cart_item_data, $product_id, $variation_id ) {$topopulate = array('bfn' => 'billing_first_name','bln' => 'billing_last_name','bem' => 'billing_email','bph' => 'billing_phone','bco' => 'billing_company','bcy' => 'billing_country','bst' => 'billing_state','ba1' => 'billing_address_1','ba2' => 'billing_address_2','bci' => 'billing_city','bpo' => 'billing_postcode','sfn' => 'shipping_first_name','sln' => 'shipping_last_name','sem' => 'shipping_email','sco' => 'shipping_company','scy' => 'shipping_country','sst' => 'shipping_state','sa1' => 'shipping_address_1','sa2' => 'shipping_address_2','sci' => 'shipping_city','spo' => 'shipping_postcode', ); foreach ( $topopulate as $urlparam => $checkout_field ) { if ( isset( $_GET[$urlparam] ) && ! empty( $_GET[$urlparam] ) ) { $cart_item_data[$checkout_field] = esc_attr( $_GET[$urlparam] );}} return $cart_item_data;}add_filter( 'woocommerce_checkout_fields' , 'tddesign_populate_checkout', 9999 ); function tddesign_populate_checkout( $fields ) { $topopulate = array('bfn' => 'billing_first_name','bln' => 'billing_last_name','bem' => 'billing_email','bph' => 'billing_phone','bco' => 'billing_company','bcy' => 'billing_country','bst' => 'billing_state','ba1' => 'billing_address_1','ba2' => 'billing_address_2','bci' => 'billing_city','bpo' => 'billing_postcode','sfn' => 'shipping_first_name','sln' => 'shipping_last_name','sem' => 'shipping_email','sco' => 'shipping_company','scy' => 'shipping_country','sst' => 'shipping_state','sa1' => 'shipping_address_1','sa2' => 'shipping_address_2','sci' => 'shipping_city','spo' => 'shipping_postcode', );foreach ( WC()->cart->get_cart() as $cart_item ) {foreach ( $topopulate as $urlparam => $checkout_field ) { if ( isset( $cart_item[$checkout_field] ) && ! empty( $cart_item[$checkout_field] ) ) {switch ( substr( $checkout_field, 0, 7 ) ) {case 'billing':$fields['billing'][$checkout_field]['default'] = $cart_item[$checkout_field];break;case 'shippin':$fields['shipping'][$checkout_field]['default'] = $cart_item[$checkout_field];break;}} } } return $fields;}
Este código todavía funciona, a menos que informe lo contrario. Para excluir los conflictos, cambie temporalmente al tema de la tienda, deshabilite todos los complementos, excepto WooCommerce, y pruebe el fragmento nuevamente: Solución de problemas de WooCommerce 101