Я создаю плагин, который будет интегрироваться между WooCommerce и мобильным приложением через API отдыха.
У меня проблема при обновлении продукта в WooCommerce, при котором он вызывает добавление, а затем редактирование, поэтому я получил ошибку дублирования.
Есть ли способ заставить кнопку обновления срабатывать только при редактировании?
Я использовал три разных перехвата, но ни один из них не работал
вот код:
add_action( 'woocommerce_update_product', 'nb_edit');
//--------------------------update----------------------------------
function nb_edit($post_id) {
$quantity = isset($_POST['_stock']) ? $_POST ['_stock'] : null;
$weight = isset($_POST['_weight']) ? $_POST ['_weight'] : null;
$sku = isset($_POST['_sku']) ? $_POST ['_sku'] : null;
$salePrice = isset($_POST['_sale_price']) ? $_POST ['_sale_price'] : null;
// $img = has_post_thumbnail($post_id) ? get_the_post_thumbnail_url($post_id) : null;
// $gallery[]= get_post_galleries($post_id);
$discount = 100 - ((int) $_POST['_sale_price'] * 100 / (int) $_POST['_regular_price']);
$post = get_post($post_id);
$title = $post->post_title;
$description = $post->post_content;
$connectorProductId = $post_id;
$product = [
//-----------------------------------------
'connectorProductId' => $connectorProductId,
'title' => $title,
'description' => $description,
'availableQuantity' => (int) $quantity,
'price' => (int) $salePrice,
'itemNumber' => (int) $sku,
'weight' => (int) $weight,
//'profile' => 'https://cdn.shopify.com/s/files/1/0116/4499/3593/products/806810088586_650x650.png?v=1549635792',
//'banners' => ['https://cdn.shopify.com/s/files/1/0116/4499/3593/products/806810088586_650x650.png?v=1549635792'],
'discount' => (int) $discount,
//-----------------------------------------
'brand' => get_option('nb_db_brand'),
'originId' => get_option('nb_db_originId'),
'categoryIds' => [get_option('nb_db_categoryId')],
'subcategoryIds' => [get_option('nb_db_subcategoryId')]
];
$j_prod = json_encode($product);
edit_products($j_prod);
}
//--------------------------edit product----------------------------
function edit_products($j_prod) {
$url = get_option('nb_db_hostUrl') . 'edit_products';
if (get_option('nb_db_categoryId') == '' || get_option('nb_db_subcategoryId') == '' || get_option('nb_db_brand') == '' || get_option('nb_db_originId') == '') {
add_action('admin_notices', 'default_notice');
}
$response = wp_remote_post($url, array(
'method' => 'POST',
'timeout' => 45,
'redirection' => 5,
'httpversion' => '1.1',
'blocking' => true,
'headers' => array(
'Content-Type' => 'application/json',
'Authorization' => get_option('nb_db_authKey'),
'X-User-Id' => get_option('nb_db_userId'),
'X-Auth-Token' => get_option('nb_db_authToken')
),
'body' => $j_prod
));
$body = wp_remote_retrieve_body($response);
$result = json_decode($body);
if ($result->message === 'You must be logged in to do this.') {
add_action('admin_notices', 'token_expire_notice');
} else {
return $result;
}
}