Я пытаюсь обновить свои продукты WooCommerce с помощью вызова API для пользовательской конечной точки Wordpress. Я успешно получаю звонок и данные доступны, но продукт на самом деле не обновляется.
Моя конечная точка:
add_action('rest_api_init', function(){
register_rest_route('productupdate/v1', '/update', array(
'methods' => 'POST',
'callback' => 'determine_request'
));
});
Итак, я делаю POST-запрос: https://example.com/wp-json/productupdate/v1/update
В моей функции define_request у меня есть несколько мест, которые я записываю в файл журнала, чтобы гарантировать, что вспомогательные функции вызываются и данные принимаются и читаются, а в журнале отражается, что все они работают по назначению. Единственная проблема заключается в том, что продукты никогда не обновляются.
Пример того, что я делаю (это упрощено, чтобы получить общее представление о том, как я это делаю):
function determine_request($request){
$data = $request -> get_json_params()['Inserted'][0];
$sku = $data['InventoryID'];
$product_id = wc_get_product_id_by_sku($sku);
$product = wc_get_product($product_id);
$current_name = $product->get_name();
$sent_name = $data['Description'];
if($current_name != $sent_name){
write_to_log("Current Name does not match sent Name!");
write_to_log("Changing name from: " . $current_name);
write_to_log('Changing name to: ' . $sent_name);
$product->set_name($sent_name);
} else {
write_to_log("Current Name matches sent Name. Skipping...");
}
}
Когда я делаю это, мой журнал показывает все правильные вещи, но обновление не происходит. Я попытался добавить $product->save();
в конец функции, но это не помогло. Я попытался добавить Basic Auth с логином и паролем администратора в своем запросе почтальона, но это также не помогло.
Что я пропускаю или делаю неправильно, чтобы заставить продукт обновиться?