Alternativa para usar la función “is_wc_endpoint_url()” en las notificaciones por correo electrónico de WooCommerce.
Recientemente, solicité y recibí las respuestas para dos soluciones:
- Agregando metadatos
- Cambiando metadatos
de algunos elementos de orden. Soluciones que solo funcionarán para las notificaciones por correo electrónico de WooCommerce enviadas en pedidos completados.
El problema con las soluciones recibidas es que en ambas se utiliza la función “is_wc_endpoint_url()” para limitarlas solo a las notificaciones por correo electrónico, lo que en mi caso particular (¡no sé por qué!) hace que solo funcionen para las notificaciones enviadas a los administradores, pero no a los clientes, que son de hecho los principales destinatarios de los metadatos en cuestión.
¿Hay alguna manera de solucionar este problema con la función “is_wc_endpoint_url()”?
La primera respuesta, agregando metadatos:
function action_woocommerce_order_item_meta_start( $item_id, $item, $order, $plain_text ) {
// On email notifications
if ( ! is_wc_endpoint_url() && $item->is_type('line_item') ) {
echo '<ul class="wc-item-meta"><li><strong class="wc-item-meta-label">Label</strong><p>Value order id = ' . $order->get_id() . '</p></li></ul>';
}
}
add_action( 'woocommerce_order_item_meta_start', 'action_woocommerce_order_item_meta_start', 10, 4 );
La segunda respuesta (una de las opciones), cambiando metadatos:
function filter_woocommerce_order_item_get_formatted_meta_data( $formatted_meta, $item ) {
// Only on emails notifications
if ( is_admin() || is_wc_endpoint_url() )
return $formatted_meta;
foreach ( $formatted_meta as $key => $meta ) {
$formatted_meta[$key]->display_key = 'new key';
$formatted_meta[$key]->display_value = 'new value';
}
return $formatted_meta;
}
add_filter( 'woocommerce_order_item_get_formatted_meta_data', 'filter_woocommerce_order_item_get_formatted_meta_data', 10, 2 );
davy.ai
Problema al aplicar soluciones para agregar/cambiar metadatos en las notificaciones por correo electrónico de WooCommerce
Como experto en TI especializado en PHP, WordPress, WooCommerce y notificaciones por correo electrónico, recientemente solicité y recibí dos soluciones para agregar y cambiar metadatos de algunos elementos de pedido. Se suponía que estas soluciones funcionaban solo para las notificaciones por correo electrónico de WooCommerce enviadas en pedidos completados. Sin embargo, el problema con las soluciones recibidas es que ambas utilizan la función
is_wc_endpoint_url()
para limitarlas solo a las notificaciones por correo electrónico.En mi caso particular, por alguna razón desconocida, las soluciones solo funcionan para las notificaciones enviadas a los administradores y no para los clientes, que son los principales destinatarios de los metadatos.
Quiero saber si hay alguna manera de solucionar este problema con la función
is_wc_endpoint_url()
.La primera solución implica utilizar la acción
woocommerce_order_item_meta_start
para agregar metadatos al elemento de pedido. El código es el siguiente:La segunda solución implica utilizar el filtro
woocommerce_order_item_get_formatted_meta_data
para cambiar los metadatos del elemento de pedido. El código es el siguiente:En ambas soluciones, se utiliza la función
is_wc_endpoint_url()
para determinar si los metadatos deben agregarse o cambiarse solo para las notificaciones por correo electrónico. Sin embargo, en mi caso, esta función hace que las soluciones funcionen solo para las notificaciones enviadas a los administradores y no para los clientes.Estoy buscando una solución alternativa a este problema para que las soluciones funcionen para todas las notificaciones por correo electrónico, incluidas aquellas enviadas a los clientes.