Доступ к цифровым файлам
Выдача цифрового файла — отдельная часть магазина. Товар может быть опубликован, order — завершён, а download link — отсутствовать из-за неправильного вложения или permissions. Для «Полки» свяжем known Products с настоящими учебными файлами из архива и разберём путь доступа, не подменяя его общей публичной ссылкой Media Library.
После урока GRID-PDF получит grid-notes.txt, FORM-ZIP — архив небольшого HTML-примера, URL-TXT — памятку, а variations HTML-LAB — соответствующие Basic/Extended тексты. Настройка и загрузки при подготовке курса не выполнялись. Ожидаемые permissions и UI нужно подтвердить в вашей будущей локальной лаборатории.
Файл товара и публичная обложка
Обложка помогает понять предложение и обычно доступна публично. Продаваемый файл должен выдаваться по правилам заказа. Если загрузить TXT в обычную Media Library и вставить его прямой URL в Description, любой, кто получил адрес, сможет обойти учебный checkout. Hidden Product при этом не закроет сам URL.
Загрузите продаваемый файл через поле Downloadable files на экране Edit product. Для GRID-PDF выберите name «Конспект CSS Grid — учебный TXT» и локальный файл из downloads. В описании уже должно быть указано TXT, хотя SKU сохраняет прежнее имя. Правильное обещание связано с фактическим форматом, а не с техническим артикулом.
Для FORM-ZIP возьмите подготовленный downloads/form-template.zip, содержащий только form-template.html, затем загрузите его тем же способом. Можно самостоятельно упаковать этот HTML и сравнить состав. Внутри форма без серверной отправки, и кнопка имеет type button. Не добавляйте личные файлы или данные своего рабочего проекта, упаковывая папку целиком. Архив должен содержать только подготовленный учебный материал.
Basic/Extended привязываются внутри конкретной variation. Parent HTML-LAB не заменяет индивидуальные files детей. Если Extended получает html-basic.txt, UI выбора может быть технически правильным, но покупатель получит неправильное содержимое. Поэтому проверка download должна сопоставлять SKU, name и сам файл.
Метод выдачи определяет защиту
Откройте WooCommerce Settings → Products → Downloadable products. Для маленьких локальных files выбираем Force downloads. X-Accel-Redirect/X-Sendfile требует подходящей конфигурации web server; нельзя включить его только ради красивого названия. Redirect only раскрывает URL и не подходит нашему предполагаемому ограничению по заказу. Официальные свойства описаны в Digital/Downloadable Product Guide.
Force downloads передаёт файл через PHP и может иметь ограничения для больших files. Это учебный выбор для крошечных TXT/ZIP. Мы не измеряли скорость, memory usage и доступность в выбранном Docker image. Для реальных крупных материалов потребовались бы отдельные замеры и согласованная настройка хранения и сервера.
Сама папка woocommerce_uploads не является универсальным доказательством закрытости. Защита зависит от web server rules; например Nginx требует явного подходящего ограничения. В laboratory Compose выбрана Apache-линия, но фактическое поведение прямого URL всё равно нужно проверить при локальном запуске. Не пишите в релизе «прямой доступ невозможен», если такой запрос не проверен.
Approved download directories ограничивают допустимые источники. Если file rejected, проверьте разрешённый directory и method, а не отключайте общий контроль ради случайной ссылки. Наши sources локальные и известные, внешнего cloud storage нет. При добавлении remote URL нужно отдельно выяснить, что он возвращает и совместим ли с способом доставки.
Ограничения относятся к permissions
У товаров course limit равен три, expiry тридцать дней. Они описывают разрешённое количество и срок будущего доступа, а не защиту от копирования уже скачанного текста. Покупатель может сохранить файл после download. Нельзя обещать цифровое удаление материала с чужого устройства по окончании срока ссылки.
Разрешение появляется в связи с Order и выбранным результатом оплаты/исполнения. Если Grant access after payment включён, доступ может открыться уже при Processing. Без него ориентир другой. Для всех virtual/downloadable items success обычно приводит к Completed, но отсутствие file или permission всё ещё требует проверки. Status и physical delivery files — разные уровни.
На Order screen найдите Downloadable product permissions, если блок доступен через Screen Options вашей версии. Проверьте продукт, файл, email, оставшиеся downloads и expiry. Не нажимайте Regenerate permissions как универсальную первую помощь: текущая документация предупреждает, что это действие перестраивает permissions и может удалить связанные counts/logs. Сначала определите причину.
Например, link может содержать прежний billing email после его исправления. Или expiry уже закончилась. Или выбранная variation вообще не получила file. Такие случаи не одинаковы. Если просто выдать новый доступ без разбора, вы измените условия заказа и потеряете понимание, что именно сломалось.
Получение файла проверяется содержательно
После вашего локального Completed order ожидаются download links на доступных Woo screens и в соответствующих notifications. Guard mail не отправляет, поэтому получать настоящее письмо в inbox не нужно. Можно использовать Order received и позже My Account → Downloads. Полноценную email delivery эта серия не проверяет.
Скачайте GRID-PDF и сравните первые строки с downloads/grid-notes.txt. Затем выберите Extended и убедитесь, что файл содержит дополнительные задачи четыре и пять. Название link само по себе не подтверждает correct bytes: случайно привязанный Basic может называться «Extended» в UI. Маленькие известные fixtures позволяют увидеть такую несогласованность быстро.
После третьего успешного доступа изучите реакцию на новый download согласно actual counting текущей версии. Не описывайте поведение interrupted transfer универсально: механизмы подсчёта могут иметь дополнительные настройки. Для course contract важно установить, какие завершённые действия учитываются, и записать наблюдение после вашей проверки.
Исправление существующей file row и добавление новой file row также различаются для прежних покупателей. Текущая документация описывает обновление links при изменении existing download и отдельные rules для новых downloads. Поэтому замена учебного TXT настоящим PDF должна быть осмысленным изменением продукта, а не случайным удалением и повторным созданием строки.
Результат этого урока — известный файл связан с известным SKU, method и permissions объясняют доступ, а содержимое соответствует обещанию карточки. Примеры пока не исполнялись, поэтому ни один прямой URL или успешная загрузка не выданы за наблюдённые. Следующий шаг добавит скидку: она изменит сумму заказа, сохраняя прежний выбранный файл и правила его получения.