簡體   English   中英

WooCommerce 我的帳戶 - 下載:列出所有產品

[英]WooCommerce my account - downloads: listing all products

在我的網站上,我只提供虛擬產品,這就是我想在我的帳戶 - 下載視圖中進行更改的原因。

我正在使用以下代碼。

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>標簽中)。

有人可以幫助我進一步調整已經做出的調整嗎?

在 foreach 循環中,您可以將值存儲在變量中而不是打印(回顯)。

在 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' );

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM