Как я могу показать ссылку для скачивания на странице продукта? - PullRequest
0 голосов
/ 29 августа 2018

Как мне показать ссылку для скачивания на странице одного продукта.

Этот код предназначен для получения ссылки на скачивание, но не является безопасным и имеет путь.

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

Теперь, как я могу получить ссылку точно так же, как woocommerce без пути?

Ответы [ 2 ]

0 голосов
/ 29 августа 2018

здесь вы идете:

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 URL-адрес и с указанным выше кодом, мы распечатаем все купленные пользователем загружаемые продукты. ,

теперь, если вы хотите распечатать только текущую ссылку для загрузки продукта, вы можете использовать следующую функцию:

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

}
0 голосов
/ 29 августа 2018

Вы должны создать функцию, которая получит идентификатор этого файла вместо этого имени файла, или, что еще лучше, хэш этого идентификатора.

Затем эта функция запросит базу данных и вернет правильный файл.

Таким образом, ваша ссылка будет выглядеть так:

$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>';
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...