WordPress XMLRPC:如何通过Slug搜索文章并远程更新?
解决方案:通过XMLRPC按Slug搜索并更新文章Slug
一、按Slug搜索文章的问题修复
你遇到的name参数无效问题,大概率是参数传递结构不符合XML-RPC客户端的要求。多数WordPress XML-RPC客户端的getPosts方法要求筛选参数嵌套在filter子数组中,而非直接作为顶层参数。
修复后的搜索代码:
$args = array( 'filter' => array( 'name' => 'my-slug', // 此参数对应文章的slug(post_name) 'number' => 1 // 仅返回1条结果 ) ); $posts = $wpClient->getPosts($args);
备选方案(兼容旧版WordPress):
如果上述方法仍无结果,可改用post_name__in参数精准匹配slug:
$args = array( 'filter' => array( 'post_name__in' => array('my-slug'), 'number' => 1 ) ); $posts = $wpClient->getPosts($args);
二、搜索到文章后更新Slug
找到目标文章后,提取其ID,调用wp.editPost方法传入新slug即可:
if (!empty($posts)) { $targetPost = $posts[0]; $postId = $targetPost['post_id']; // 准备更新参数 $updateArgs = array( 'post_id' => $postId, 'post_name' => 'new-slug-here' // 设置新的slug ); // 执行更新操作 $result = $wpClient->editPost($updateArgs); }
注意事项
- 部分XML-RPC客户端要求前置传递博客ID、用户名、密码参数,示例如下:
$posts = $wpClient->getPosts(1, '你的用户名', '你的密码', $filterArgs);
- 新slug需符合WordPress规则:小写字母、允许连字符、需唯一,否则系统会自动调整slug格式。
内容的提问来源于stack exchange,提问作者WP Beginner
相关产品推荐
相关产品推荐

