• Resuelto Jordi

    (@kukat)


    Hola, buenos días a tod@as.

    Estoy intentando cambiar, en los correos de Woocommerce (la última versión), el nombre del producto, por la descripción de los mismos.
    He estado buscando info sobre modificar los emails e incluso el functions PHP, pero esta opción no se como hacerla.

    Nuestros compañeros necesitan que se muestre la descripción, para gestionar mejor los servicios.

    Muchas grácias a tod@s por adelantado.

    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)
  • Buenas, Tienes dos manera de hacerlo

    1. Hacer override del fichero email-order-items.php
    Para hacerlo debes copiar este fichero del plugin woocommerce a tu tema.
    (más información en https://docs.woocommerce.com/document/template-structure/)

    Entonces puedes editar la linea que pone:
    echo wp_kses_post( apply_filters( 'woocommerce_order_item_name', $item->get_name(), $item, false ) );

    2. Como esta hecho con un filtro. También puedes crear un filtro para eso.
    En tu functions.php pon:

    add_filter('woocommerce_order_item_name','change_name_on_order_item_name');
    function change_name_on_order_item_name($name, $item, false){
        $product = $item->get_product();
        return $product->get_description();
    }

    No he probado el código, pero para que puedes investigar más las propiedades de $item te dejo dos links:
    https://docs.woocommerce.com/wc-apidocs/class-WC_Order_Item_Product.html
    https://docs.woocommerce.com/wc-apidocs/class-WC_Product.html

    El segundo método es mucho más limpio, pero con los dos puedes conseguir lo que necesitas.Espero que lo consigas.

    Iniciador del debate Jordi

    (@kukat)

    Muchíssimas gracias! Voy a probar.

    Iniciador del debate Jordi

    (@kukat)

    Lamentablemente no funciona 🙁
    Aunque debe ser algo similar.

    • Esta respuesta fue modificada hace 4 años, 7 meses por Jordi.
    Iniciador del debate Jordi

    (@kukat)

    Supongo que aquí debería de poner algo así, no? Però creo que se debería pasar al array de arriba o algo similar, pero no estoy muy puesto 🙁

    echo wp_kses_post( apply_filters( ‘woocommerce_order_item_name’, $item->get_description(), $item, false ) );

    No porque $item no es un objeto producto y no tiene el método get_description.
    Comenta la linea y pon:

    //echo wp_kses_post( apply_filters( ‘woocommerce_order_item_name’, $item->get_name(), $item, false ) );
    $product = $item->get_product();
    echo wp_kses_post($product->get_description());

    No he probado el código pero creo que por ahí debe ir. Si no consulta los links que te pasé, haz var_dump de $item para saber que objeto es y tira del hilo.

    Iniciador del debate Jordi

    (@kukat)

    Grácias, lo voy a probar.

    Hola @kukat

    ¿Pudiste probarlo? ¿Hay algo que podamos ayudarte en relación de esta?

    En caso de que quedara resuelta por favor indica como lo hiciste y marca el debate como resuelto.

    Iniciador del debate Jordi

    (@kukat)

    Disculpa el retraso, aún no lo había podido probar. Y efectivamente!!! Funcionó. Resumiendo:

    1. Copiar fichero de plugins/woocommerce/emails/email-order-items.php
    a tutema/woocommerce/emails/email-order-items.php

    2. Buscar esta línea:
    echo wp_kses_post( apply_filters( 'woocommerce_order_item_name', $item->get_name(), $item, false ) );

    3. Comentarla con //

    4. Añadir estas líneas.
    $product = $item->get_product();
    echo wp_kses_post($product->get_description());

    Por cierto, puedes explicar más detalladamente estas dos últimas líneas? Llamas al objeto producto y guardas en la variable $producto, y luego simplemente le dices a ese objecto que te muestre la descripción, no?

    • Esta respuesta fue modificada hace 4 años, 6 meses por Jordi.
Viendo 8 respuestas - de la 1 a la 8 (de un total de 8)
  • El debate ‘Cambiar nombre producto por descripción del producto en correos de Woocommerce’ está cerrado a nuevas respuestas.