我有一个关于 WooCommerce 和可下载文件的简单问题。我想让购买的产品在“我的帐户”部分中播放,而不是轻松下载它们(与 WooCommerce 处理可下载/虚拟产品的方式完全相反)。
我已设法在“我的帐户”部分 (templates/order/order-downloads.php) 中找到处理“可下载产品”视图的代码,但是我无法使其工作,因为该链接会导致“安全”版本”
而不是友好/不安全的文件 URL
https://example.com//my-music.mp3 https://example.com//my-music.mp3
我已更改此行以使其作为音频短代码工作,但它无法播放,因为它没有获取完整的文件 URL。
case 'download-file':
echo do_shortcode('[audio src="' . esc_url( $download['download_url'] ) . '"]');
break;
我知道这不是更改代码的最佳方法,但我只想让它以客户可以播放文件但不能直接下载的方式工作。你能帮我实现这个目标吗?
EDIT
在...的帮助下马丁·米尔切夫 https://stackoverflow.com/users/13378498/martin-mirchev我能够得到以下信息:
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('[audio src="' . esc_url( $download['file']['file'] ) . '"]');
echo "</div>";
echo "<a href='#content' class='ari-fancybox'>Listen to MP3</a>";
}
是否有可能在 WooCommerce 中应用相同的自定义而不是覆盖模板文件?
无需覆盖模板文件,即可使用woocommerce_account_downloads_column_{$column_id}
复合动作钩子,其中$column_id
是下载文件
所以你得到:
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( '[audio src="' . $url_file . '"]' );
echo "</div>";
echo "<a href='#content' class='ari-fancybox'>Listen to MP3</a>";
} else {
echo '<a href="' . esc_url( $download['download_url'] ) . '" 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 );
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)