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.
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}
…
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);