php 如何在WooCommerce中的购物车和订单评论上的产品名称后显示ACF字段?

k10s72fa  于 2023-01-29  发布在  PHP
关注(0)|答案(1)|浏览(127)

我在WooCommerce产品上为帖子类型设置了高级自定义字段。所以每个产品都有1个唯一的自定义字段。
我尝试在购物车和结帐页面上的产品名称和订单表信息之后显示自定义字段。
但是,由于我的代码没有显示任何输出,所以遇到了问题。
任何关于如何实现这一目标的建议都将不胜感激。谢谢

// 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 );

我还尝试了the_field而不是get_field

7uhlpewt

7uhlpewt1#

1-在购物车页面和结帐页面的订单审查表上

如果您需要在购物车页面和结帐页面上的订单审核表上运行它,您可以使用woocommerce_cart_item_name filter hook,如下所示:

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>';

}

以下是购物车页面上的结果:

在结帐页面订单审核表中:

2-在电子邮件和感谢页面的订单详情表中:

我们可以使用woocommerce_order_item_meta_end action hook将自定义字段值附加到电子邮件模板上产品名称的末尾:

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>';
};

这是邮件里的结果:

在感谢页面的订单详情表中:

这个答案已经在woocommerce 5.7.1上进行了全面测试,并且有效。

相关问题