У меня проблема.
Я пытаюсь использовать API из import.io для автоматического управления запасами продуктов, которые я перепродаю.
API возвращает мне значение, и я использую это значение, чтобы определить, есть ли товар в наличии или нет.
Каждая группа / категория использует свой API (потому что каждая группа — это другой магазин происхождения. Этот код предназначен только для одной категории, мне нужно выяснить, как сделать так, чтобы это работало для других).
Я создал этот код, и я пытаюсь заставить его работать в function.php
У меня есть настраиваемое поле, в котором есть источник URL для каждого продукта, и я хочу использовать его в качестве параметра API.
После проверки, какая группа является продуктом, он получает данные, чтобы я мог обновить запас.
Проблема в том, что я не знаю, как обновить запасы WooCommerce таким образом: O И я бы хотел, чтобы эта проверка была выполнена, когда клиент открыл одну страницу продукта.
Может кто-нибудь взглянуть на мой код и дать мне несколько советов?
Спасибо!
$userGuid = "c5ed744c-7c10-46d1-9c43-22c6eef5aaca";
$apiKey = "private";
// Issues a query request to import.io
function query($connectorGuid, $input, $userGuid, $apiKey) {
$url = "https://query.import.io/store/connector/" . $connectorGuid . "/_query?_user=" . urlencode($userGuid) . "&_apikey=" . urlencode($apiKey);
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
"Content-Type: application/json",
"import-io-client: import.io PHP client",
"import-io-client-version: 2.0.0"));
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode(array("input" => $input)));
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
$result = curl_exec($ch);
curl_close($ch);
return json_decode($result);
}
//This is a custom field
$url_font = apply_filters('custom_url_font', get_post_meta($post->ID, '_url_font', true));
add_action('woocommerce_before_shop_loop_item_title','category_stock');
function category_stock() {
global $woocommerce,$product, $post;
$post_id = $post->ID;
$groupcat = 608; // category id for the this api
$terms = get_the_terms( $post_id, 'product_cat' ); //get taxonamy of the products
if ( $terms && ! is_wp_error( $terms ) ) :
foreach ( $terms as $term ) {
$catid = $term->term_id;
if($groupcat == $catid) {
$result = query("d9df1137-b402-40ef-b472-35db84684fbe", array(
"webpage/url" => $url_font,//this is the url from the custom field
), $userGuid, $apiKey, false);
if(($result->results[0]->stock)=="INSTOCK")
{
update_post_meta($post->ID, '_stock', '10');
}
else{
update_post_meta($post->ID, '_stock', '0');
}
}
}endif;
}
Задача ещё не решена.
Других решений пока нет …