如何在产品页面上显示下载链接?

时间:2018-08-29 17:13:53

标签: php wordpress woocommerce

如何在单个产品页面上显示下载链接。

此代码用于获取下载链接,但不安全,并且带有路径。

$downloads = $product->get_files();
foreach( $downloads as $key => $each_download ) {
    echo '<a href="'.$each_download["file"].'">Download</a>';
}

现在我该如何获得与woocommerce完全一样的链接而没有路径?

2 个答案:

答案 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>';
            }
        }
    }

}