Php 如何批量生成/授予WooCommerce的下载权限?

Php 如何批量生成/授予WooCommerce的下载权限?,php,mysql,wordpress,woocommerce,Php,Mysql,Wordpress,Woocommerce,我正处于这样的境地。我有一个可下载的产品,到目前为止已有3500多个客户购买。在更新可下载的产品时,显然我搞砸了,并且删除了对当前3500+客户端的访问,导致许多混乱的电子邮件。客户在其帐户购买中仍然显示为购买了数字产品 因此,我不顾一切地问,我如何批量生成/向已经购买了我的可下载产品的客户授予WooCommerce的下载权限 我正在考虑一个SQL查询,但不确定我需要移动什么以及移动到哪里?更困难的是,我只需要向特定产品的客户授予权限 @Tyree B.希望您已解决此问题,如果是,请在此处共享,

我正处于这样的境地。我有一个可下载的产品,到目前为止已有3500多个客户购买。在更新可下载的产品时,显然我搞砸了,并且删除了对当前3500+客户端的访问,导致许多混乱的电子邮件。客户在其帐户购买中仍然显示为购买了数字产品

因此,我不顾一切地问,我如何批量生成/向已经购买了我的可下载产品的客户授予WooCommerce的下载权限


我正在考虑一个SQL查询,但不确定我需要移动什么以及移动到哪里?更困难的是,我只需要向特定产品的客户授予权限

@Tyree B.希望您已解决此问题,如果是,请在此处共享,否则您可以按照以下解决方案进行操作:

  • 循环浏览所有用户,获取他们的订单(订单号),并使用wc_添加_订单_商品交易功能在现有订单中添加新的可下载产品(您还需要添加产品元,如数量、产品id等)

  • 遍历所有客户,为每个客户创建新订单(使用代码的礼品订单),并将产品添加到订单中。根据woocommerce规则/功能,所有用户都可以在下载链接下从其“我的帐户”自动下载产品


  • 希望能对您有所帮助。

    我想出了以下解决方案。您可以将此代码放到
    functions.php
    ,在后端或前端打开任何页面(以运行functions.php),然后注释或删除此代码。它不会影响已具有下载权限的订单

    add_action('init','my_activate_download_permissions');
    function my_activate_download_permissions() {
    
    $orders = get_posts( array(
        'post_type'      => 'shop_order',
        'post_status'    => 'wc-completed',
        'posts_per_page' => -1
    ) );
    
    foreach ( $orders as $order ) {
        wc_downloadable_product_permissions( $order->ID, false );
    }}
    

    Woocommerce()有一个插件增强程序,它有一个“重新生成批量权限下载”选项,您可以定期手动激活我们的插件

    不完全确定表、列或代码,但如果您拥有或可以收集订单id数组,则可能会很有用。@Ekin非常感谢您的回复。我有订单号。但是,我应该将ID放在代码中的什么位置?我应该把产品ID放在哪里?它能用吗?我启用了functions.php,但仍然没有看到任何效果!是的,它对我有用。这里是文档的链接。重要的是,您应该拥有所有现有的可供下载的文件。