如何在单个产品页面上显示下载链接。
此代码用于获取下载链接,但不安全,并且带有路径。
$downloads = $product->get_files();
foreach( $downloads as $key => $each_download ) {
echo '<a href="'.$each_download["file"].'">Download</a>';
}
现在我该如何获得与woocommerce完全一样的链接而没有路径?
答案 0 :(得分:0)
您必须创建一个函数,该函数将获取该文件的ID而不是该文件名,或者甚至是该ID的哈希。
然后该函数将查询数据库并返回正确的文件。
所以您的链接最终会像:
$downloads = $product->get_files();
foreach( $downloads as $key => $each_download ) {
echo '<a href="http://example.net/function_name/method_for_download/'.$each_download["id"].'">Download</a>';
}
答案 1 :(得分:0)
您去的地方:
add_action('woocommerce_after_add_to_cart_form', 'download_products');
function download_products()
{
$downloads = array();
$user_id = get_current_user_id();
$downloads = wc_get_customer_available_downloads($user_id);
if (!empty($downloads)) {
foreach ($downloads as $download) {
echo '<a href="' . $download['download_url'] . '">Download</a>';
}
}
}
一些解释:
我们在此处所做的操作使用了wc_get_customer_available_downloads
函数来检查当前用户是否有任何可用下载,如果是,我们将遍历它们和echo
网址,并使用上面的代码打印所有用户购买了可下载的产品链接。
现在,如果您只想打印当前的产品下载链接,则可以使用以下功能:
add_action('woocommerce_after_add_to_cart_form', 'download_products');
function download_products()
{
global $product;
$downloads = array();
$user_id = get_current_user_id();
$downloads = wc_get_customer_available_downloads($user_id);
if (!empty($downloads)) {
foreach ($downloads as $download) {
if ($download['product_id'] === $product->get_id()) {
echo '<a href="' . $download['download_url'] . '">Download</a>';
}
}
}
}