求助:使用cURL更新Yoast Focus keyphrase(_yoast_wpseo_focuskw)无效果
解决cURL更新Yoast焦点关键词无效的问题
核心问题分析
你用的请求体存在两个关键错误,导致服务器返回200但未实际更新内容:
- 错误使用了
meta_data字段:WP REST API更新文章自定义字段的正确参数是meta,而非meta_data; - 冗余无效字段:Yoast焦点关键词实际存储的meta key是
_yoast_wpseo_focuskw(带下划线),yoast_wpseo_focuskw是不存在的字段,无需添加。
修复步骤
修正cURL命令
替换为以下正确命令,保留带下划线的meta key,并用meta作为参数名:curl -X PATCH -u myusername:password -H "Content-Type: application/json" -d '{"meta": {"_yoast_wpseo_focuskw": "test one"}}' https://www.example.com/wp-json/wp/v2/posts/405若你的WordPress版本≥5.6,建议用用户个人资料中生成的应用密码代替普通密码,避免安全机制拦截。
允许私有meta字段通过API修改
下划线开头的meta字段默认是WP私有字段,REST API默认不允许修改,需在主题functions.php或自定义插件中添加以下代码开启权限:add_filter('register_post_meta_args', function($args, $post_type, $meta_key) { if ($meta_key === '_yoast_wpseo_focuskw' && $post_type === 'post') { $args['show_in_rest'] = true; $args['single'] = true; $args['type'] = 'string'; } return $args; }, 10, 3);验证用户权限
确保你使用的账号拥有edit_posts权限,无权限的话即使请求成功也无法修改内容。
内容的提问来源于stack exchange,提问作者alwaysVBNET
相关产品推荐
相关产品推荐

