除了一个小问题之外,我已经让它工作得很好了。
我有一个自定义的archive-product.php页面,其中显示了每个产品的数量选择器...
<ul class="woo-products">
<?php
$args = array( 'post_type' => 'product', 'posts_per_page' => 100, 'product_cat' => 'hair-extensions' );
$loop = new WP_Query( $args );
while ( $loop->have_posts() ) : $loop->the_post(); global $product; ?>
<li class="product">
<a href="<?php echo get_permalink( $loop->post->ID ) ?>" title="<?php echo esc_attr($loop->post->post_title ? $loop->post->post_title : $loop->post->ID); ?>">
<h3><?php the_title(); ?></h3>
<?php if (has_post_thumbnail( $loop->post->ID )) echo get_the_post_thumbnail($loop->post->ID, 'shop_catalog'); else echo '<img src="'.woocommerce_placeholder_img_src().'" alt="Placeholder" width="300px" height="300px" />'; ?>
<?php echo the_excerpt(); ?>
<span class="price"><?php echo $product->get_price_html(); ?></span>
</a>
<?php // woocommerce_template_loop_add_to_cart( $loop->post, $product ); ?>
<?php
add_action('woocommerce_after_shop_loop_item','woocommerce_template_single_add_to_cart');
remove_action('woocommerce_after_shop_loop_item', 'woocommerce_template_loop_add_to_cart', 10 );
do_action( 'woocommerce_after_shop_loop_item' );
?>
</li>
<?php endwhile; ?>
<?php wp_reset_query(); ?>
</ul>
如果我从那里添加一个产品,它进入我的购物车没有问题。但是如果我点击该产品来访问它自己的页面,我会看到一条“该产品被添加到你的购物车中”的消息。
同样,如果我在商店页面上添加了几种不同的产品,它们会进入我的购物车,但如果我访问其中一个产品页面,我会多次看到"this product was add to your cart“消息(我添加到购物车中的每个产品都会出现一次)。
这里有一张图片可以帮助我描述这个问题:http://i.imgur.com/hou3ZRW.png
在上面的代码中,如果我取消注释掉这一行...
woocommerce_template_loop_add_to_cart( $loop->post, $product );
...and删除这些行...
add_action('woocommerce_after_shop_loop_item','woocommerce_template_single_add_to_cart');
remove_action('woocommerce_after_shop_loop_item', 'woocommerce_template_loop_add_to_cart', 10 );
do_action( 'woocommerce_after_shop_loop_item' );
...it运行良好,除了我不再有数量选择器选项。
当我在将产品添加到购物车后访问产品页面时,任何关于如何阻止"this product as to your cart“消息出现的建议都会很有帮助。
发布于 2014-06-16 12:18:23
这帮助我解决了这个问题,但包括使用不同方法的数量选择器,问题就消失了:
http://christianvarga.com/how-to-add-quantity-to-product-archives-in-woocommerce-and-keep-ajax/
发布于 2017-09-14 22:21:05
WooCommerce中有一个名为wc_clear_notices
的函数,它可以执行您所需的操作。
它是在WooCommerce 2.1中引入的,您可以在此处查看非常简短的文档:http://hookr.io/functions/wc_clear_notices/
有关实现它的方法,请参阅Woocommerce cart notice showing multiple times。
https://stackoverflow.com/questions/24236460
复制相似问题