· 6 years ago · Aug 15, 2019, 01:22 PM
1<?php
2include_once plugin_dir_path( __FILE__ ) . 'include/business_ru_api.php';
3
4function initial_api_settings()
5{
6 //params for api
7 $app_id = "943908";
8 $address = 'https://a93803.business.ru';
9 $secretKey = "cOwXG6CeDjjCad1N8cmIPNka8eBwbDpe"; // секретный ключ
10
11 $api = new Business_ru_api_lib( $app_id, "", $address );
12 $api->setSecret($secretKey); // устанавливаем секретный ключ
13 $api->repair(); //устанавливаем token
14
15 return $api;
16}
17
18function get_api_product_data($sku) //4734 id
19{
20 global $wpdb;
21
22 $table_posts = "goods"; //с какой таблицей в api работаем
23
24 $post_id = $wpdb->get_var( $wpdb->prepare( "SELECT post_id FROM $wpdb->postmeta WHERE meta_key='_sku' AND meta_value='%s' LIMIT 1", $sku ) );
25
26 if ($post_id == "") {
27 echo "Артикул: {$sku} - не существует в базе данных\n";
28
29 return false;
30 }
31
32 $api = initial_api_settings();
33
34 $isCreateProduct = true; //создавать ли товар
35 $page = 1;
36
37 do {
38 $goods = $api->request("get", $table_posts, ["page"=> $page++]); //api
39
40 if ($goods["status"] == "ok") {
41
42 $image_path = explode("/", get_the_post_thumbnail_url($post_id, 'thumbnail'));
43
44
45 $postMetaVolume = get_post_meta($post_id, "attribute_pa_volume");
46 $volume = $postMetaVolume!= null
47 ? preg_replace("/[^0-9\.]/", '', $postMetaVolume[0])
48 : "";
49
50 $new_product_params = [
51 "name" => get_post($post_id)->post_title,
52 "cost" => get_post_meta($post_id, "_price")[0],
53 "code" => $post_id, //Идентификатор товара
54 'part' => $sku, //Артикул
55 'volume' => $volume,
56 'images' => [
57 [
58 'name' => 'american-crew-beard-serum-syvorotka-dlya-borody-50-ml7240169000.250x250.jpg',
59 'url' => 'https://a93803.class365.ru/file/get/?id=14020'
60 ]
61 ]
62 ];
63
64
65 foreach ($goods["result"] as $good) {
66 if (is_null($good["part"])) {
67 if ($good["code"] == $post_id) {
68 $isCreateProduct = false;
69 break;
70 } elseif ($good["name"] == $new_product_params["name"]) {
71 $isCreateProduct = false;
72 break;
73 } elseif ($good["cost"] == $new_product_params["cost"]) {
74 $isCreateProduct = false;
75 break;
76 }
77 } else {
78 if ($good["part"] == $new_product_params["part"]) {
79 $isCreateProduct = false;
80 break;
81 }
82 }
83 }
84 }
85 } while (count($goods['result']) > 0); // делаем это до тех пор пока не проверим все продукты
86
87 if ($isCreateProduct) {
88 $response = $api->request("post", $table_posts, $new_product_params); //создаем товар
89 if ($response["status"] == "error") {
90 echo "Ошибка! Артикул: {$sku}; " . $response["error_text"] . "\n";
91 } else {
92 echo "Добавили! Имя товара: {$new_product_params["name"]}; Артикул: {$new_product_params["part"]} " . "\n";
93 }
94 } else {
95 echo "Уже есть такой товар! Артикул: {$new_product_params["part"]} " . "\n";
96 }
97}
98
99function sync()
100{
101 $skus = [
102 //"6159084266385",
103 //"615908950991",
104 "615908426670"
105 ];
106
107 foreach ($skus as $sku){
108 get_api_product_data($sku);
109 }
110
111}
112
113
114
115
116sync();
117exit;