WooCommerce购物车页显示用户已购产品提醒的代码添加位置咨询
WooCommerce购物车页已购商品提醒实现方案
你可以按以下步骤修改cart/cart.php模板文件实现相同效果:
- 首先将获取登录用户的代码放在购物车商品遍历循环的外部靠前位置
- 核心功能判断代码添加到购物车商品循环内
product-name单元格的代码末尾,对应WooCommerce 5.0版本的cart.php文件,该位置大概在第70行左右,具体是在输出完wc_get_formatted_cart_item_data函数的代码之后插入即可。
修改后的对应代码段参考如下:
// 放在购物车循环外部的用户获取代码 if( is_user_logged_in() ) { $user = wp_get_current_user(); } foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item ) { $_product = apply_filters( 'woocommerce_cart_item_product', $cart_item['data'], $cart_item, $cart_item_key ); if ( $_product && $_product->exists() && $cart_item['quantity'] > 0 && apply_filters( 'woocommerce_cart_item_visible', true, $cart_item, $cart_item_key ) ) { ?> <tr class="<?php echo esc_attr( apply_filters( 'woocommerce_cart_item_class', 'cart_item', $cart_item, $cart_item_key ) ); ?>"> <td class="product-name"> <?php echo apply_filters( 'woocommerce_cart_item_name', $_product->get_name(), $cart_item, $cart_item_key ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?> <?php echo apply_filters( 'woocommerce_cart_item_quantity', ' <strong class="product-quantity">' . sprintf( '× %s', $cart_item['quantity'] ) . '</strong>', $cart_item, $cart_item_key ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?> <?php echo wc_get_formatted_cart_item_data( $cart_item ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?> <?php // 已购提醒功能代码 if( is_user_logged_in() && wc_customer_bought_product( $user->user_email, $user->ID, $_product->get_id() ) ) { echo '<div class="user-bought">' . sprintf( "Hi %s 你此前已经购买过该产品。", $user->first_name ) . '</div>'; } ?> </td> <!-- 其他购物车单元格原有代码保持不变 --> </tr> <?php } }
提示:建议通过子主题覆盖模板文件的方式修改,避免WooCommerce版本更新后自定义代码被覆盖。
内容的提问来源于stack exchange,提问作者marwah
相关产品推荐
相关产品推荐

