es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo prevenir que se ejecute el hook en las notificaciones por correo electrónico de WooCommerce.

He escrito esta función para mostrar la categoría y el ID de categoría en la página de recepción del pedido de WooCommerce.

Sin embargo, deseo desactivar la visualización en los correos electrónicos de pedido de WooCommerce. ¿Alguna sugerencia?

// Mostrar categorías e IDs de productos de artículos de pedido
add_action( 'woocommerce_order_item_meta_end', 'display_custom_data_in_emails', 10, 4 );
function display_custom_data_in_emails( $item_id, $item, $order, $bool ) {
    // Obtener las categorías de productos de este artículo
    $terms = wp_get_post_terms( $item->get_product_id(), 'product_cat', array( 'fields' => 'names' ) );
  $term_ids = wp_get_post_terms( $item->get_product_id(), 'product_cat', array('fields' => 'ids') );

    // Mostrar una cadena separada por comas de nombres de categorías de productos
    echo "<br><small>" . implode(', ', $terms) . "</small>";
      echo "<br><small>" . implode(', ', $term_ids) . "</small>";

}

}
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para desactivar la visualización de esta función en los correos electrónicos de pedidos de WooCommerce, puedes usar una declaración condicional para verificar si el correo electrónico que se envía es un correo electrónico de pedido. Puedes hacer esto comprobando el ID del correo electrónico actual y comparándolo con el ID del correo electrónico del pedido.

    Aquí tienes un ejemplo de código para lograr esto:

    // Mostrar las categorías y ID de los productos del pedido en los correos electrónicos
    add_action('woocommerce_order_item_meta_end', 'display_custom_data_in_emails', 10, 4);
    function display_custom_data_in_emails($item_id, $item, $order, $bool)
    {
        // Comprobar si el correo electrónico que se envía es un correo electrónico de pedido.
        if (!is_a($email, 'WC_Email') || !in_array($email->id, array('customer_processing_order', 'customer_completed_order'))) {
            return;
        }
    
        // Obtener las categorías de productos para este artículo
        $terms = wp_get_post_terms($item->get_product_id(), 'product_cat', array('fields' => 'names'));
        $term_ids = wp_get_post_terms($item->get_product_id(), 'product_cat', array('fields' => 'ids'));
    
        // Mostrar una cadena separada por comas de los nombres de categorías de productos.
        echo "<br><small>" . implode(', ', $terms) . "</small>";
        echo "<br><small>" . implode(', ', $term_ids) . "</small>";
    }
    

    En esta función modificada, agregamos una declaración if para verificar si el correo electrónico actual que se está enviando es un correo electrónico de pedido (en este ejemplo, los correos electrónicos customer_processing_order y customer_completed_order). Luego devolvemos la función si el correo electrónico no es un correo electrónico de pedido, lo que significa que las categorías de productos e IDs no se mostrarán en los correos electrónicos que no sean de pedido.

Comments are closed.