Имитация открытия каждого отдельного продукта ⇐ Php
-
Гость
Имитация открытия каждого отдельного продукта
У меня есть действие woocommerce_before_single_product. При вводе одного продукта это действие нацелено на маршрут, извлекает информацию о количестве и цене и обновляет мой продукт. Как я могу имитировать вход в каждый продукт для его обновления?
add_action('woocommerce_before_single_product', 'custom_checkout_process'); функция custom_checkout_process() { глобальный $wpdb; $parent = get_the_id(); $variations = wc_get_product($parent)->get_available_variations(); foreach ($вариации как $вариация) { $variation_id = $variation['variation_id']; $sku = $variation['sku']; $quantity = $variation['max_qty']; $requestData = [ "запрос" => [ "заголовок" => [ "аутентификация" => [ "ключ" => "мой ключ" ] ], "тело" => [ "предметы" => [ [ 'sku' => $sku, 'количество' => $количество ] ] ] ] ]; $curl = curl_init(); Curl_setopt_array($curl, массив( CURLOPT_URL => 'маршрут', CURLOPT_RETURNTRANSFER => правда, CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 30, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => "ПОСТ", CURLOPT_POSTFIELDS => json_encode($requestData), CURLOPT_HTTPHEADER => массив( "управление кешем: без кеша", «Тип контента: приложение/json» ), )); $response = curl_exec($curl); $err = curl_error($curl); Curl_close ($ Curl); $responseData = json_decode($response, true); if ($responseData && isset($responseData['response']['body']['items'])) { foreach ($responseData['response']['body']['items'] as $item) { if ($item['sku'] == $sku) { $fulfillableQty = $item['fulfillableQty']; $listPrice = $item['price']['listPrice']; update_post_meta($variation_id, '_regular_price', $listPrice); update_post_meta($variation_id, '_price', $listPrice); update_post_meta($variation_id, '_stock', $fulfillableQty); } } } } } Я хотел бы записать это в отдельный файл и при вызове делать это для каждого продукта.
У меня есть действие woocommerce_before_single_product. При вводе одного продукта это действие нацелено на маршрут, извлекает информацию о количестве и цене и обновляет мой продукт. Как я могу имитировать вход в каждый продукт для его обновления?
add_action('woocommerce_before_single_product', 'custom_checkout_process'); функция custom_checkout_process() { глобальный $wpdb; $parent = get_the_id(); $variations = wc_get_product($parent)->get_available_variations(); foreach ($вариации как $вариация) { $variation_id = $variation['variation_id']; $sku = $variation['sku']; $quantity = $variation['max_qty']; $requestData = [ "запрос" => [ "заголовок" => [ "аутентификация" => [ "ключ" => "мой ключ" ] ], "тело" => [ "предметы" => [ [ 'sku' => $sku, 'количество' => $количество ] ] ] ] ]; $curl = curl_init(); Curl_setopt_array($curl, массив( CURLOPT_URL => 'маршрут', CURLOPT_RETURNTRANSFER => правда, CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 30, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => "ПОСТ", CURLOPT_POSTFIELDS => json_encode($requestData), CURLOPT_HTTPHEADER => массив( "управление кешем: без кеша", «Тип контента: приложение/json» ), )); $response = curl_exec($curl); $err = curl_error($curl); Curl_close ($ Curl); $responseData = json_decode($response, true); if ($responseData && isset($responseData['response']['body']['items'])) { foreach ($responseData['response']['body']['items'] as $item) { if ($item['sku'] == $sku) { $fulfillableQty = $item['fulfillableQty']; $listPrice = $item['price']['listPrice']; update_post_meta($variation_id, '_regular_price', $listPrice); update_post_meta($variation_id, '_price', $listPrice); update_post_meta($variation_id, '_stock', $fulfillableQty); } } } } } Я хотел бы записать это в отдельный файл и при вызове делать это для каждого продукта.
Мобильная версия