nabs_kk
Tengo una pregunta rápida sobre WooCommerce y los archivos descargables. Me gustaría hacer que los productos comprados se reproduzcan en la sección Mi cuenta en lugar de descargarlos fácilmente (exactamente lo contrario de cómo WooCommerce maneja los productos descargables/virtuales).
He logrado ubicar el código que maneja la vista de los “Productos Descargables” en la sección Mi Cuenta (templates/order/order-downloads.php), sin embargo no logro hacerlo funcionar, ya que el link da como resultado el “seguro versión”
https://ejemplo.com/?download_file=XXXX&order=wc_order_cSzbzLqustvlw&email=XXXXXXXX&key=XXXXX
En lugar de la URL de archivo amigable/no segura
Cambié esta línea para que funcione como código abreviado de audio; sin embargo, no se reproduce porque no obtiene la URL completa del archivo.
case 'download-file':
echo do_shortcode('%20)%20.%20'"]');
break;
Sé que no es el mejor enfoque para cambiar el código allí, sin embargo, solo quiero que funcione de manera que el cliente pueda reproducir el archivo, pero no puede descargarlo directamente. ¿Me pueden ayudar a lograr esto?
EDITAR
Con la ayuda de Martin Mirchev pude obtener lo siguiente:
case 'download-file':
$url_file = esc_url( $download['file']['file'] );
$address = explode(".", $url_file);
if ($address[2] == "mp3") {
echo "<div id='content' class="fancybox-hide" style="min-width:450px; min-height:250px;">";
echo do_shortcode('['file']%20)%20.%20'"]');
echo "</div>";
echo "<a href="#content" class="ari-fancybox">Listen to MP3</a>";
}
¿Habría la posibilidad de aplicar la misma personalización en WooCommerce en lugar de sobrescribir el archivo de plantilla?
No es necesario sobrescribir los archivos de plantilla, puede utilizar el woocommerce_account_downloads_column_{$column_id}
gancho de acción compuesto, donde $column_id
es descargar-archivo
Entonces obtienes:
function action_woocommerce_account_downloads_column_download_file( $download ) {
// Targeting view order pages only
if ( ! is_wc_endpoint_url( 'downloads' ) ) return;
// Getters
$url_file = esc_url( $download['file']['file'] );
$address = explode( ".", $url_file );
// Compare
if ( $address[2] == "mp3" ) {
echo "<div id='content' class="fancybox-hide" style="min-width:450px; min-height:250px;">";
echo do_shortcode( ''%20.%20$url_file%20.%20'' );
echo "</div>";
echo "<a href="#content" class="ari-fancybox">Listen to MP3</a>";
} else {
echo '<a href="'%20.%20esc_url(%20$download['download_url']%20)%20.%20'" class="woocommerce-MyAccount-downloads-file button alt">' . esc_html( $download['download_name'] ) . '</a>';
}
}
add_action( 'woocommerce_account_downloads_column_download-file', 'action_woocommerce_account_downloads_column_download_file', 10, 1 );
-
¡Gracias por esto!
– nabs_kk
18 abr a las 14:18
-
@nabs_kk, De nada. Puede aceptar esta respuesta si desea informar a otros que su problema está resuelto.
– 7uc1f3r
20 abr a las 8:40