WooCommerce我的帐户-下载:列出所有产品

弗格尼尔

在我的网站上,我仅提供虚拟产品,这就是为什么我要在我的帐户-下载视图中进行更改。

我正在使用以下代码。

function filter_woocommerce_customer_available_downloads($downloads, $customer_id) { 

    // Manipulate download data here, this example we'll get the first 5 downloads in the array
    // $downloads = array_slice($downloads, 0, 5);
 // Sorting the array by Order Ids in DESC order
        arsort($downloads); 

    // Return first five downloads
    return $downloads;

}; 
// Add the filter, this tells wordpress to apply this filter every time available downloads is called
add_filter( 'woocommerce_customer_available_downloads', 'filter_woocommerce_customer_available_downloads', 10, 2 );

/**
 * Group Downloadable products by product ID
 *
 * @param array $downloads
 * @return array
 */
function prefix_group_downloadable_products( array $downloads ) {
    $unique_downloads = [];

    foreach ($downloads as $download ) {
        $list = [
            'download_url' => $download['download_url'],
            'file_name'    => $download['file']['name'],
            'orderid'  => $download['order_id']
        ];


        if ( array_key_exists( $download['product_id'], $unique_downloads ) ) {
            $unique_downloads[ $download['product_id'] ]['list'][] = $list;
            continue;
        }



        $data = $download;
        $data['list'] = [ $list ];
        $unique_downloads[ $download['product_id'] ] = $data;
    }

    return $unique_downloads;
}

add_filter( 'woocommerce_customer_get_downloadable_products', 
'prefix_group_downloadable_products' );

/**
 * Show number list of downloadable files for group product
 *
 * @param array $download
 * @return void
 */

function prefix_downloads_column_download_file( array $download ) {


    $lists = $download['list'];

            // Sorting the array by Order Ids in DESC order
        arsort($lists); 

    if ( empty( $lists ) ) {
        _e( 'No Download Files', 'storefront' );
        return;
    }




    echo '<ul class="charliesub">';
    echo '<li class="accordion">';
    echo '<h3>' .  $order_date . '</h3>';
    echo '<div>';

     echo '<ol>';

    foreach ( $lists as $list ) {
    // Get $order object from order ID 
$order = wc_get_order( $list['orderid']  );

  $order_date = $order->get_date_completed();


         echo '<li>';
        echo '<a href="' . esc_url( $list['download_url'] ) . '" class="woocommerce-MyAccount-downloads-file">';
        echo esc_html( $list['file_name'] );
        echo '</a></li>';
    }

    echo '</ol>';
        echo '</div>';
        echo '</li>';
            echo '</ul>';

}

add_action( 'woocommerce_account_downloads_column_download-file', 'prefix_downloads_column_download_file' );

但是,订单的日期显示在每个下载链接上方

只需要所有链接上方放置一次日期即可(放置在<h3>标签中,就像我想要的一样)。

有人可以帮助我进一步进行调整吗?

7uc1f3r

在foreach循环中,您可以将值存储在变量中而不是打印(echo)。

在foreach之后,您可以打印变量

function filter_woocommerce_customer_available_downloads($downloads, $customer_id) { 
    // Manipulate download data here, this example we'll get the first 5 downloads in the array
    // $downloads = array_slice($downloads, 0, 5);
    // Sorting the array by Order Ids in DESC order
    arsort($downloads); 

    // Return first five downloads
    return $downloads;
}
add_filter( 'woocommerce_customer_available_downloads', 'filter_woocommerce_customer_available_downloads', 10, 2 );

/**
 * Group Downloadable products by product ID
 *
 * @param array $downloads
 * @return array
 */
function prefix_group_downloadable_products( array $downloads ) {
    $unique_downloads = [];

    foreach ($downloads as $download ) {
        $list = [
            'download_url' => $download['download_url'],
            'file_name'    => $download['file']['name'],
            'orderid'      => $download['order_id']
        ];

        if ( array_key_exists( $download['product_id'], $unique_downloads ) ) {
            $unique_downloads[ $download['product_id'] ]['list'][] = $list;
            continue;
        }

        $data = $download;
        $data['list'] = [ $list ];
        $unique_downloads[ $download['product_id'] ] = $data;
    }

    return $unique_downloads;
}
add_filter( 'woocommerce_customer_get_downloadable_products', 'prefix_group_downloadable_products', 10, 1 );

/**
 * Show number list of downloadable files for group product
 *
 * @param array $download
 * @return void
 */
function prefix_downloads_column_download_file( array $download ) {
    $lists = $download['list'];

    // Sorting the array by Order Ids in DESC order
    arsort($lists); 

    if ( empty( $lists ) ) {
        _e( 'No Download Files', 'storefront' );
        return;
    }

    // Set variable
    $li = '';

    foreach ( $lists as $list ) {
        // Get $order object from order ID 
        $order = wc_get_order( $list['orderid']  );

        $order_date = $order->get_date_completed();

        // Append to
        $li .= '<li><a href="' . esc_url( $list['download_url'] ) . '" class="woocommerce-MyAccount-downloads-file">' . esc_html( $list['file_name'] ) . '</a></li>';
    }

    echo '<ul class="charliesub">';
    echo '<li class="accordion">';
    echo '<h3>' .  $order_date . '</h3>';
    echo '<div>';
    echo '<ol>';

    echo $li;

    echo '</ol>';
    echo '</div>';
    echo '</li>';
    echo '</ul>';
}
add_action( 'woocommerce_account_downloads_column_download-file', 'prefix_downloads_column_download_file' );

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在 angular 4 中实现 woocommerce api 以列出所有产品

来自分类Dev

woocommerce所有产品尺寸的列表

来自分类Dev

Wordpress Woocommerce更改所有产品为缺货

来自分类Dev

通过WooCommerce按类别显示所有产品

来自分类Dev

获取woocommerce类别的所有产品ID

来自分类Dev

SQL查询从woocommerce中选择所有产品

来自分类Dev

我可以搜索搜索中的所有产品吗?

来自分类Dev

如何从当前的WooCommerce产品类别中获取所有产品?

来自分类Dev

显示为WooCommerce产品设置的所有产品属性的简码

来自分类Dev

从所有产品中获取 Woocommerce 中特定产品属性的术语名称数组

来自分类Dev

在 Woocommerce 中,如何查找某个产品是交叉销售的所有产品?

来自分类Dev

WooCommerce - 将所有产品标记为非特色产品

来自分类Dev

隐藏WooCommerce目录中具有特定库存状态的所有产品

来自分类Dev

从WooCommerce管理中的所有产品中删除销售价格

来自分类Dev

将所有产品价格提高一定比例Woocommerce

来自分类Dev

WooCommerce:返回特定类别中所有产品ID的函数

来自分类Dev

从WooCommerce管理中的所有产品中删除销售价格

来自分类Dev

如果未登录,WooCommerce 会隐藏某个类别的所有产品

来自分类Dev

在页面上显示 Woocommerce 中低于特定价格的所有产品

来自分类Dev

在 Woocommerce 存档页面中显示所有产品类型的库存可用性

来自分类Dev

我没有使用Scrapy获得所有产品描述数据

来自分类Dev

我的代码总是返回指定类别ID的所有产品

来自分类Dev

我如何从所有产品中获取制造商?

来自分类Dev

WooCommerce从购物车中删除所有产品,并将当前产品添加到购物车

来自分类Dev

WooCommerce从购物车中删除所有产品,并将当前产品添加到购物车

来自分类Dev

在1行SQL Server中列出所有产品

来自分类Dev

如何在“信任平台”中列出所有产品?

来自分类Dev

将所有产品价格提高一个百分比,包括 Woocommerce 的变化

来自分类Dev

如何使用代码模板中的特定标签过滤woocommerce网店中的所有产品?

Related 相关文章

  1. 1

    如何在 angular 4 中实现 woocommerce api 以列出所有产品

  2. 2

    woocommerce所有产品尺寸的列表

  3. 3

    Wordpress Woocommerce更改所有产品为缺货

  4. 4

    通过WooCommerce按类别显示所有产品

  5. 5

    获取woocommerce类别的所有产品ID

  6. 6

    SQL查询从woocommerce中选择所有产品

  7. 7

    我可以搜索搜索中的所有产品吗?

  8. 8

    如何从当前的WooCommerce产品类别中获取所有产品?

  9. 9

    显示为WooCommerce产品设置的所有产品属性的简码

  10. 10

    从所有产品中获取 Woocommerce 中特定产品属性的术语名称数组

  11. 11

    在 Woocommerce 中,如何查找某个产品是交叉销售的所有产品?

  12. 12

    WooCommerce - 将所有产品标记为非特色产品

  13. 13

    隐藏WooCommerce目录中具有特定库存状态的所有产品

  14. 14

    从WooCommerce管理中的所有产品中删除销售价格

  15. 15

    将所有产品价格提高一定比例Woocommerce

  16. 16

    WooCommerce:返回特定类别中所有产品ID的函数

  17. 17

    从WooCommerce管理中的所有产品中删除销售价格

  18. 18

    如果未登录,WooCommerce 会隐藏某个类别的所有产品

  19. 19

    在页面上显示 Woocommerce 中低于特定价格的所有产品

  20. 20

    在 Woocommerce 存档页面中显示所有产品类型的库存可用性

  21. 21

    我没有使用Scrapy获得所有产品描述数据

  22. 22

    我的代码总是返回指定类别ID的所有产品

  23. 23

    我如何从所有产品中获取制造商?

  24. 24

    WooCommerce从购物车中删除所有产品,并将当前产品添加到购物车

  25. 25

    WooCommerce从购物车中删除所有产品,并将当前产品添加到购物车

  26. 26

    在1行SQL Server中列出所有产品

  27. 27

    如何在“信任平台”中列出所有产品?

  28. 28

    将所有产品价格提高一个百分比,包括 Woocommerce 的变化

  29. 29

    如何使用代码模板中的特定标签过滤woocommerce网店中的所有产品?

热门标签

归档