Intereting Posts
Как зарегистрировать пользовательский виджет меню Есть ли способ иметь пользовательский тип сообщения и страницу с тем же слизнем? Измените правило, что wp-login.php? Action = register оставлен в покое Программно добавьте опции для «добавления нового» настраиваемого поля. Предупреждение. Произошла непредвиденная ошибка. Что-то может быть неправильно с WordPress.org Как я могу добавить значок короткого кода редактирования в редакторе WordPress без использования выборочного обновления? edit_comment_link не отображается для автора комментариев Быстрая публикация в WordPress Различные пользовательские интерфейсы в WordPress Плагин кэша для новостного блога среднего трафика Facebook / LinkedIn – страница https opengraph wp_nav_menu: проверьте, имеет ли элемент списка дочерние элементы и добавляет ссылку на привязку класса Удаление http: // из esc url () для кода для WordPress Несколько условий для названия детской страницы Рекомендуемое изображение метаболизма не появляется

Интегрировать API-интерфейс фидов продуктов в Woocommerce

Я хочу интегрировать API для автоматического импорта продуктов от стороннего производителя.

У меня есть API для этого. Документация API написана следующим образом.

Мы обновляем инвентарь каждые 24 часа!

Запрос API должен иметь следующую форму: **

http://boatexportusa.com/wp-content/plugins/api/api.php?apikey=myAPIkeyHere

Ответ API – это строка JSON, содержащая все списки (> 55.000)

Вы можете установить необязательную переменную debug = 1 при тестировании, это заставит ответ API содержать только 50 списков, и у вас есть неограниченные ежедневные запросы.

Доступен только метод запроса GET

Пример: Запрос API (с CURL)

$ch = curl_init('http://boatexportusa.com/wp-content/plugins/api/api.php?apikey=myAPIkeyHere') curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $response = curl_exec($ch); 

Пример: ответ API (JSON)

 { "status":"SUCCESS", "message":"Results have been extracted", "results":[{ "post_title":"1984 AQUASPORT 222 FT W96 YAMAHA", "post_name":"1984-aquasport-22-2-ft-w96-ya", "post_content":"Nice boat 1984 aquasport 22.2 ft cc 1996 yamaha 200 hp runs good.", "post_category":"By Owner", "price":"52000", "location":"Miami, FL", "stock":"952481", "year":"2007", "images":[ "http:\/\/boatexportusa.com\/wp-content\/plugins\/api\/get-image.php?src=fakesrc\/00o0o_7TGyKJXFMp9_600x450.jpg", "http:\/\/boatexportusa.com\/wp-content\/plugins\/api\/get-image.php?src=fakesrc\/00o0o_7TGyKJXFMp9_600x450.jpg" ], "cond":"new", "size":"27'", "make":"SeaRay", "model":"S300", "hours":"330", "propulsion":"Power", "addedtime":"2015-03-23" }] } 

Я слепой застрял в том, как действовать

Как интегрировать этот API с продуктами Wocommerce для автоматической синхронизации

ОБНОВИТЬ :

Изображение не сохраняется, я использую следующий код

 'post_images' => $data[ 'images' ], 

Solutions Collecting From Web of "Интегрировать API-интерфейс фидов продуктов в Woocommerce"

Аналогичная проблема возникает для создания сообщений из API и программно генерирующих сообщений .

По сути, просто разбирайте JSON в массив, захватывайте нужные поля и создавайте пост / продукт. Вам, скорее всего, придется потянуть и изображения.

Вы также должны рассмотреть вопрос о том, существует ли почта в вашей базе данных и как / где вам нужны дополнительные метаданные; цена, запас, год, часы и т. д.

JSON PARSE

 $response = '{"status":"SUCCESS","message":"Results have been extracted","results":[{"post_title":"1984 AQUASPORT 222 FT W96 YAMAHA","post_name":"1984-aquasport-22-2-ft-w96-ya","post_content":"Nice boat 1984 aquasport 22.2 ft cc 1996 yamaha 200 hp runs good.","post_category":"By Owner","price":"52000","location":"Miami, FL","stock":"952481","year":"2007","images":["http:\/\/boatexportusa.com\/wp-content\/plugins\/api\/get-image.php?src=fakesrc\/00o0o_7TGyKJXFMp9_600x450.jpg","http:\/\/boatexportusa.com\/wp-content\/plugins\/api\/get-image.php?src=fakesrc\/00o0o_7TGyKJXFMp9_600x450.jpg"],"cond":"new","size":"27\'","make":"SeaRay","model":"S300","hours":"330","propulsion":"Power","addedtime":"2015-03-23"}]}'; // decode the json $json = json_decode($response, true); // loop through the results if( ! empty($json[ 'results' ])) { foreach($json[ 'results' ] as $data) { // gather data you need, make sure to sanitize it $post_data = array( 'post_title' => $data[ 'post_title' ], 'post_name' => $data[ 'post_name' ], 'post_content' => $data[ 'post_content' ], 'post_date' => date('Ymd H:i:s'), 'post_status' => 'publish', 'post_author' => 1, ); // create product or post and return the new ID $post_id = wp_insert_post($post_data, $wp_error); } } 

ОБНОВИТЬ

Я бы рекомендовал поместить это в плагин . Таким образом вы можете включить или выключить его и сохранить его отдельно от основной темы. Используйте что-то вроде WPPB.me для создания основного плагина.

Когда активируется плагин, планируйте задачу WP Cron для daily .

 register_activation_hook(__FILE__, 'my_activation'); function my_activation() { wp_schedule_event(time(), 'daily', 'my_daily_event'); } add_action('my_daily_event', 'do_this_daily'); function do_this_daily() { // pull api data every day } 

Поскольку WP Cron – это поддельный cron, лучше всего зацепить ваш API за крючок выключения или избежать cron и запустить его с страницы параметров администратора. В любом случае TechCrunch WP Asynchronous Tasks может помочь разгрузить вычислительную мощность другой задаче.

После того, как вы вытащили новые данные, вы захотите выяснить способ уникальной идентификации продукта, чтобы вы не дублировали его в базе данных. Проверьте, существует ли он, и обновляет ли он его. Если нет, сделайте новый.

update_post_meta, чтобы установить его, WP_Meta_Query, чтобы узнать, существует ли он. Или проверьте по названию:

 if (null == get_page_by_title($title) && empty(get_posts(array('name' => $slug)))) 

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

Все за пределами того, что я вам ответил, может помочь Google, попробовать и задать новые вопросы при возникновении проблем.