使用自定义Wordpress API端点更新WooCommerce产品
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用自定义Wordpress API端点更新WooCommerce产品相关的知识,希望对你有一定的参考价值。
我试图通过API调用自定义Wordpress端点来更新我的WooCommerce产品。我成功接到我的电话,数据可以访问,但产品实际上并没有更新。
我的终点:
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
在我的determine_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,但这也没有做任何事情。
让产品更新,我错过了什么或做错了什么?
函数set_name()
不会更新数据库本身的任何内容,只应更改存储在类对象中的内容。
试试这个
$product_detils = array(
'ID' => $product_id,
'post_title' => $sent_name,
);
wp_update_post($product_detils);
实际上最终为我工作的是这个。
我不需要Basic Auth(在我确认之后将其关闭)。但是我在设置字段后需要在每个辅助方法中执行$product->save();
。例如:
function main(){
$product_id = 12345;
$product = wc_get_product($product_id);
helper1($product);
helper2($product);
}
function helper1($product){
$product->set_name("foo");
$product->save();
}
function helper2($product){
$product->set_short_description("here is a short description");
$product->save();
}
希望如果他们像我一样陷入困境,这对未来的其他人有帮助。
以上是关于使用自定义Wordpress API端点更新WooCommerce产品的主要内容,如果未能解决你的问题,请参考以下文章
使用操作挂钩创建自定义Wordpress REST API端点
Wordpress 使用自定义端点 rest api 上传多个图像(离子作为最终用户)
无法显示来自 Wordpress REST API 自定义端点的自定义字段
WordPress 自定义 API 端点 POST 请求在 React 中失败