使用python-wordpress-xmlrpc上传WordPress文章时br标签丢失如何处理
问题原因
你遇到的自动插入<p>标签、移除<br>标签的问题是WordPress核心自带的wpautop文本格式化过滤器导致的,和你使用的python-wordpress-xmlrpc库无关。该过滤器默认会自动解析内容中的换行,将双换行转换为<p>标签、单换行转换为<br>标签,同时会清理掉它判定为冗余的手动<br>标签。
解决方案
方案1:仅修改客户端上传代码(推荐,无需调整站点配置)
WordPress的古腾堡编辑器HTML块内容会被标记为原生HTML,不会被wpautop过滤器格式化,你只需要把需要保留原始格式的内容用对应的注释标记包裹即可,修改后的代码如下:
post = WordPressPost() post.title = 'title' # 用<!-- wp:html -->和<!-- /wp:html -->包裹原始HTML内容,跳过自动格式化 post.content = '<!-- wp:html --><div>This is a test article<br><br>There are some linebreaks<br><br>here<br></div><!-- /wp:html -->' post.post_status = 'publish' wp.call(NewPost(post))
方案2:调整WordPress服务端配置
如果你需要全局或者大范围关闭该格式化逻辑,可以选择以下任意一种方式修改站点当前主题的functions.php文件:
- 全局关闭所有内容的
wpautop格式化:
remove_filter('the_content', 'wpautop'); remove_filter('the_excerpt', 'wpautop');
- 仅关闭XML-RPC发布内容的
wpautop格式化,不影响站点其他内容的正常渲染:
add_filter('xmlrpc_default_post_fields', function($fields, $method) { if ($method === 'wp.newPost') { remove_filter('content_save_pre', 'wpautop'); } return $fields; }, 10, 2);
内容的提问来源于stack exchange,提问作者Milano
相关产品推荐
相关产品推荐

