¿Cómo mostrar el campo ACF después del nombre del producto en el carrito y ordenar revisiones en WooCommerce?

3 minutos de lectura

Avatar de usuario de Ross
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

Avatar de usuario de Ruvee
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:

ingrese la descripción de la imagen aquí

y en el tabla de revisión de pedidos en la página de salida:

ingrese la descripción de la imagen aquí


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:

ingrese la descripción de la imagen aquí

Y en la tabla de detalles del pedido en la página de agradecimiento:

ingrese la descripción de la imagen aquí


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

¿Ha sido útil esta solución?