如何在 Woocommerce 购物车页面上显示自定义 cart_item_data?

问题描述 投票:0回答:1

我正在尝试使用一些自定义附加数据将产品添加到 Woocommerce 购物车。我认为添加到购物车效果很好,因为购物车页面上显示了同一产品的两行。但是,我希望它在购物车上可见,如下图所示:

要将产品添加到购物车,我使用以下代码:

WC()->cart->add_to_cart( $product_id, $quantity );

并将以下过滤器添加到

woocommerce_add_cart_item_data
以确保“电子邮件”值添加到购物车项目中:

function plugin_add_cart_item_data( $cart_item_data, $product_id, $variation_id ) {
  if( isset( $_POST['emaill'] ) ) {
    $cart_item_data['emaill'] = sanitize_text_field( $_POST['emaill'] );
  }
  return $cart_item_data;
}
add_filter( 'woocommerce_add_cart_item_data', 'plugin_add_cart_item_data', 10, 3 );

要查看如上图所示的额外“电子邮件”信息,我添加了以下代码:

function plugin_republic_get_item_data( $item_data, $cart_item_data ) {
  if( isset( $cart_item_data['emaill'] ) ) {
    $item_data[] = array(
    'key' => __( 'Your name', 'plugin-republic' ),
    'value' => wc_clean( $cart_item_data['emaill'] ));
  }
  return $item_data;
}
add_filter( 'woocommerce_get_item_data', 'plugin_republic_get_item_data', 10, 2 );

但是产品只是这样显示的;这里没有显示“电子邮件”值:

我的问题是:我做错了什么吗?是否可能与我的主题(Bricks)有冲突,它只是忽略了这个“电子邮件”值?如果有的话应该去哪里查找原因呢?

我怎样才能正确调试这个?我可以在哪个数据库表中查看是否存储了实际的“email”值?我可以 $cart_item_data 控制台中的信息或其他信息吗?

顺便说一句,“电子邮件”信息也没有显示在管理仪表板中,但我想这是由同样的问题引起的。

php wordpress woocommerce
1个回答
0
投票

一些潜在的问题。这是我开始调试它的方法:

  1. 我知道很愚蠢,但你是故意尝试发送“电子邮件”而不是“电子邮件”,对吗?

  2. 确保将产品添加到购物车时,“电子邮件”字段实际上是通过 POST 请求发送的。您可以在 chrome 开发工具中检查网络请求。

  3. 在过滤器函数(plugin_add_cart_item_data()和plugin_republic_get_item_data())中添加error_log()语句以检查它们是否正确执行。例如:

     function plugin_add_cart_item_data( $cart_item_data, $product_id, $variation_id ) {
     error_log('plugin_add_cart_item_data function called');
     if( isset( $_POST['emaill'] ) ) {
         $cart_item_data['emaill'] = sanitize_text_field( $_POST['emaill'] );
     }
     return $cart_item_data;
    

    }

  4. WooCommerce 将购物车项目数据存储在 wp_woocommerce_cart_contents 表中。您可以检查相关购物车商品的“电子邮件”数据是否存储在那里。那里有更新吗

© www.soinside.com 2019 - 2024. All rights reserved.