Agregue un marcador de posición personalizado al asunto del correo electrónico en WooCommerce

2 minutos de lectura

Agregue un marcador de posicion personalizado al asunto del correo
Kim

Tengo una tienda de Woocommerce y quería agregar un delivery_date después de aceptar el pago.

Creo un campo personalizado en la sección de pedido llamado delivery_date con un valor de fecha.

Ahora quería usar este campo personalizado como marcador de posición en el asunto de la notificación por correo electrónico, como:

Su pedido ahora es {order_status}. Los detalles del pedido se muestran a continuación para su referencia: fecha de entrega: {fecha_de_entrega}

Creo que el marcador de posición no funciona así, necesito cambiar algo en el php pero no sé dónde.

Agregue un marcador de posicion personalizado al asunto del correo
LoicTheAztec

Para agregar un marcador de posición activo personalizado {delivery_date} en el asunto del correo electrónico de woocommerce, utilizará la siguiente función enganchada.

Comprobarás antes, que delivery_date es la meta clave de publicación correcta utilizada para guardar el valor del campo de pago en el pedido (registrarse wp_postmeta tabla de base de datos para el pedido post_id).

El código:

add_filter( 'woocommerce_email_format_string' , 'add_custom_email_format_string', 10, 2 );
function add_custom_email_format_string( $string, $email ) {
    $meta_key    = 'delivery_date'; // The post meta key used to save the value in the order
    $placeholder="{delivery_date}"; // The corresponding placeholder to be used
    $order = $email->object; // Get the instance of the WC_Order Object
    $value = $order->get_meta($meta_key) ? $order->get_meta($meta_key) : ''; // Get the value

    // Return the clean replacement value string for "{delivery_date}" placeholder
    return str_replace( $placeholder, $value, $string );
}

El código va en el archivo function.php de su tema secundario activo (o tema activo). Debería funcionar.

Luego, en Woocommerce> Configuración> Correos electrónicos> Notificación de “Nuevo pedido”, podrá usar el marcador de posición dinámico {delivery_date}

  • recibe un error Advertencia: array_values ​​() espera que el parámetro 1 sea una matriz, nulo dado que está en la línea de retorno, puse el código en un fragmento de php, creo que debería funcionar allí también o?

    – kim

    8 de abril de 2019 a las 13:04


  • @Kim No tengo errores… Hice una ligera actualización… Debe asegurarse de que la meta_clave correcta utilizada en la tabla de la base de datos wp_postmeta sea delivery_date… Si no, necesita cambiarlo en el código de función.

    – LoicTheAztec

    8 de abril de 2019 a las 13:21

Agregue un marcador de posicion personalizado al asunto del correo
Adnan Rashid

Si desea imprimir el valor de “fecha_entrega” en el contenido del correo electrónico, puede hacer esto.

$content = "Your order is now %%order_status%%. Order details are shown below for your reference: deliverydate: %%delivery_date%%";
$search_array = ["{order_status}","{delivery_date}"]
$replace_array = [$valueOfOrderStatus,$valueOfDeliveryDate];
$content = str_replace($search_array, $replace_array, $content);

  • Con este código, todos pueden reemplazar todas las variables en el contenido simplemente agregando todos los elementos de búsqueda y reemplazo a las matrices de búsqueda y reemplazo.

    – Adnan Rashid

    8 de abril de 2019 a las 13:46

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad