Можно ли получить доступ к настраиваемым полям для заказов, продуктов, клиентов через WooCommerce REST API? Если не изначально, то какие плагины, обходные пути или хаки существуют, которые работают? Спасибо!
Пользовательские поля WooCommerce REST API
Ответы (2)
Отвечая на мой собственный вопрос:
Это возможно с помощью следующего: (используя устаревший API версии 3)
Чтобы отправить настраиваемые поля обратно на сервер: (для заказов)
{
"order_meta": {
"key": "value"
}
}
Чтобы получить настраиваемые поля с сервера, используйте этот фильтр с вашей конечной точкой:
http://www.example.com/wc-api/v3/orders?filter[meta]=true
Это работает и для продуктов.
person
Amjad
schedule
08.04.2016
Можете ли вы указать документы, где это задокументировано. Я борюсь с той же проблемой и почти в тупике.
- person Ivan Crojach Karačić; 18.05.2016
Это не задокументировано на страницах WooCommerce API. Я получил ответ от их вопросов github. Это поле является скрытым метаполем. Если у вас есть конкретный вопрос, вы можете задать его здесь.
- person Amjad; 19.05.2016
У нас есть пользовательская таксономия
Status
, назначенная каждому продукту, который я хотел бы получить с помощью Rest API, но я не знаю, как построить строку запроса, чтобы вернуть данные.
- person Ivan Crojach Karačić; 20.05.2016
Это абсолютно так. Я широко использую его в своем приложении. Это зависит от того, какую версию API вы используете. Новый API v1 основан на WP API. Это означает, что родительского словаря нет.
- person Amjad; 16.07.2016
@HelloWorld, привет. Я пытаюсь обновить метаданные заказа через оболочку С# для Woocommerce, и мне просто интересно, что вы подразумеваете под родительским словарем. API не находит мои данные, а обертка не учитывает метаданные, так как они отсутствуют в документах.
- person Magnetize; 04.01.2017
@Magnetize вам пришлось взломать обертку, чтобы это заработало? Я пытаюсь получить доступ к данным платежного шлюза для заказа через WooCommerceNET.WooCommerce.
- person Daz; 06.01.2017
@Даз привет! Да, мне пришлось переопределить класс Order новым классом. Я сделал это следующим образом: github.com/XiaoFaye/WooCommerce.NET/issues/73< /а>. Какие данные вам нужны для доступа и какой платежный шлюз вы используете?
- person Magnetize; 07.01.2017
@Magnetize Спасибо за ответ, интересно, что API делает немного больше, чем задокументировано. Я хочу получить идентификаторы транзакций для платежа SagePay, на данный момент я предполагаю, что они есть в мета, но еще не подтвердил это.
- person Daz; 09.01.2017
@Даз без проблем. Создатель WooCommerceNET ответил в теме выше, что он добавит метаданные в следующем обновлении. Хм, когда я просматривал код в /plugins/woocoommerce/includes/api/class-wc-rest-orders-controller.php, я заметил (в строке 1055), что поля не должны быть защищены (т.е. не могут иметь имена с ведущими _ ) для того, чтобы API обновлял их, а идентификаторы транзакций имеют начальный символ _ Боюсь. Я не пробовал, хотя, но я думаю, что вы могли бы быть довольно сложной задачей. :/
- person Magnetize; 09.01.2017
@Magnetize Спасибо за предупреждение - вызов = нормальная ситуация :-)
- person Daz; 09.01.2017
Этот ответ работает как для продуктов, так и для заказов?
- person Warlike Chimpanzee; 17.06.2017
@WarlikeChimpanzee да, это так.
- person Amjad; 28.02.2019
Это также возможно с последней версией API WooCommerce и расширенными пользовательскими полями.
- person Amjad; 12.03.2019
@ Амджад привет. Не могли бы вы добавить пример того, как это можно сделать с помощью последней версии WooCommerce API и расширенных настраиваемых полей? Я пробовал
filter[meta]=true
, но у меня это не сработало.
- person Jehanzeb.Malik; 26.08.2019
Неважно. Я нашел это. Данные расширенных настраиваемых полей находятся в разделе
meta_data
. Проблема заключалась в том, что я устанавливал значения по умолчанию для настраиваемых полей при создании продукта, но они не сохранялись вместе с продуктом. Только когда я сохранил какое-то значение в этих полях и сохранил продукт, я смог их просмотреть.
- person Jehanzeb.Malik; 26.08.2019
Да, вам нужно сначала сохранить продукт, чтобы настраиваемые поля отображались в метаданных.
- person Amjad; 27.08.2019
Как упоминалось в комментарии, после того, как WooCommerce создаст заказ через API, он активирует хук woocommerce_api_create_order
, и вы можете его использовать.
Добавьте следующий код в файл functions.php вашей темы.
add_action( 'woocommerce_api_create_order', 'my_woocommerce_api_create_order', 10, 2);
function my_woocommerce_api_create_order( $order_id, $data ) {
// $data contains the data was posted, add code to extract the required
// fields and process it as required
}
Аналогично посмотрите код в plugins/woocommerce/includes/api/*.php
файлах, найдите подходящее действие или фильтр-хук для конечной точки и используйте его.
person
Anand Shah
schedule
05.04.2016
Чтобы понять структуру базы данных, см. схему WooCommerce и схема WordPress. Метаданные WordPress позволяют использовать пользовательские пары ключ/значение.
- person Warlike Chimpanzee; 18.06.2017
plugins/woocommerce/includes/api/*.php
файлах, найти правильное действие или хук фильтра и использовать его. Например: когда WooCommerce создает заказ через API, после создания заказа он предлагает следующий хукdo_action( 'woocommerce_api_create_order', $order->id, $data, $this );
в этом хуке у вас есть доступ к$data
который был отправлен, вы можете извлечь свои значения настраиваемого поля и обработать его. - person Anand Shah   schedule 04.04.2016