ross
Tengo una configuración avanzada de campos personalizados para el tipo de publicación en los productos de WooCommerce. Entonces, cada producto tiene 1 campo personalizado único.
Estoy tratando de mostrar el campo personalizado después del nombre del producto en el carrito y la página de pago y la información de la tabla de pedidos.
Sin embargo, tengo problemas ya que mi código no muestra ningún resultado.
Cualquier consejo sobre cómo lograr esto sería muy apreciado. Gracias
// Display the ACF custom field 'location' after the product title on cart / checkout page.
function cart_item_custom_feild( $cart_item ) {
$address = get_field( 'location', $cart_item['product_id'] );
echo "<div>Address: $address.</div>";
}
add_action( 'woocommerce_after_cart_item_name', 'cart_item_custom_feild', 10, 1 );
yo también probé the_field
en lugar de get_field
ruvee
1- En la página del carrito Y en la tabla de revisión de pedidos en la página de pago
Si necesita ejecutarlo tanto en la página del carrito Y tabla de revisión de pedidos en la página de pago, puede usar woocommerce_cart_item_name
gancho de filtro, así:
add_filter('woocommerce_cart_item_name', 'order_review_custom_field', 999, 3);
function order_review_custom_field($product_name, $cart_item, $cart_item_key)
{
$address = get_field('location', $cart_item['product_id']);
return ($address) ?
$product_name . '<div>Address: ' . $address . '</div>'
:
$product_name . '<div>Address: No address found!</div>';
}
Aquí está el resultado en el página del carrito:
y en el tabla de revisión de pedidos en la página de salida:
2- En el correo electrónico Y en la tabla de detalles del pedido en la página de agradecimiento:
Podríamos usar woocommerce_order_item_meta_end
enlace de acción para agregar el valor del campo personalizado al final del nombre del producto en la plantilla de correo electrónico:
add_action("woocommerce_order_item_meta_end", "email_order_custom_field", 999, 4);
function email_order_custom_field($item_id, $item, $order, $plain_text)
{
$address = get_field('location', $item->get_product_id());
echo ($address) ?
'<div>Address: ' . $address . '</div>'
:
'<div>Address: No address found!</div>';
};
Y aquí está el resultado en el correo electrónico:
Y en la tabla de detalles del pedido en la página de agradecimiento:
Esta respuesta ha sido completamente probada en woocommerce 5.7.1
y obras
-
Gracias Ruvee. ¿Se pregunta si también sería posible en la tabla de pedidos en WooCommerce Orders? wc-orden. hacer_acción -> ‘woocommerce_email_order_detalles’,
– Ross
4 de enero de 2022 a las 16:35
-
¿Qué tabla de pedidos? ¿Tabla de pedidos en la plantilla de correo electrónico? ¿O pedir una tabla en el panel de administración?
– Ruvee
4 de enero de 2022 a las 17:24
-
La tabla Pedido en la plantilla de correo electrónico.
– Ross
4 de enero de 2022 a las 17:55
-
También he añadido un fragmento para el correo electrónico.
– Ruvee
04/01/2022 a las 21:45