用weblogger写WordPress博客
作者: vvoody

此文让你不用登录 wordpress 的后台程序撰写博客,而是利用 Emacs !
源起看到eexpress用 vim 来写 wordpress,所以想着 Emacs 有没有此类插件。Google 了一下,果然有 weblogger 这个一个库。看了下别的资料,在此简单整理下使用方法。
本文只针对 WordPress 用户,虽然介绍可以使用 Blogger, MetaWeblog 等博客程序,还请读者自己尝试。测试环境 Emacs 23.1.1。
一、安装过程:
1. 下载weblogger.el 和 xml-rpc.el
这两个文件我已经打过补丁,分别来自Gabriel Saldaña、rix和wd,感谢他们。现在weblogger可以正常使用分类、Tags、html、permlink。
2. 把这个两个 el 文件放到你的 Emacs 启动路径里,比如我的是:~/.emacs.d/site-lisp
3. 在 ~/.emacs 里添加一句:(require ‘weblogger)
二、连接到你的 WordPress 博客:
1. 先得设置你的博客,M-x weblogger-setup-weblog。
2. Server Endpoint (URL): http://vvoody.org/blog/xmlrpc.php
WordPress 的博客必须填 xmlrpc.php。
3. 输入用户名密码后,Emacs 就会提示你连接成功,会将你博客的信息添加在 .emacs 文件末尾。
PS: 千万别把空间的用户名和博客的用户名搞混,我就是因为这个登了半天也上不去。
三、写博客:
1. M-x weblogger-select-configuration,选择你刚才设置的配置信息,否则默认是 openweblog.com。以后每次要登录你的博客都要使用这个命令。
2. M-x weblogger-start-entry
初始有 Subject, Categories, Permlink, Tags, From, Newsgroup 和 –text follow this line–。
Categories就是文章分类,这个分类必须是在你的博客中已经存在的,否则你新创建一个最后系统还是会认成 Uncategorized。编辑状态见下图:
3. 当你写完要发表时用命令:M-x weblogger-publish-entry (C-x C-s)来发表你的文章。如果你暂时不想发表的话,那么 M-x weblogger-save-entry 则是将你文章保存到服务器上,下次可以继续编辑。
weblogger 会自动保存你的博客在 ~/Mail/drafts 里。
四、编辑删除以前的文章:
你可能想发表之前保存的草稿,或者不满意已经发表的文章,需要修改或者删除,那么你需要用到:M-x weblogger-fetch-entries (之前你仍需要 M-x weblogger-select-configuration ,输入密码后登录)。
fetch 来的第一篇文章一般是草稿,如果没有草稿则是最新发表的文章。当然,你可以使用 M-x weblogger-prev-entry (C-c C-p) 或 M-x weblogger-next-entry (C-c C-n) 来载入前/后一篇文章。
编辑好了一篇文章/草稿后,M-x weblogger-publish-entry (C-x C-s)就可以发表了。若要删除某篇文章,则是切换到那篇文章,然后执行 M-x weblogger-delete-entry (C-c C-k)
/**************************************************/
基本的操作就是这么些,weblogger 还提供了一些文章模板什么的,这些大家可以自己尝试。
下面列出在 weblogger 模式下可用的标记:
粗体 <strong>blod</strong>
斜体 <em>italic</em>
链接 <a href=”http://www.xxx.com/” mce_href=”http://www.xxx.com/”>aLink</a>
贴图 <img src=”http://www.yyy.com/zzz.jpg” mce_src=”http://www.yyy.com/zzz.jpg” alt=”zzz.jpg” />
列表
<ul><li>item_1</li><li>item_2</li></ul>
<ol><li>item_1</li><li>item_2</li></ol>
代码 ── <code>int main()</code>
引用 ── <blockquote>aQuote</blockquote>
更多 ── <!–more–>many many words…
‘<’ ── <
‘>’ ── >
以上代码就是 WordPress 中的代码编辑方式中插入的代码,可以直接在
weblogger 模式里用。
参考:
- M-x weblogger TAB 列出所有的命令,或者菜单栏上也有若干;
- weblogger.el 里的注释;
- WANG Cong
- weblogger.el Enhanced!
- Using Emacs and Markdown for Blogging
- WebloggerMode
- emacsweblogs
- Emacs weblogger mode with Wordpress tags support
- emacs写wordpress的一个小补丁
注:如果你发现撰写时候的格式和最终发布显示的格式不一样,建议关闭auto-fill-mode. 另外, 编辑已发布的文章并再次发布有时间问题,快8小时.
本文即在 weblogger 模式下编辑。
——————–补充——————–
weblogger 默认是读取前 20 篇文章,默认的连接服务器是 openweblog.com。这些都可以通过 M-x customize-group 里的 weblogger 里修改。对应的项目分别是:
Weblogger Max Entries Ring
Weblogger Server URL
——————–更新-2010-03-11——————–
感谢wd的patch,现在weblogger支持添加permlink,”Keywords”、”Summary”分别改成”Categories”、”Tags”
打了两个patch后支持分类、Tags、html标记;
weblogger 1.2 不支持categories的slug,也就是如果你建立了一个类别“工作”,并给他取了别名”work“,那么在weblogger里只能用”工作“;
weblogger 1.2 不支持tags;
——————–更新-2010-03-13——————–
再次感谢wd的patch,修正了fetch文章后再次发布的时间问题
loading...
搞定了,就在改 el 文件把那个 link 变成 wp_slug,或改 wp 的 xml-rpc 文件,把里面的 wp_slug 改成 link。写 blog 的时候加一个 X-url 就好了。具体过程在这里。
http://wdicc.com/use-emacs-publish-your-blog/
[回复]
vvoody 回复:
三月 10th, 2010 at 1:34 下午
@wd, wd,把patch发给我吧,更新一下~
[回复]
wd 回复:
三月 11th, 2010 at 1:14 上午
@vvoody,
我改的地方实际没多少,我再完善一下再说吧。
[回复]
vvoody 回复:
三月 11th, 2010 at 1:35 上午
@wd, 好
[回复]
auto-fill-mode 好像是会自动断行的呀,还是不要用这个吧
[回复]
ahei 回复:
三月 10th, 2010 at 7:55 上午
@wd, 呵呵,作者不是特意在文章后面用粗体字表明不要用auto-fill-mode吗?
[回复]
wd 回复:
三月 10th, 2010 at 8:12 上午
@ahei,
那个不是加了删除线么。。。我的意识是还是别加了。。
[回复]
vvoody 回复:
三月 10th, 2010 at 1:35 下午
@wd, wd,你遇到在auto-fill打开的情况下文章发布有问题吗?我这里正常阿。
[回复]
wd 回复:
三月 11th, 2010 at 12:49 上午
@vvoody,
加了之后他会自动断行,发出去就会有不少长的行从中间折断了。
[回复]
vvoody 回复:
三月 11th, 2010 at 2:01 上午
@wd, 如果你让auto-fill自动每个长行都自动断行了,那么发送出去最后显示的没有问题的。如果你强行保留了某长行,那么最终确会出现折断。
这个就看个人了。好在,auto-fill目前不影响html标记了。
[回复]
匿名 回复:
三月 27th, 2010 at 3:14 上午
@vvoody,
自动折行的问题加这句试试:
(require ‘weblogger)
(setq weblogger-weblog-alist nil)
(add-hook ‘weblogger-entry-mode-hook
(lambda ()
(setq fill-column 4000)))
[回复]
vvoody 回复:
三月 27th, 2010 at 2:46 下午
@, 现在测下来auto-fill mode不影响文章格式。不过还是感谢
[回复]
又改了一下,好像没什么问题了。把那个 weblogger-fetch-entries 不能用的问题 fix 了。
http://github.com/wd/work/blob/master/weblogger.el/weblogger.el
[回复]
vvoody 回复:
三月 11th, 2010 at 7:52 上午
@wd, fetch可以了~~ publish的时候出现 Wrong type argument: characterp, “Emacs”
[回复]
wd 回复:
三月 11th, 2010 at 10:26 上午
@vvoody,
无尽的 bug 啊。。。人生就是一个 bug 接另一个 bug。。。
[回复]
ahei 回复:
三月 11th, 2010 at 10:30 上午
@wd, 哈哈,所以要慢慢抓bug,别抓完了,抓完了这一生也就到头了
[回复]
weblogger.el出新版本了。
[回复]
匿名 回复:
三月 17th, 2010 at 12:41 上午
@costplus,
刚发现1.45版本增加了同时发布多个博客的功能(C-c C-a),不知道wb有没有时间再patch一下?
[回复]
wd 回复:
三月 17th, 2010 at 1:16 上午
@,
是和我说么?。。我是 wd ..
我好像下载过这个版本,和目前上面这些打了 patch 的版本diff了一下,好像差别还是挺大的,
我这个菜鸟不一定能搞定,只能有时间看看了。
[回复]
匿名 回复:
三月 17th, 2010 at 1:46 上午
@wd,
[回复]
vvoody 回复:
三月 17th, 2010 at 12:08 下午
@costplus, 嘿嘿,你试试用新的weblogger.el不打任何patch能正常使用么~
[回复]
匿名 回复:
三月 17th, 2010 at 1:27 下午
@vvoody,
给你的gmail发了patch的1.45,试试看行不?
[回复]
匿名 回复:
三月 17th, 2010 at 1:47 下午
@vvoody,
另外,1.45版的添加的博客地址格式和原来的不同,需要删除原记录重新添加,否则会出现错误提示。
[回复]
vvoody 回复:
三月 22nd, 2010 at 6:10 上午
@, 我测下来1.45没遇到之前烦人的时间问题了。我抽空试试把以前wd打的一些patch merge到你改的1.45版里去。
[回复]
leezii 回复:
四月 20th, 2010 at 4:19 下午
@vvoody, 1.45版本的 我这儿还是用不了html标记啊
[回复]
vvoody 回复:
四月 21st, 2010 at 5:26 上午
@leezii, 那先用前一版吧
[回复]
orgmode可以导出单个tree的文字内容到pdf、html….,那么有没有办法将它和weblogger结合使用呢?我觉得可行,相关的对应字段分别是:
tree标题内容 = subject
@tags = 分类
tags = 标签
body = 博客内容
导出以后自动转到weblogger-mode,使用默认的帐户启动。然后可以添加permlink或再进行内容修饰后即可发送。期待有人有时间搞搞。
[回复]
vvoody 回复:
三月 22nd, 2010 at 12:11 下午
@, 这个.. 你可以向weblogger作者提提看,就别指望我啦,嘿嘿
[回复]
看不懂,我是来支持vv的
[回复]
发布的时候出现这个怎么回事儿?
let: XML-RPC fault `Sorry, you are not allowed to publish posts on this site.’
[回复]
vvoody 回复:
六月 8th, 2010 at 6:39 上午
@pocoyo,
如信息所说你没权限。
[回复]
pocoyo 回复:
六月 8th, 2010 at 10:06 上午
@vvoody, 我在网页上直接可以编辑的啊.
[回复]
vvoody 回复:
六月 8th, 2010 at 11:13 上午
@pocoyo, 看看wordpress后台有没有开启xml-rpc支持
[回复]
pocoyo 回复:
六月 9th, 2010 at 7:10 上午
@vvoody, 一、开启XML-RPC支持
XML-RPC协议默认是未开启的,需要到WordPress管理后台的“设置–>撰写”里的“远程发布”给XML-RPC打上勾。其说明文字为:启用 WordPress,Movable Type,MetaWeblog和Blogger 的 XML-RPC发布协议。
网上找的 可我打开没有这选项 免费的没有? 还是版本不对?
我就在网页上登陆的 没有安装客户端的wp.
[回复]
vvoody 回复:
六月 12th, 2010 at 7:22 上午
@pocoyo, 我翻看了wp的xml-rpc部分的源码,未开启xml-rpc支持是出线你这个错误提示的原因之一。其他还有用户不存在,用户权限不够。我认为应该和weblogger本身没有太大关系,是你服务器端设置上有些小问题。你再排查看看。
你不是自己搭建的wordpress?难道服务商禁用了?
[回复]
pocoyo 回复:
六月 12th, 2010 at 1:22 下午
@vvoody, 我就是在网页上注册的
后来网速一直感觉卡 也没怎么用。最近试了试 我再看看吧
[回复]
pocoyo 回复:
六月 12th, 2010 at 1:23 下午
@vvoody, 谢谢你啊
[回复]
vvoody 回复:
六月 12th, 2010 at 1:30 下午
@pocoyo, 不客气
[回复]
这个很强大,支持个
[回复]