Александра Кузнецова

1

голосов
1

ответ
1.3k

Просмотры

Get custom order item metadata in Woocommerce 3

I am using Woocommerce latest version 3.4.2. How can I get some order item metadata and assign them a custom value? I get meta data with a common array $item_product_data_array. I need to get a certain value - (Additional modification for the product). And assign custom sku. Example: I have coffe - sku 1001, in array - key [0] Product coffe have additional modification - sugar (meta data) Need found "Sugar" and assign him custom sku - 50005. [label] => Optionally select [value] => Array ( [0] => Cinnamon [1] => Sugar [2] => Mint ) That is, this additive should be in one cycle as a price or quantity. All of them must treat their product with a value [0]. // Get product details $items = $order->get_items(); $sku = array(); $product_kol = array(); $product_price = array(); $item_product_meta_data_array = array(); foreach( $items as $key => $item){ $product_kol[] = $item['qty']; $product_price[] = $item['line_total']; $item_id = $item['product_id']; $product = wc_get_product($item_id); $sku[] = $product->get_sku(); $items_meta_data[] = $item->get_meta_data(); $meta_data1 = $item->get_meta('Sugar'); if( ! empty( $meta_data1 ) ) { $skus[] = "50005"; $item_quantities[] = "1"; } } // Product details for sending as one line to an external service foreach ($sku as $key => $value){ $data .= "&product[".$key."]=".$value.""; $data .= "&product_kol[".$key."]=".$product_kol[$key].""; $data .= "&product_price[".$key."]=".$product_price[$key].""; if(isset($product_mod[$key])) { $data .= "&product_mod[".$key."]=".$product_mod[$key].""; } } I think this will be useful stuff, since all the modules of additional options to the product add all the values to the meta data. And it is difficult to pull them out and include them in the desired cycle. So, we should get: //products sku $product[0] = "10000"; // Coffe $product[1] = "10001"; // Juice - second product for axample $product[2] = "50005"; // Sugar //products quantity $product_kol[0] = "1"; // Аmount of coffee $product_kol[1] = "1"; // Аmount of juice $product_kol[2] = "1"; // Аmount of sugar //Modifiers if they exist $product_mod[2] = "0"; //The product with key 2 is the product modifier with key 0
1

голосов
2

ответ
96

Просмотры

Получить пользовательский индекс позиции заказа и присвоить его значение параметров В WooCommerce

Я использую WooCommerce последнюю версию 3.4.2. В этом случае, мы собираем данные заказа: продукт и его добавку (я беру в мета-данных). Как присвоить индекс переменного $ SKUs [] = $ продукт-> get_sku (); как значение переменных $ product_mod [] = «»; $ Product_mod [1] = "0"; // продукт (ингредиент сахара) с ключом 1 является модификатор продукта с ключевыми 0. // Получить сведения о продукте $ SKUs = $ item_quantities = $ line_item_totals = $ product_mod = массив (); // Цикл, хотя элементы порядка Еогеасп ($ ПОРЯДКА> get_items () в $ item_id => $ п) {$ product_id = $ item-> get_product_id (); $ Продукт = $ item-> get_product (); $ Item_quantities [] = $ item-> get_quantity (); $ line_item_totals [] = $ item-> get_total (); $ SKUs [] = $ продукт-> get_sku (); $ Product_mod [] = NULL; $ Аи = $ item-> get_meta (» По желанию выбрать '); если (StrPos ($ аи, 'Cinnamon') == ложь!) {$ SKUs [] = '10001'; $ Item_quantities [] = '1'; $ line_item_totals [] = '50'; $ Product_mod [] = ''; } Если (! StrPos ($ ай, 'Sugar') == ложный) {$ SKUs [] = '10002'; $ Item_quantities [] = '1'; $ line_item_totals [] = '50'; $ Product_mod [] = ''; } Если (StrPos ($ ай, 'Mint') == ложь!) {$ SKUs [] = '10003'; $ Item_quantities [] = '1'; $ line_item_totals [] = '50'; $ Product_mod [] = ''; }} // Информация о продукте Foreach ($ SKUs как $ ключ => $ значение) {$ данных = "& product_sku [" $ ключ.. "] =" $ Значение ""...; $ Данных. = «&
1

голосов
1

ответ
130

Просмотры

Проверьте состояние последних незавершенных заказов в WooCommerce 3

Если есть опыт, скажите, пожалуйста, как это сделать, или план действий, чтобы идти в правильном направлении. Это необходимо для CRON, проверка состояния во внешней службе доставки (но это не имеет значения). Получить незавершенные заказы или поочередно получить один незавершенный заказ. Пример: Мы имеем 3-5 незавершенные заказы (за последние 24 часа). Я создаю некоторые функции для проверки состояния незавершенного заказа. Получить первый заказ, статус проверки, если состояние внешней службы изменяется, то изменить его в магазине. Действие завершено. Statuts для проверки: Hold On, обработка. Заинтересован в пункте 2. Я нашел аргумент здесь, может быть, он подходит: // Получить возврат в течение последних 24 часов. $ Арг = массив ( 'тип' => 'shop_order_refund', 'DATE_CREATED' => '>' (время () - DAY_IN_SECONDS).);
1

голосов
1

ответ
300

Просмотры

Replace a payment method title for an external shipping service in Woocommerce 3

Я использую WooCommerce и внешнюю службу доставки. У меня есть $ параметры значение [ «получки»], который может иметь строковое значение, которое может быть «Cash» или «Терминал». Я хотел бы заменить эти строки с номером, как: «Кэш» с 1 «Терминал» с 2. Вот мой фактический код, где я хотел бы сделать это: add_action ( «woocommerce_thankyou», «send_order_to_delivery»); Функция send_order_to_delivery ($ order_id) {// Получить экземпляр объекта WC_Order $ порядка = wc_get_order ($ order_id); $ Order_data = $ заказе запасного> get_data () $ параметр [ 'платить'] = $ order_data [ 'payment_method_title']; } Таким образом, параметр $ [ 'платить'] должно быть 1 или 2. Я попытался это: add_action ( 'woocommerce_thankyou', 'send_order_to_delivery'); Функция send_order_to_delivery ($ order_id) {// Получить экземпляр объекта WC_Order $ порядка = wc_get_order ($ order_id); $ Order_data = $ заказ запасного> get_data () $ параметр [ 'платить'] = $ payment_method_code; $ Payment_method_code = $ order_data [ 'payment_method_title']; $ Наличных = str_replace ( "Cash", "1", "$ payment_method_code"); $ Терминал = str_replace ( "Терминал", "2", "$ payment_method_code"); } Но выдает ошибку. Как я могу сделать это работает? Любая помощь приветствуется. $ Наличных = str_replace ( "Cash", "1", "$ payment_method_code"); $ Терминал = str_replace ( "Терминал", "2", "$ payment_method_code"); } Но выдает ошибку. Как я могу сделать это работает? Любая помощь приветствуется. $ Наличных = str_replace ( "Cash", "1", "$ payment_method_code"); $ Терминал = str_replace ( "Терминал", "2", "$ payment_method_code"); } Но выдает ошибку. Как я могу сделать это работает? Любая помощь приветствуется.
1

голосов
1

ответ
288

Просмотры

Редактирования администратора пользовательских счетов полей проблемы ошибки в WooCommerce 3

У меня есть ошибка, расположенный в этом коде (который добавляет в порядок редактирования страниц редактируемых полей пользовательских биллинг): add_filter ( «woocommerce_admin_billing_fields», «order_admin_custom_fields»); Функция order_admin_custom_fields ($ поля) {глобальный $ theorder; $ поля [ 'billing_address_3'] = массив ( 'метка' => __ ( 'Home', 'WooCommerce'), 'значение' => get_post_meta ($ theorder-> get_id (), 'Дом', правда), «шоу '=> верно, 'wrapper_class'=> 'форма поля шириной', 'стиль'=> '',); $ поля [ 'billing_address_4'] = массив ( 'метка' => __ ( 'Вход', 'WooCommerce'), 'значение' => get_post_meta ($ theorder-> get_id (), 'Вход', правда), 'Шоу' => верно, 'wrapper_class' => 'форма поля шириной', 'стиль' => '',); $ поля [ 'billing_address_5'] = массив ( 'метка' => __ ( 'Floor', 'WooCommerce'), 'значение' => get_post_meta ($ theorder-> get_id (), 'пол', правда), «шоу '=> верно, 'wrapper_class'=> 'форма поля шириной', 'стиль'=> '',); вернуть $ поля; } Виновный строка: 'значение' => get_post_meta ($ theorder-> get_id (), 'Дом', правда), Отчет об ошибке: example.com [ср 4 июля 2:36:28 +2018] [ошибка] [ PID 148187] sapi_apache2.c (362): [клиент 37.146.123.6:33708] PHP Фатальная ошибка: ошибка Uncaught: сохранить (951, Object (WP_Post)) \ п # 5 /home/c/cb36070/example.com/public_html/wp-includes/class-wp-hook.php(310): WP_Hook-> apply_filters (NULL, массив) \ п # 6 / дома / с / cb360 в /home/c/cb36070/example.com/public_html/wp-content/themes/theme-name/functions.php на линии 607 Но мне нужно, чтобы получить сохраненные значения для тех, пользовательские биллинги поле. Как я могу решить эту проблему ошибки и получить собственные значения счетов полей? Добавил (сохранены) метаданные сделаны с этим кодом: add_action ( «woocommerce_checkout_update_order_meta», «custom_checkout_field_update_order_meta»); Функция custom_checkout_field_update_order_meta ($ order_id) {если (пусто ($ _POST [ 'billing_address_3'])) {update_post_meta ($ order_id, 'Home', sanitize_text_field ($ _POST [ 'billing_address_3'])); } Если (! Пусто ($ _POST [» billing_address_4 '])) {update_post_meta ($ order_id, 'Вход', sanitize_text_field ($ _POST [' billing_address_4' ])); } Если {update_post_meta ($ order_id, 'Floor', sanitize_text_field ($ _POST [ 'billing_address_5'])) (пусто ($ _POST [ 'billing_address_5'])!); }} Любая помощь приветствуется.
1

голосов
1

ответ
107

Просмотры

Сохранение динамического глобального значения, связанные с заказами WooCommerce в базе данных

Основная задача состоит в том, чтобы сохранить значение в общем хранилище метаданных. Тогда можно получить на любой созданной странице. Что в коде: Мы получаем сумму заказа Получить 5% от суммы заказа Получить сохраненную сумму из общих метаданных. Добавить в сохраненном размере 5% от нового порядка. Сохранить общую сумму в метаданных. Мой реальный код: // Получить ежедневные идентификаторы заказов, чтобы проверить функцию get_order_ids_to_check () {глобальный $ wpdb; вернуть $ wpdb-> get_col ( "SELECT p.ID FROM {$ wpdb-> префиксов} сообщения в р WHERE p.post_type LIKE 'shop_order' И p.post_status IN ( 'туалет на удержании', 'туалет обработки' ) И UNIX_TIMESTAMP (p.post_date)> = (UNIX_TIMESTAMP (NOW ()) - 86400) "); } Функция send_daily_orders_to_delivery () {// Цикл через каждый заказ Ids Еогеасп (get_order_ids_to_check (), как $ order_id) {// Получить экземпляр объекта WC_Order $ = wc_get_order порядка ($ order_id); // Получить заказ в общей сложности $ order_total = $ заказе запасного> get_total (); $ Секрет = ''; // Секретный ключ должен быть установлен $ данных = '& секрет =' $ секрет '& order_id =' get_post_meta ($ order_id, 'delivery_order_id', правда)...; $ Ч = curl_init (); curl_setopt ($ ч, CURLOPT_URL, "https://app.example.com/api/index.php?get_status"); curl_setopt ($ ч, CURLOPT_FAILONERROR, 1); curl_setopt ($ ч, CURLOPT_RETURNTRANSFER, 1); curl_setopt ($ ч, CURLOPT_SSL_VERIFYPEER, ложь); curl_setopt ($ ч, CURLOPT_SSL_VERIFYHOST, ложь); curl_setopt ($ ч, CURLOPT_TIMEOUT, 30); curl_setopt ($ ч, CURLOPT_POST, 1); curl_setopt ($ ч, CURLOPT_POSTFIELDS, $ данных); $ Результат = curl_exec ($ ч); curl_close ($ ч); $ Декодируется = (массив) json_decode ($ результат); // Обновление статуса заказа, если (Исеть ($ декодируются [ 'результат']) && $ декодированного [ 'результат'] == 'успех' && Исеть ($ декодируются [ 'статус']) &&! Пустой ($ декодированного [ 'статус '])) {если ($ декодируются [' статус] == "завершено") $ заказ запасного> update_status ( 'туалет завершенной'); // Получить $ update_total общей суммы в процентах от метаданных $ saving_total = // нужно код // Получить 5 процентов от общей суммы порядка $ процентов = 5; $ Percent_total = ($ процента / 100) * $ order_total; // Получаем сумму чисел для обновления значения в базе данных $ update_total = $ saving_total + $ percent_total; // Это значение должно быть перезаписаны в базе данных // Сохранить $ update_total общую сумму в процентах к метаданным (General метаданных, которые могут быть вызваны на любой странице, созданной) update_post_meta (); // Необходимо код}}} // Это значение должно быть перезаписаны в базе данных // Сохранить $ update_total общую сумму в процентах к метаданным (General метаданных, которые могут быть вызваны на любой странице, созданной) update_post_meta (); // Необходимо код}}} // Это значение должно быть перезаписаны в базе данных // Сохранить $ update_total общую сумму в процентах к метаданным (General метаданных, которые могут быть вызваны на любой странице, созданной) update_post_meta (); // Необходимо код}}}
1

голосов
2

ответ
107

Просмотры

Добавить дополнительное сообщение на «спасибо» страницу в WooCommerce 3

Требуется добавить пользовательское сообщение после того, как «Спасибо. Ваш заказ был получен.». Переменная была добавлена ​​к моему сообщению. Он содержит процент от общего объема заказа. Следующий код работает, но я не уверен в этом: add_filter ( 'woocommerce_thankyou_order_received_text', 'woo_change_order_received_text', 10, 2); Функция woo_change_order_received_text ($ ул, $ заказать) {// Получить заказ общего $ order_total = $ заказ запасного> get_total (); $ Процентов = get_option ( 'туалет-заказ процентов'); // Процент $ order_saving = (поплавок) ($ процентов * $ order_total / 100); // Бонус сумма $ new_str = $ ул. "Вы участвуете в бонусной программе, ваш бонус интерес от этого заказа. $ Order_saving. 'евро. Подробнее о бонусной программе ". вернуть $ new_str; } Это лучший способ сделать это? Как я могу улучшить мой код?
1

голосов
1

ответ
162

Просмотры

Удалите «Нет товаров найдено» из категории конкретных продуктов в WooCommerce

Как удалить сообщение «Нет товаров не найдено» из одной страницы категории? Я пробовал различные варианты кода ниже, но это не сработало. add_action ( 'инициализации', 'remove_woocommerce_no_products_found'); Функция remove_woocommerce_no_products_found () {если (is_product_category ( 'имя-страницы')) {remove_action ( 'woocommerce_no_products_found', 'action_woocommerce_no_products_found'); }}
1

голосов
1

ответ
61

Просмотры

Добавить конкретный атрибут и значение для ввода и этикетки HTML-тегов в WooCommerce

Я пытаюсь добавить стиль, в зависимости от того, нажата флажок. Этот код отсутствует «ID» и «для» для ввода и этикеток (строка 11). Логическое решение добавить генерацию чисел. Как правильно это сделать? Еогеасп ($ выбор как $ выбора) {$ атр = ''; $ Key_val = взорваться ( "|", $ выбор); / * Это должно быть два элемента (значение => Label), в противном случае не продолжить * / если (количество ($ key_val) == 2) {если (in_array (обрезки ($ key_val [0]), по умолчанию $) ) {$ атр = 'проверил'; } / * Для администратора области, мы не нуждаемся в обертке * / $ HTML = (($ _ptype = "wccaf") '!?': '').. ''. esc_attr (облицовка ($ key_val [1])). ''. (! ($ _Ptype = "wccaf") '': ''?); }}
1

голосов
1

ответ
0

Просмотры

Пользовательская сортировка категорий на домашней странице в WooCommerce 3 Storefront темы

Я показываю список категорий на главной странице. Мне нужна последняя категория, чтобы быть вторыми. Я изучил варианты сортировки, но они не подходят. По имени, по идентификатору, случайным образом. Сategory с идентификатором «50» должен быть вторыми в списке. add_filter ( 'storefront_product_categories_args', 'custom_storefront_product_categories'); Функция custom_storefront_product_categories ($ арг) {$ арг [ 'предел'] = 9; $ арг [ 'столбцов'] = 3; $ арг [ 'OrderBy'] = 'ID'; // сортировать по идентификатору категории возвратных $ аргументов; } EDIT: Я пытался добавить категории продукции сортируется идентификаторы с помощью: функции custom_storefront_category_filtering ($ арг) {$ арг [ 'IdS'] = '16, 50,17,18,19,20,21,22,23' ; // нужна такая последовательность категорий возврата $ арг; } Add_filter (» storefront_product_categories_shortcode_args', 'custom_storefront_category_filtering'); Но включать только категории продуктов.
3

голосов
2

ответ
209

Просмотры

Как добавить пользовательские поля к форме комментариев в WordPress / WooCommerce 3+

Я пытаюсь добавить поле «Phone» в продукте Комментарии (WooComerce 3+). * Для незарегистрированных пользователей тоже (гостей). Номер телефона должен быть виден только администратором в панели администратора. На внешнем интерфейсе, номер телефона необходим в качестве обязательной части для того, чтобы оставить отзыв. Я пытаюсь этот код, но это не работает: функция true_phone_number_field ($ полей) {$ полей [ «телефон»] = «Телефон»; } add_filter ( 'comment_form_default_fields', 'true_phone_number_field');
2

голосов
2

ответ
158

Просмотры

Как добавить пользовательские поля к форме комментариев в WooCommerce 3+

Я пытаюсь добавить поле «Phone» в продукте Комментарии (WooComerce 3+). * Для незарегистрированных пользователей тоже (гостей). Номер телефона должен быть виден только администратором в панели администратора. На внешнем интерфейсе, номер телефона необходим в качестве обязательной части для того, чтобы оставить отзыв. Я пытаюсь этот код, но это не работает: функция true_phone_number_field ($ полей) {$ полей [ «телефон»] = «Телефон»; } add_filter ( 'comment_form_default_fields', 'true_phone_number_field');
1

голосов
2

ответ
372

Просмотры

Проверьте наличие элемента порядка мета значения данных в WooCommerce 3

Я использую WooCommerce последнюю версию 3.4.2. Плагин: «Филдс завод» или «WooCommerce Пользовательские Аддоны продукта». Как сделать проверку значения в мета-данных? Я прочитал официальную документацию в течение длительного времени и не смог найти решение. Пример: У меня есть собственные значения в массиве. И я хочу сделать проверку - если есть значение «сахара», то ... Мета $ ключ - «При необходимости выберите» $ custom_meta = $ item-> get_meta ( «При необходимости выберите»); // Показать все значения Еогеаспа ($> get_items заказа запасных () как $ item_id => $ п) {$ SKUs [] = $ продукт-> get_sku (); // Здесь необходимо добавить проверку и формиата мета значение} Я хочу, чтобы достичь этого: $ SKUs [] = // если $ custom_meta имеют значение «сахар», я даю cusom значение $ SKUs [] = «50000»
0

голосов
0

ответ
13

Просмотры

Добавление пользовательских полей в форме комментариев в WooCommerce 3

Я пытаюсь добавить поле «Phone» в продукте Комментарии (Woocomerce 3+). Я пытаюсь этот код, но это не работает: функция true_phone_number_field ($ полей) {$ полей [ «телефон»] = «Телефон»; add_filter ( 'comment_form_default_fields', 'true_phone_number_field');
2

голосов
2

ответ
270

Просмотры

Исключить динамическое значение из кэша с Wordpress Super Cache

Я использую плагин Super Cache. Некоторое время я искал решение, но безуспешно. Мне нужно отключить кэш для одной функции в файл functions.php. add_shortcode ( 'custom_counter', 'example_shortcode'); Функция example_shortcode () {// Получить заказ счетчика вариант значение $ COUNTER = get_option ( 'туалет-настраиваемого-счетчик'); вернуть '' . $ Прилавок. ' тереть.'; } Это шорткод используется на созданной пользовательской странице. Это необходимо, чтобы выходные данные этого шорткод не попадет в кэш страницы.
1

голосов
2

ответ
68

Просмотры

How to create a status check on a schedule? API Woocommerce 3+

После отправки заказа на внешнюю службу доставки, я хочу, чтобы настроить проверку его статуса. И если его статус изменился, то изменить его в WooCommerce. Я настроил отправку данных заказа на внешнюю службу доставки. add_action ( 'woocommerce_thankyou', 'send_order_to_shiping'); Функция send_order_to_shiping ($ order_id) {$ заказать = wc_get_order ($ order_id); $ Order_data = $ заказ запасного> get_data (); // Получить детали заказа $ Parametr [ 'sale_amount'] = $ order_data [ 'discount_total']; $ Parametr [ 'улица'] = $ order_data [ 'биллинг'] [ 'ADDRESS_1']; $ Parametr [ 'домой'] = $ order_data [ 'биллинг'] [ 'address_2']; $ Order_id = $ order_data [ 'ID']; Еогеасп ($ Parametr, как $ ключ => $ значение) {$ данных. = "¶metr [". $ ключ. "] =". $ Значение «». } // Передача данных $ CH = curl_init (); curl_setopt ($ ч, CURLOPT_URL, "https://app.example.com/api/index.php?new_order"); curl_setopt ($ ч, CURLOPT_FAILONERROR, 1); curl_setopt ($ ч, CURLOPT_RETURNTRANSFER, 1); curl_setopt ($ ч, CURLOPT_SSL_VERIFYPEER, ложь); curl_setopt ($ ч, CURLOPT_SSL_VERIFYHOST, ложь); curl_setopt ($ ч, CURLOPT_TIMEOUT, 30); curl_setopt ($ ч, CURLOPT_POST, 1); curl_setopt ($ ч, CURLOPT_POSTFIELDS, $ данных); $ Результат = curl_exec ($ ч); curl_close ($ ч); Эхо $ результат; } При отправке заказа (пример ID 555) я получаю ответ эха $ результата id_order от ;: службы доставки - 7273896. эхо $ результата; шоу: { "результат": "Успех", "order_id": 7273896, "ORDER_NUMBER": 10} Так что я идентификатор заказа в WooCommerce - 555,
1

голосов
2

ответ
221

Просмотры

Способ оплаты не требуется для выбора WooCommerce 3

Способ оплаты не требуется для выбора. То есть, изменение «выберите» в «флажок» на кассе странице. И заказ можно сделать даже если способ оплаты не выбран. Я подозреваю, что это не достаточно, так как возможно, это вызовет ошибку или проблему, если вы не выбираете способ оплаты. Поэтому я хочу, чтобы добавить возможность создавать заказ без выбора способов оплаты. И, соответственно, система должна понять, что для того, необходимо присвоить статус, например, «On Hold». сор-контента \ Plugins \ WooCommerce \ Шаблоны \ Checkout \ платежно-method.php
2

голосов
2

ответ
287

Просмотры

Добавление пользовательских метаданных для редактирования страниц порядка админ в WooCommerce 3

Когда я отправляю заказ на внешнюю службу доставки (API), я получаю ответ: $ delivery_order_id = «100678». В этом вопросе, эти данные сохраняются в метаданных. Как отобразить это значение в панели администратора WooCommerce?
2

голосов
2

ответ
128

Просмотры

Store a dynamic value for a custom Woocommerce plugin

Я читал различные статьи, но они описывают несколько других вещей. Я не хочу, чтобы сделать неправильный код слишком много места. В модуле будет один единственное значение, которое может быть изменено в панели администратора и других посторонних функций. Как правильно создать базу данных для значения этого окна в плагине? Я нашел в документации, но у меня нет достаточно опыта, чтобы сократить избыток, если она есть. Мой код /plugins/custom-counter/custom-counter.php / * Plugin Name: Пользовательский счетчик Plugin URI: https://example.com Описание: Этот плагин добавляет счетчик. Автор: Кузнецов Александр Автор URI: https://example.com * / // Крючок для добавления администратора Инфа add_action ( 'admin_menu', 'custom_counter_menu'); // Функция действия для выше крюка функции custom_counter_menu () {// Добавить подменю в меню WooCommerce: add_submenu_page (» WooCommerce», 'Пользовательский счетчик', 'Пользовательский счетчик', 'администратор', 'на заказ счетчик', 'custom_counter_page'); } // custom_counter_page () отображает функцию содержимого страницы custom_counter_page () {?> Пользовательский счетчик общего счетчика
2

голосов
1

ответ
78

Просмотры

Add some meta data values in a clean table for new order emails in Woocommerce 3

В файле функции, я создал код. Задача: добавить данные о заказах на оповещение по электронной почте. Там нет регистрации на сайте. Я хочу сделать это в виде таблицы с чертом. Я нашел подобный вопрос. Но в нем все данные берутся из метаданных модуля. И у меня есть метаданные и информация по умолчанию вместе. Не нужно писать все HTML. Просто толкнуть меня в правильном направлении, как правильно писать свои данные. add_filter ( 'woocommerce_email_order_meta_fields', 'custom_woocommerce_email_order_meta_fields', 10, 3); Функция custom_woocommerce_email_order_meta_fields ($ поля, $ $ sent_to_admin, порядка) {$ полей [ 'billing_first_name'] = массив ( 'Метка' => __ ( 'Name'), 'значение' => $ заказе запасного> get_billing_first_name (),); $ поля [ 'billing_phone'] = массив ( 'метка' => __ ( 'Телефон'), 'значение' => $ заказ запасных> get_billing_phone ()); $ поля [ 'billing_address_1'] = массив ( 'метка' => __ ( 'Street'), 'значение' => $ заказ запасной> get_billing_address_1 ()); $ поля [ 'billing_address_2'] = массив ( 'метка' => __ ( 'Сложение'), 'значение' => $ заказ запасной> get_billing_address_2 ()); $ поля [ 'billing_address_3'] = массив ( 'метка' => __ ( 'Квартира'), 'значения' => get_post_meta ($ заказ запасного> ID, 'квартиры', правда),); $ полей [ 'billing_address_4'] = массив ( 'Метка' => __ ( 'этаж'), 'значение' => get_post_meta ($ заказе запасного> ID, 'пол', правда),); $ поля [ 'billing_address_5'] = массив ( 'метка' => __ ( 'Вход'), 'значение' => get_post_meta ($ заказе запасного> ID, 'вход', правда),); $ полеев [ 'CUSTOMER_MESSAGE'] = массив ( 'Метка' => __ ( 'Примечание'), 'значение' => $ заказ запасных> CUSTOMER_MESSAGE,); вернуть $ поля; }
3

голосов
2

ответ
138

Просмотры

Custom templates in Woocommerce 3

Я пытаюсь сделать отдельный шаблон только для одного продукта с ID 5555. Чтобы удалить фотографию из своей страницы и изменить структуру блоков. Игнорирование этого файла влияет на все страницы продукта. сор-контент \ Plugins \ WooCommerce \ Шаблоны \ Содержание однозначных product.php Логическое решения добавить условие: если одна страница prpduct продукта имеет ID 5555, то другой шаблон используется для его страницы. Я попробовал этот вариант, но он не работает. / ** * Пользовательские один шаблон продукта. * / Add_filter ( 'single_template', 'get_custom_post_type_template'); Функция get_custom_post_type_template ($ single_template) {глобальный $ пост; если ($ post-> post_type == 'продукт') {$ single_template = имя_директории (__FILE__). '/Single-template.php'; } Вернуть $ single_template; } Add_filter ( 'template_include', 'Portfolio_page_template', 99); Функция portfolio_page_template ($ шаблон) {если (is_page ( 'пули')) {$ new_template = locate_template (массив ( 'сингл-template.php')); (! '' = $ New_template) если {вернуть $ new_template; }} Вернуть $ шаблон; } Или вариант 2: удалить этот крючки: remove_action ( 'woocommerce_before_single_product_summary', 'woocommerce_show_product_images', 20); remove_action ( 'woocommerce_after_single_product_summary', 'woocommerce_output_related_products', 20); только от одной конкретной страницы продукта: (! '' = $ New_template) если {вернуть $ new_template; }} Вернуть $ шаблон; } Или вариант 2: удалить этот крючки: remove_action ( 'woocommerce_before_single_product_summary', 'woocommerce_show_product_images', 20); remove_action ( 'woocommerce_after_single_product_summary', 'woocommerce_output_related_products', 20); только от одной конкретной страницы продукта: (! '' = $ New_template) если {вернуть $ new_template; }} Вернуть $ шаблон; } Или вариант 2: удалить этот крючки: remove_action ( 'woocommerce_before_single_product_summary', 'woocommerce_show_product_images', 20); remove_action ( 'woocommerce_after_single_product_summary', 'woocommerce_output_related_products', 20); только от одной конкретной страницы продукта:
3

голосов
1

ответ
61

Просмотры

Сохранить полученные данные в порядке от внешней службы доставки в WooCommerce 3

Как сохранить идентификатор заказа от службы доставки в метаданных? add_action ( 'woocommerce_thankyou', 'send_order_to_delivery'); Функция send_order_to_delivery ($ order_id) {// Отправляет данные $ ч = curl_init (); curl_setopt ($ ч, CURLOPT_URL, "https://app.axample.com/api/index.php?new_order"); curl_setopt ($ ч, CURLOPT_FAILONERROR, 1); curl_setopt ($ ч, CURLOPT_RETURNTRANSFER, 1); curl_setopt ($ ч, CURLOPT_SSL_VERIFYPEER, ложь); curl_setopt ($ ч, CURLOPT_SSL_VERIFYHOST, ложь); curl_setopt ($ ч, CURLOPT_TIMEOUT, 30); curl_setopt ($ ч, CURLOPT_POST, 1); curl_setopt ($ ч, CURLOPT_POSTFIELDS, $ данных); $ Результат = curl_exec ($ ч); curl_close ($ ч); $ = JSON '$ результат'; $ Delivery_order_id = json_decode ($ JSON) -> order_id; если (! пусто ($ _POST [ 'delivery_order_id'])) {update_post_meta ($ order_id, 'delivery_order_id', sanitize_text_field ($ _POST [ 'delivery_order_id'])); }} Когда я отправляю заказ на внешнюю службу доставки, я получаю ответ эхо $ результат; - { "результат": "Успех", "order_id": 100888, "ORDER_NUMBER": 10} нужно сохранить "ORDER_ID": 100888for этого нового порядка.