如果产品已添加到WooCommerce中的购物车,如何重命名“添加到购物车”按钮
当Ajax添加到购物车功能在my WooCommerce store上处于活动状态时,在Ajax添加到购物车上,首先单击它会显示一个选中的图标符号,如:如果产品已添加到WooCommerce中的购物车,如何重命名“添加到购物车”按钮,woocommerce,Woocommerce,当Ajax添加到购物车功能在my WooCommerce store上处于活动状态时,在Ajax添加到购物车上,首先单击它会显示一个选中的图标符号,如: 下面的代码将“添加到”按钮购物车文本更改为“Seçildi!”,如果产品已经在购物车中,则仅在刷新页面后,如: 但是,如果不刷新页面,按钮仍像以前一样带有选中图标符号 我想更改“添加到购物车”按钮,更改此产品已添加的数量,如: 这可能吗?我需要改变什么?非常感谢您的帮助。您可以使用WC-woocommerce\u-product\u-add\
下面的代码将“添加到”按钮购物车文本更改为“Seçildi!”,如果产品已经在购物车中,则仅在刷新页面后,如:
但是,如果不刷新页面,按钮仍像以前一样带有选中图标符号 我想更改“添加到购物车”按钮,更改此产品已添加的数量,如:
这可能吗?我需要改变什么?非常感谢您的帮助。您可以使用WC-woocommerce\u-product\u-add\u-to\u-cart\u文本操作钩子,您可以通过所有产品获得WC-cart循环,并比较路径第二个参数$prodcut对象。检查下面的代码。代码将激活theme functions.php文件
function change_add_to_cart_text_if_product_already_in_cart( $add_to_cart_text, $product ) {
if ( WC()->cart ) {
$cart = WC()->cart; // Get cart
if ( ! $cart->is_empty() ) {
foreach ( $cart->get_cart() as $cart_item_key => $cart_item ) {
$_product_id = $cart_item['product_id'];
if ( $product->get_id() == $_product_id ) {
$add_to_cart_text = '('.$cart_item['quantity'].')'.' Already in cart';
break;
}
}
}
}
return $add_to_cart_text;
}
add_filter( 'woocommerce_product_add_to_cart_text', 'change_add_to_cart_text_if_product_already_in_cart', 10, 2 );
add_filter( 'woocommerce_product_single_add_to_cart_text', 'change_add_to_cart_text_if_product_already_in_cart', 10, 2 );
更新(根据OP请求,如何使用数量快速更改文本)。
add_filter( 'woocommerce_loop_add_to_cart_link', 'custom_add_quantity_fields', 99, 2 );
function custom_add_quantity_fields($html, $product) {
//add quantity field only to simple products
if ( $product && $product->is_type( 'simple' ) && $product->is_purchasable() && $product->is_in_stock() && ! $product->is_sold_individually() ) {
if ( WC()->cart ) {
$cart = WC()->cart; // Get cart
if ( ! $cart->is_empty() ) {
foreach ( $cart->get_cart() as $cart_item_key => $cart_item ) {
$_product_id = $cart_item['product_id'];
if ( $product->get_id() == $_product_id ) {
$data_product_qty = $cart_item['quantity'];
}else{
$data_product_qty = 0;
}
}
}else{
$data_product_qty = 0;
}
}
//rewrite form code for add to cart button
$html = '<form action="' . esc_url( $product->add_to_cart_url() ) . '" class="cart" method="post" enctype="multipart/form-data">';
$html .= woocommerce_quantity_input( array(), $product, false );
$html .= '<button type="submit" data-quantity="1" data-product_id="' . $product->get_id() . '" class="button alt ajax_add_to_cart add_to_cart_button product_type_simple" data-product-qty="'.$data_product_qty.'">' . esc_html( $product->add_to_cart_text() ) . '</button>';
$html .= '</form>';
}
return $html;
}
有两种方法可以做到这一点
woocommerce\u loop\u add\u to\u cart\u args
添加产品数量属性,并基于此显示
function add_product_qty( $args, $product ){
if ( WC()->cart ) {
$cart = WC()->cart; // Get cart
if ( ! $cart->is_empty() ) {
foreach ( $cart->get_cart() as $cart_item_key => $cart_item ) {
$_product_id = $cart_item['product_id'];
if ( $product->get_id() == $_product_id ) {
$args['attributes']['data-product-qty'] = $cart_item['quantity'];
}else{
$args['attributes']['data-product-qty'] = 0;
}
}
}else{
$args['attributes']['data-product-qty'] = 0;
}
}
return $args;
}
add_filter( 'woocommerce_loop_add_to_cart_args', 'add_product_qty', 10, 2 );
add_action( 'wp_footer', 'ajax_button_text_quick_change_js_script' );
function ajax_button_text_quick_change_js_script() {
?>
<script>
(function($) {
$(document.body).on('click', '.ajax_add_to_cart', function(event){
$this = $(this);
var product_qty = parseInt($this.attr('data-product-qty')) + 1;
$this.attr('data-product-qty',product_qty);
var buttonText = '<span class="add_to_cart_text product-is-added">('+product_qty+') Already in cart</span><i class="cart-icon pe-7s-cart"></i>';
$this.html(buttonText).attr('data-tip','('+product_qty+') Already in cart');
});
})(jQuery);
</script>
<?php
}
add_filter( 'woocommerce_loop_add_to_cart_link', 'custom_add_quantity_fields', 99, 2 );
function custom_add_quantity_fields($html, $product) {
//add quantity field only to simple products
if ( $product && $product->is_type( 'simple' ) && $product->is_purchasable() && $product->is_in_stock() && ! $product->is_sold_individually() ) {
if ( WC()->cart ) {
$cart = WC()->cart; // Get cart
if ( ! $cart->is_empty() ) {
foreach ( $cart->get_cart() as $cart_item_key => $cart_item ) {
$_product_id = $cart_item['product_id'];
if ( $product->get_id() == $_product_id ) {
$data_product_qty = $cart_item['quantity'];
}else{
$data_product_qty = 0;
}
}
}else{
$data_product_qty = 0;
}
}
//rewrite form code for add to cart button
$html = '<form action="' . esc_url( $product->add_to_cart_url() ) . '" class="cart" method="post" enctype="multipart/form-data">';
$html .= woocommerce_quantity_input( array(), $product, false );
$html .= '<button type="submit" data-quantity="1" data-product_id="' . $product->get_id() . '" class="button alt ajax_add_to_cart add_to_cart_button product_type_simple" data-product-qty="'.$data_product_qty.'">' . esc_html( $product->add_to_cart_text() ) . '</button>';
$html .= '</form>';
}
return $html;
}
add_过滤器('woocommerce_loop_add_to_cart_link','custom_add_quantity_fields',99,2);
函数自定义\添加\数量\字段($html,$product){
//仅向简单产品添加数量字段
如果($product&&$product->is_type('simple')&&&$product->is_purchable()&&&$product->is_in_stock()&&&&!$product->is_selled_single()){
如果(WC()->cart){
$cart=WC()->cart;//获取购物车
如果(!$cart->为空(){
foreach($cart->get\u cart()作为$cart\u item\u key=>$cart\u item){
$_product_id=$cart_item['product_id'];
如果($product->get\U id()=$\U product\U id){
$data\U product\U QUOTY=$cart\U item[‘数量’];
}否则{
$data\U product\U qty=0;
}
}
}否则{
$data\U product\U qty=0;
}
}
//重写“添加到购物车”按钮的表单代码
$html='';
$html.=woocommerce\u quantity\u输入(数组(),$product,false);
$html.=''.esc_html($product->add_to_cart_text())。';
$html.='';
}
返回$html;
}
测试和工作
Thx@Bhautik,它工作得很好,但在第一次点击时,“添加到购物车”按钮仅显示checkt符号,刷新页面后,它显示(x)已在购物车中。你的测试结果一样吗?是的,我也一样。添加到购物车时是否要更改(我是说单击?)我是指单击添加到购物车按钮时,该按钮变为CHECK T符号,没有数量且已在购物车文本中。刷新页面后,我会看到Quantity和cart文本中的内容。我想在第一次单击时执行此操作。İ不需要检查T符号,我需要数量并且已经在购物车文本中。:)thx。有更多的代码可以做到这一点。您可以使用
added_to_cart
jQuery事件,该事件在添加到购物车后触发,您可以根据该事件进行更改。你可以在这里查看更多信息,这里你可以告诉我如何搜索,或者如果你能举个例子,我会很高兴。
add_filter( 'woocommerce_loop_add_to_cart_link', 'custom_add_quantity_fields', 99, 2 );
function custom_add_quantity_fields($html, $product) {
//add quantity field only to simple products
if ( $product && $product->is_type( 'simple' ) && $product->is_purchasable() && $product->is_in_stock() && ! $product->is_sold_individually() ) {
if ( WC()->cart ) {
$cart = WC()->cart; // Get cart
if ( ! $cart->is_empty() ) {
foreach ( $cart->get_cart() as $cart_item_key => $cart_item ) {
$_product_id = $cart_item['product_id'];
if ( $product->get_id() == $_product_id ) {
$data_product_qty = $cart_item['quantity'];
}else{
$data_product_qty = 0;
}
}
}else{
$data_product_qty = 0;
}
}
//rewrite form code for add to cart button
$html = '<form action="' . esc_url( $product->add_to_cart_url() ) . '" class="cart" method="post" enctype="multipart/form-data">';
$html .= woocommerce_quantity_input( array(), $product, false );
$html .= '<button type="submit" data-quantity="1" data-product_id="' . $product->get_id() . '" class="button alt ajax_add_to_cart add_to_cart_button product_type_simple" data-product-qty="'.$data_product_qty.'">' . esc_html( $product->add_to_cart_text() ) . '</button>';
$html .= '</form>';
}
return $html;
}