gpt4 book ai didi

php - WooCommerce 仅显示已购买的商品

转载 作者:可可西里 更新时间:2023-11-01 12:46:49 27 4
gpt4 key购买 nike

所以我在网上看了很多,但找不到解决方案...

基本上我想做的是显示用户在商店中购买的所有产品的产品循环,就像显示普通产品一样。

如果你还是不明白,也许这会帮助你理解我的意思..

这是 WooCommerce 文档中的示例产品循环...

<ul class="products">
<?php
$args = array(
'post_type' => 'product',
'posts_per_page' => 12
);
$loop = new WP_Query( $args );
if ( $loop->have_posts() ) {
while ( $loop->have_posts() ) : $loop->the_post();
woocommerce_get_template_part( 'content', 'product' );
endwhile;
} else {
echo __( 'No products found' );
}
wp_reset_postdata();
?>
</ul><!--/.products-->

那么,如果我想显示基本相同的完全相同的产品循环,但将其过滤掉,以便它只显示用户已经购买的产品,该怎么办。

老实说,我不知道该去哪里,我相信过去还有其他人对此做过研究,所以也许这会对很多人有所帮助!

提前致谢!

最佳答案

至少有两种不同的方法可以解决这个问题。

首先是从每个帖子中获取产品,然后从每个产品中获取产品 ID,然后使用 if 语句使用 wc_customer_bought_product 或 woocommerce_customer_bought_product(如果您使用的是旧版 WooCommerece)进行过滤。

第二个是传递正确的参数来过滤 WP_Query 以仅包含用户购买的订单,然后仅过滤这些订单中的产品。有关第二种方法的更多信息,请访问 Get All User Orders and Products bought by user in WooCommerce based shop (archive.org)。 .

第一种方法的一个例子是

<!-- code started -->

<ul class="products">
<?php
$user_id = get_current_user_id();
$current_user= wp_get_current_user();
$customer_email = $current_user->email;
$args = array(
'post_type' => 'product',
'posts_per_page' => 12
);
$loop = new WP_Query( $args );
if ( $loop->have_posts() ) {
while ( $loop->have_posts() ) : $loop->the_post(); $_product = get_product( $loop->post->ID );
if (wc_customer_bought_product($customer_email, $user_id,$_product->id)){
woocommerce_get_template_part( 'content', 'product' );
}
endwhile;
} else {
echo __( 'No products found' );
}
wp_reset_postdata();
?>
</ul><!--/.products-->

关于php - WooCommerce 仅显示已购买的商品,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28362162/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com