使用WP CLI编辑文章后无需关闭文件即可刷新网页的方法
解决WP CLI编辑页面后需关闭编辑器才生效的问题
你的猜测完全正确:WordPress的页面/文章内容存储在数据库中,而主题文件存在文件系统里。wp post edit命令的工作逻辑是创建一个临时文件让你编辑,只有当你**关闭编辑器(正常退出,比如VIM里的:wq)**时,WP CLI才会把临时文件的内容同步到数据库,这就是为什么单纯保存(:w)后刷新页面看不到变化的原因。
下面是几个可以实现"保存即同步"的方案:
方案1:VIM自动命令同步
在VIM编辑临时文件时,添加自动保存同步的命令,每次保存文件就自动更新数据库:
- 打开页面编辑:
wp post edit <你的页面ID> - 在VIM里输入
:autocmd BufWritePost <buffer> !wp post update <你的页面ID> --post_content="$(cat %)",回车执行 - 之后每次用
:w保存时,VIM会自动调用WP CLI把当前文件内容更新到数据库,刷新页面就能看到变化
提示:页面ID可以用
wp post list命令查看,找到对应页面的ID值替换进去。
方案2:文件监听工具自动同步
用inotifywait监听临时文件的修改,一旦文件被保存就自动同步到数据库:
- 先执行
wp post edit <你的页面ID>,记下临时文件的路径(一般在/tmp目录下,文件名类似wp-cli-post-edit-xxxxxx) - 打开新的终端窗口,执行以下命令:
inotifywait -m -e close_write /tmp/wp-cli-post-edit-xxxxxx | while read; do wp post update <你的页面ID> --post_content="$(cat /tmp/wp-cli-post-edit-xxxxxx)"; done - 回到VIM编辑页面,每次
:w保存后,监听脚本会自动触发数据库更新
提示:如果系统没有
inotifywait,Ubuntu/Debian可以用sudo apt install inotify-tools安装,CentOS/RHEL用sudo yum install inotify-tools。
方案3:直接用wp post update实时修改
如果不需要复杂编辑,也可以直接用标准输入的方式实时更新页面内容:
wp post update <你的页面ID> --post_content -
输入完内容后按Ctrl+D结束输入,内容会直接写入数据库,无需关闭编辑器。
内容的提问来源于stack exchange,提问作者Jimmy Long
相关产品推荐
相关产品推荐

