Как можно добавить дополнительное поле для скачиваемого файла Woocommerce?

Ссылка скопирована
1 ответ

Здравствуйте. Возник такой вопрос, как можно добавить дополнительное поле для скачиваемого файла Woocommerce? В интернете к сожалению почему то не смог найти ни решение, ни какого то плагина для этого. Может кто то раньше сталкивался с такой задачей? Отправляю скрин куда нужно добавить кастомное поле

Как можно добавить дополнительное поле для скачиваемого файла Woocommerce?

Дополнительно:

Произвольные поля. И мануалов и самых разных плагинов (от общего применения до конкретно для woo) - пруд пруди.

  • Refguser, Да, но никакой вариант не добавляет поле туда где указано на скрине.
  • Bearax, строго говоря, добавить поле и размесить вывод этого поля там где хочется - две разные задачи. Вторая, если нет простого решения (верстальщик формы не предусмотрел нужных (кому нужных?) хуков и нет возможности переписать темплейт), можно решить при помощи простенького жабаскрипта. Я так в свое время двигал поля на странице профиля юзера.
  • Нужно решить такую задачу?

    Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

    Заказать помощь
    Лучший ответ
    1
    Ольга Сеть Ответ

    В WooCommerce скачиваемые файлы товара хранятся в meta-поле _downloadable_files как массив. Добавить дополнительное поле именно к каждой строке скачиваемого файла можно, но это уже не “галочка в настройках”, а кастомизация админки товара и сохранения данных.

    Самый устойчивый вариант — хранить дополнительные данные в отдельном meta-поле товара, привязывая их к ID файла загрузки. Например, WooCommerce у каждого download имеет ключ, и по нему можно сохранить описание, версию, язык, лицензию или другой параметр.

    Пример логики сохранения:

    add_action('woocommerce_admin_process_product_object', function ($product) {
        if (empty($_POST['my_download_extra']) || !is_array($_POST['my_download_extra'])) {
            return;
        }
     
        $clean = [];
        foreach ($_POST['my_download_extra'] as $download_id => $value) {
            $clean[sanitize_text_field($download_id)] = sanitize_text_field($value);
        }
     
        $product->update_meta_data('_my_download_extra', $clean);
    });

    add_action('woocommerce_admin_process_product_object', function ($product) { if (empty($_POST['my_download_extra']) || !is_array($_POST['my_download_extra'])) { return; } $clean = []; foreach ($_POST['my_download_extra'] as $download_id => $value) { $clean[sanitize_text_field($download_id)] = sanitize_text_field($value); } $product->update_meta_data('_my_download_extra', $clean); });

    Сложность в том, что поле нужно ещё аккуратно вывести в админке рядом с каждой строкой файла. Для этого обычно добавляют JS в экран редактирования товара или используют хуки WooCommerce, если нужная версия их поддерживает.

    Если задача проще — добавить общее поле к товару, не к каждому файлу, сделайте обычный product meta box или вкладку. Если поле должно влиять на доступ к скачиванию или выводиться покупателю, обязательно учитывайте права пользователя и не отдавайте закрытые данные напрямую через шаблон.

    Другие ответы (0)

    Пока нет других ответов. Будьте первым, кто поможет автору.

    Ответить на вопрос

    комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *

    Вам также может быть интересно