如何在展示商品前的365天内检查是否购买了该商品

时间:2015-06-28 作者:DAREUKCharity

我有一个WP网站,使用WooCommerce. 我们的产品由实物库存、下载和一些指向我们网站页面的链接组成。

我是通过在WooCommerce的“可下载文件”部分中放置特定产品页面的链接来实现这一点的,到目前为止,该部分工作正常。当我现在尝试添加到“可下载文件”区域的链接时,出现了“文件不在服务器上错误”。

我试图通过手动将链接添加到my-downloads.php 文件(子主题中的新模板),但我无法计算出代码来检查链接的限定条件。

本质上,我需要做的与WooCoomerce检查哪些下载(如果有的话)要显示在我的帐户页面上的操作相同。

唯一的区别是我想在我的网站上创建一个指向特定页面的简单链接(这些页面是购买物品的人专用的)。

必须检查:

如果用户登录,他们是否购买了“a项”、“b项”、“c项”等(4项,7个SKU,作为一种产品有4种变体)

  • 是过去365天内购买的,那么:

    如果他们购买了“项目a”并符合其他标准显示链接,如果他们购买了“项目b”并符合其他标准显示链接等。

    如果有任何帮助,我将不胜感激,我不是一名程序员,只是很擅长使用软件,可以很好地遵循指示,在php文件中进行黑客攻击以完成任务;我被钩子和过滤器以及它们返回/需要的东西弄丢了。

  • 1 个回复
    SO网友:passatgt

    这并不复杂,下面是一段代码片段,可以帮助您开始:

    if(is_user_logged_in()) {
    
        //We only need these products to check
        $products_to_check = array(81,82,83,84);
        $customer_bought = array();
    
        //Get all orders made by the current user in the last 365 days
        $customer_orders = get_posts( apply_filters( \'woocommerce_my_account_my_orders_query\', array(
            \'numberposts\' => $order_count,
            \'meta_key\'    => \'_customer_user\',
            \'meta_value\'  => get_current_user_id(),
            \'post_type\'   => wc_get_order_types( \'view-orders\' ),
            \'post_status\' => array(\'wc-completed\', \'wc-processing\'),
            \'date_query\' => array(
                array(
                    \'column\' => \'post_date_gmt\',
                    \'after\' => \'1 year ago\',
                )
            )
        )));
    
        //Loop trough the orders
        foreach ( $customer_orders as $customer_order ) {
            $order = wc_get_order();
            $order->populate( $customer_order );
            $items = $order->get_items();
    
            //Loop trough the order items and see if it is a product we need to cehck
            foreach($items as $item) {          
                if(in_array($item[\'product_id\'], $products_to_check)) {
                    $customer_bought[] = $item[\'product_id\'];
                }
            }
    
        }
    
    } else {
        echo \'You need to sign in first!\';
    }
    
    简而言之:我们确保用户已登录,我们获得当前登录客户去年的所有订单,我们循环查看订单,看看他们是否购买了我们正在寻找的特定商品。之后,您可以使用$customer\\u Buyed数组检查他们是否购买了产品,如下所示:

    if(in_array(81, $customer_bought)) {
        echo \'You bought the item #81 in the last 365 days, so you will get these links...\';
    }
    
    if(in_array(82, $customer_bought)) {
        echo \'You bought the item #82 in the last 365 days, so you will get these links...\';
    }
    
    资料来源:http://woahcommerce.com/2015/06/check-if-user-bought-a-specific-woocommerce-product/

    结束

    相关推荐

    如何在loop_end之后将内容插入wp_head

    我正在尝试访问帖子上的信息,这样我就可以获得帖子标题和帖子内容,这样我就可以生成相应的OG标签,放在标题中。问题是该信息仅在loop\\u结束后可用。在那个动作发生后,我怎样才能插入头部呢?编辑:下面是正在使用的代码<?php /** * *snip* * standard plugin info * *snip* */ $jobTitle =\"\"; $jobDescription =\"\"; func