This is a common problem in Woocommerce that if you have a downloadable product and when customer buy it, on the last step of 'CHECKOUT' when the download link appears, on clicking that link the product download page open in the same tab making the customer leave the site totally. This specially happens when you host your download files in external file hosts like Google Drive, Mediafire, Mega etc. This is very bad for SEO and generates BAD RANKINGS. I was searching the net and I found this solution which I am going to share below. I have tested it on my site and it worked. As it doesn't depend on any theme, I think it will work on any website which uses Woocommerce and has this type of download feature.
And that's all. As this file will be in your Child-theme folder, it will not be affected with any change or update in WordPress. Hope this will help someone like me who is banging head on the wall or eating out nails or loosing hair by scratching head by thinking how to overcome this problem. Love you all.
Original source: https://stackoverflow.com/questions/67569200/how-to-open-downloadable-products-in-woocommerce-in-new-tab
Method:
Create 'order-downloads.php' file in 'your-child-theme/woocommerce/order/' folder (without quotes and replace 'your-child-theme' with your own WordPress child-theme name);
Copy and paste the following code in that 'order-downloads.php' file you have just created:
PHP:<?php /** * Order Downloads. * * This template can be overridden by copying it to yourtheme/woocommerce/order/order-downloads.php. * * HOWEVER, on occasion WooCommerce will need to update template files and you * (the theme developer) will need to copy the new files to your theme to * maintain compatibility. We try to do this as little as possible, but it does * happen. When this occurs the version of the template file will be bumped and * the readme will list any important changes. * * @see https://docs.woocommerce.com/document/template-structure/ * @package WooCommerce\Templates * @version 3.3.0 */ if ( ! defined( 'ABSPATH' ) ) { exit; } ?> <section class="woocommerce-order-downloads"> <?php if ( isset( $show_title ) ) : ?> <h2 class="woocommerce-order-downloads__title"><?php esc_html_e( 'Downloads', 'woocommerce' ); ?></h2> <?php endif; ?> <table class="woocommerce-table woocommerce-table--order-downloads shop_table shop_table_responsive order_details"> <thead> <tr> <?php foreach ( wc_get_account_downloads_columns() as $column_id => $column_name ) : ?> <th class="<?php echo esc_attr( $column_id ); ?>"><span class="nobr"><?php echo esc_html( $column_name ); ?></span></th> <?php endforeach; ?> </tr> </thead> <?php foreach ( $downloads as $download ) : ?> <tr> <?php foreach ( wc_get_account_downloads_columns() as $column_id => $column_name ) : ?> <td class="<?php echo esc_attr( $column_id ); ?>" data-title="<?php echo esc_attr( $column_name ); ?>"> <?php if ( has_action( 'woocommerce_account_downloads_column_' . $column_id ) ) { do_action( 'woocommerce_account_downloads_column_' . $column_id, $download ); } else { switch ( $column_id ) { case 'download-product': if ( $download['product_url'] ) { echo '<a href="' . esc_url( $download['product_url'] ) . '">' . esc_html( $download['product_name'] ) . '</a>'; } else { echo esc_html( $download['product_name'] ); } break; case 'download-file': echo '<a href="' . esc_url( $download['download_url'] ) . '" target="_blank" rel="noopener noreferrer" class="woocommerce-MyAccount-downloads-file button alt">' . esc_html( $download['download_name'] ) . '</a>'; break; case 'download-remaining': echo is_numeric( $download['downloads_remaining'] ) ? esc_html( $download['downloads_remaining'] ) : esc_html__( '∞', 'woocommerce' ); break; case 'download-expires': if ( ! empty( $download['access_expires'] ) ) { echo '<time datetime="' . esc_attr( date( 'Y-m-d', strtotime( $download['access_expires'] ) ) ) . '" title="' . esc_attr( strtotime( $download['access_expires'] ) ) . '">' . esc_html( date_i18n( get_option( 'date_format' ), strtotime( $download['access_expires'] ) ) ) . '</time>'; } else { esc_html_e( 'Never', 'woocommerce' ); } break; } } ?> </td> <?php endforeach; ?> </tr> <?php endforeach; ?> </table> </section>
Save the file and refresh your WordPress website.
And that's all. As this file will be in your Child-theme folder, it will not be affected with any change or update in WordPress. Hope this will help someone like me who is banging head on the wall or eating out nails or loosing hair by scratching head by thinking how to overcome this problem. Love you all.
Original source: https://stackoverflow.com/questions/67569200/how-to-open-downloadable-products-in-woocommerce-in-new-tab
Last edited: