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

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Гость
 Woocommerce: фильтрация загрузок внутри заказа по значению метаданных

Сообщение Гость »


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

Однако мне нужно отфильтровать доступные загрузки в соответствии с выбором, который пользователь сделает при добавлении в корзину. Эти параметры необходимо сохранить, чтобы фильтровать загрузки, доступные клиентам, в соответствии с выбранными параметрами. Поэтому сравнение имени загружаемого файла со строками в массиве должно помочь.

Пример: Загружаемый продукт содержит загружаемые файлы под названием Вес 1, Вес 2, Вес 3 и т. д. Пользователь выбирает Вес 1 и Вес 3 при добавлении в корзину. Пользователь получает только файлы с именами Вес 1 и Вес 3.

На данный момент эти выборки успешно сохраняются в метаданных элемента продукта в виде массива строк. Использование следующих функций внутри functions.php:

// сохраняем выбранные веса в мета для мини-корзины add_filter('woocommerce_add_cart_item_data', 'save_font_weights', 10, 3); функция save_font_weights($cart_item_data, $product_id, $variation_id) { $fw = $_POST['font_weights']; если( !пустой($fw)) { $cart_item_data['selected_font_weights'] = $fw; // утверждение ниже убедитесь, что каждое действие добавления в корзину является уникальной позицией $cart_item_data['unique_key'] = md5(microtime().rand()); WC()->session->set('session_fw', $fw); } вернуть $cart_item_data; } // выводим значение пользовательского товара на страницах корзины и оформления заказа add_filter('woocommerce_get_item_data', 'output_font_weights', 10, 2); функция output_font_weights($cart_data, $cart_item) { if( isset($cart_item['selected_font_weights'] )) { $cart_data[] = массив( 'key' => __('Выбранные веса', 'woocommerce'), 'value' => $cart_item['selected_font_weights'], 'display' => $cart_item['selected_font_weights'], ); } вернуть $cart_data; } // сохраняем пользовательские метаданные элемента корзины как метаданные элемента заказа и отображаем их повсюду в заказах и уведомлениях по электронной почте. add_action( 'woocommerce_checkout_create_order_line_item', 'save_weights_to_order', 10, 4); function save_weights_to_order($item, $cart_item_key, $values, $order) { if( isset($values['selected_font_weights']) && ! пустой($values['selected_font_weights'])) ) { $item->update_meta_data('Выбранные веса', $values['selected_font_weights']); } $product_id = $item['product_id']; $w = get_post_meta($product_id, 'selected_font_weights', true); wc_add_order_item_meta($item, 'Выбранные веса', $w, true); } Таким образом, данные доступны вплоть до страницы «Заказ получен». Сейчас я пытаюсь отфильтровать загрузки, доступные на этой странице, в электронной почте и т. д. в соответствии с Есть ли возможность фильтровать загрузки путем сравнения имени файла со строками, перечисленными внутри массива?
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ, комментарий, отзыв

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Php»