Intereting Posts

Использование API REST WordPress и WooCommerce в одном приложении Node

Я пишу небольшое приложение-утилиту, которое подключает сторонний API к магазину WooCommerce (на самом деле он многопользовательский, но это не очень важно), чтобы обновлять записи клиентов. В документах WooCommerce API указано, что свойство role доступно только для чтения, но мне нужно обновить роли, чтобы включить ролевую оценку на интерфейсе. Похоже, я могу редактировать роли, используя основной WordPress API , но я пишу это приложение, используя wc-api-node , который является оберткой узлов для API WooCommerce. Должен ли я использовать отдельную оболочку и / или метод для доступа к основному API WordPress после создания / обновления записи клиента или это то, что я мог бы обработать с woocommerce_rest_insert_customer действия woocommerce_rest_insert_customer ? (Примечание. Я в первую очередь разработчик узлов / JS, поэтому у меня нет много опыта работы с WordPress или WooCommerce.)

Я также рассматриваю возможность создания собственного плагина и использования системы WordPress cron для общения с сторонним API, но предпочел бы этого не делать.

Solutions Collecting From Web of "Использование API REST WordPress и WooCommerce в одном приложении Node"

Я думал, что поделюсь своим решением для тех, кто работает над подобной проблемой. Я перешел на node-wpapi и использовал REST Autodiscovery, чтобы использовать API WooCommerce и WordPress из одной библиотеки. Это можно сделать так:

 const wpapi = require('wpapi') let wp = new wpapi({ endpoint: 'http://your.wp.site/wp-json/', username: 'user', password: 'pass', auth: true, routes: routes }) let woo = wp.namespace('wc/v2') 

Где routes – это представление JSON маршрутов API REST. См. Здесь информацию об загрузке обертки API.

Затем я могу использовать оба API рядом друг с другом

 wp.users() .search('foo') // Search by (for example) username .param('context', 'edit') // Get additional fields .then(result => { let user = result[0] woo.customers().id(user.id) // Get WooCommerce specific fields .then(customer => { console.log('woo.customer', customer) }) })