Soporte » Plugins y Hacks » WooCommerce » Mostrar campos personalizados en woocommerce_email_order_meta_keys

  • Estimado foro lo que deseo es mostrar campos personalizados en el woocommerce_email_order_meta_keys, miren use este codigo que me mostro mis campos en el single product summary:

    add_action( 'woocommerce_single_product_summary', 'dcms_caracteristicas_producto', 8 );
    
    function dcms_caracteristicas_producto(){
    
    if (function_exists('get_field')){
    echo "<p>Peso: ". get_field('peso')."</p>";
    echo "<p>Marca: ". get_field('marca')."</p>";
    
    }
    
    }

    Este codigo me agrego satisfactoriamente los campos personalizados quiero de igual manera mostrarlos tanto en woocommerce_email_order_meta_keys como en woocommerce_after_order_notes entonces miren lo que intente hacer usando la logica del codigo de arriba:

    add_action( 'woocommerce_after_order_notes', 'dcms_caracteristicas_productoo', 8 );
    
    function dcms_caracteristicas_productoo(){
    
    if (function_exists('get_field')){
    echo "<p>Peso: ". get_field('peso')."</p>";
    echo "<p>Marca: ". get_field('marca')."</p>";
    
    }
    
    }

    *este codigo en cambio no me mostro los campos en el after order notes entonces me pueden ayudar como deberia escribir la funcion para mostrarlo reitero en el woocommerce_email_order_ como en el after order notes……….Gracias

    • Este debate fue modificado hace 2 años, 9 meses por LGrusin.
    • Este debate fue modificado hace 2 años, 9 meses por LGrusin. Razón: Código

    La página con la que necesito ayuda: [accede para ver el enlace]

Viendo 8 respuestas - de la 1 a la 8 (de un total de 8)
  • Moderador kallookoo

    (@kallookoo)

    Hola @crivadeneira

    Lo primero el filtro «woocommerce_email_order_meta_keys» esta obsoleto seria el «woocommerce_email_order_meta_fields».
    Tienes mas informacion aqui; https://woocommerce.github.io/code-reference/files/woocommerce-includes-class-wc-emails.html#source-view.488

    El otro si utilizas la plantilla predeterminada deberia funcionar ya que es donde se define; https://woocommerce.github.io/code-reference/files/woocommerce-templates-checkout-form-shipping.html#source-view.69
    Comprueba si el theme tiene esa plantilla y tiene definido ese gancho.
    Otra seria que la function get_field no esta definida, pero lo dudo.

    Iniciador del debate crivadeneira

    (@crivadeneira)

    que tal @kallookoo de acuerdo a lo respondido no comprendo tu solución dada me podrias explicar mas a detalle que se supone que hago con los .php del codigo fuente?

    Como defino si el theme tiene esa plantilla y ese gancho o hook?

    Moderador kallookoo

    (@kallookoo)

    Hola @crivadeneira,

    Por lo que comentas deduzco que no sabes programar o solo lo basico, te lo explico un poco mas detalladamente.
    Los enlaces al codigo fuente del WooCommerce es para que veas donde se definen y que parametros se pasan, etc…

    Te comente que usas un filtro obsoleto, eso significa que en cualquier momento los autores del WooCommerce pueden eliminarlo definitivamente y dejaria de funcionar y te comente cual seria el correcto.

    Sobre la plantilla es porque basicamente el WooCommerce usas plantillas para permitir a los desarrolladores modificar varios aspectos y por lo tanto el theme que usas puede tener definidas dichas plantillas y deberias comprobarlo, ya que es posible que la plantilla donde deberia estar el gancho no lo tiene y por mucho que lo definas nunca se ejecutarian. Ya que el codigo que pusistes deberia funcionar.

    Iniciador del debate crivadeneira

    (@crivadeneira)

    que tal @kallookoo lo que entiendo es que ingrese via ftp al sistema de archivos del tema que tengo en este caso mi tema es BIO LIFE CHILD una vez dentro voy a la carpeta woocommerce y busco las plantillas: class-wc-emails.php, form-shipping.php y de esas plantillas verifico si estan definidas los hooks , a eso es lo que te refieres con «Comprueba si el theme tiene esa plantilla y tiene definido ese gancho.»

    Iniciador del debate crivadeneira

    (@crivadeneira)

    Por favor @kallookoo dime donde se encuentran cual es la ruta de estos archivos: class-wc-emails.php
    form-shipping.php estoy ya por sftp en mi theme / woocommerce pero no encuentro podrias por favor si no puedes detallar mas un tutorial o un paso a paso porque no te comprendo claramente. Gracias

    • Esta respuesta fue modificada hace 2 años, 8 meses por crivadeneira.
    Moderador kallookoo

    (@kallookoo)

    Hola @crivadeneira

    Veamos que nos estamos complicando.
    Todas las plantillas estan dentro de la carpeta woocommerce del theme, como creo usas un theme premium con un child theme no puedo decirte mucho mas ya que no tengo acceso a ese theme, pero dice que es compatible.
    Aqui tienes mas informacion; https://docs.woocommerce.com/document/template-structure/ si el theme no lo hace igual deberas contactar con los autores del theme.
    Por ejemplo para comprobar si existe el gancho «woocommerce_after_order_notes» la plantilla deberia estar en /woocommerce/checkout/form-shipping.php del theme, si no existe entonces usa el predeterminado y si no te funciona es por algun otro motivo.
    Para el gancho «woocommerce_email_order_meta_fields» no existe en ninguna plantilla el un filtro para añadir/mostrar otros campos y se usa add_filter.

    Ahora vamos ha centrarnos en lo que quieres hacer, ya que me parece que estas haciendolo incorrectamente.
    Segun tu codigo usas acf para añadir el peso y la marca, porque no usas los atributos de los productos?
    Luego el acf necesita saber el ID del post para saber que peso devolver y para lo que creo que quieres hacer no te funcionara ya que es generico y por lo tanto el ID del post no se corresponde con el ID del producto.

    Iniciador del debate crivadeneira

    (@crivadeneira)

    Estimado @kallookoo gracias por tu interés y tu entrega en solucionar mi problema. Lamentablemente no puedo enviar capturas te voy a detallar estoy en el checkout page compre un producto ejemplo chorizo de ají al final de mi checkout page tengo el detalle de mi compra como indico a continuación:

    Tu pedido (será entregado en las próximas 24 horas)
    PRODUCTO	SUBTOTAL
    Chorizo Parrillero con Ají  × 1	$3.43
    SUBTOTAL	$3.43
    ENVÍO	
    Transporte Estándar: $6.00
    TOTAL	$9.43

    Que es lo que quiero que se muestre además del producto, es su MARCA y PESO estos campos son creados con ACF entonces la pregunta de oro es como agrego MARCA y PESO dentro del detalle del producto para que aparezca así:

    Tu pedido (será entregado en las próximas 24 horas)
    PRODUCTO	SUBTOTAL
    <strong>Chorizo Parrillero con Ají  × 1	$3.43
    Marca: Unilever  Peso: 2 Unidades (2kilos)</strong>
    SUBTOTAL	$3.43
    ENVÍO	
    Transporte Estándar: $6.00
    TOTAL	$9.43

    Espero me comprendas la idea es jalar esas variables y mostrar en el detalle del producto comprado en checkout form. Existe la posibilidad?

    Moderador kallookoo

    (@kallookoo)

    Hola @crivadeneira

    Basicamente necesitas saber el ID de cada producto en el pedido y añadirlo como argumento en get_field, pero tienes un problema ya que se mostraria indepenientemente ya que estaria fuera del contenido de cada producto.

    Asi que deberas modificar/crear cada template que necesites y añadir los acf manualmente por ejemplo para la tabla que muestra el pedido seria https://github.com/woocommerce/woocommerce/blob/trunk/templates/checkout/review-order.php
    Y para los mails serian dos templates:
    https://github.com/woocommerce/woocommerce/blob/trunk/templates/emails/email-order-items.php
    https://github.com/woocommerce/woocommerce/blob/trunk/templates/emails/plain/email-order-items.php

    o utilizar el action «woocommerce_order_item_meta_start» que esta dentro de esas dos plantillas.

    Sea como sea, necesitaras conocimientos ya que es algo que supera lo que consideramos como ayuda al necesitar algo que deberia crearlo un profesional.

    Saludos y suerte

Viendo 8 respuestas - de la 1 a la 8 (de un total de 8)
  • El debate ‘Mostrar campos personalizados en woocommerce_email_order_meta_keys’ está cerrado a nuevas respuestas.