Skip to content

Commit 17a00e2

Browse files
author
darksun
committed
使用org2blog发布博客到wordpress
1 parent 5b219ae commit 17a00e2

File tree

1 file changed

+170
-0
lines changed

1 file changed

+170
-0
lines changed
+170
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,170 @@
1+
#+BLOG: DarkSun.1kapp.com
2+
#+POSTID: 17
3+
#+DATE: [2015-04-24 星期五 23:27]
4+
#+TITLE: org2blog--将org发布到wordpress
5+
#+AUTHOR: DarkSun
6+
#+CATEGORY: Emacs
7+
#+OPTIONS: ^:{}
8+
* 加载必要的库
9+
#+BEGIN_SRC emacs-lisp
10+
(require 'org2blog-autoloads)
11+
#+END_SRC
12+
* 配置
13+
** 配置blog信息
14+
`org2blog/wp-blog-alist'定义了多个blog的信息.其中每个元素的car为一个表示blog的名称的字符串,每个元素的cdr为一个plist,为每个blog提供属性说明.
15+
16+
#+BEGIN_SRC emacs-lisp
17+
(setq org2blog/wp-blog-alist
18+
`(("DarkSun.1kapp.com"
19+
:url "http://darksun.1kapp.com/xmlrpc.php"
20+
:username "lujun9972"
21+
:default-categories ("Emacs")
22+
:keep-new-lines t
23+
:confirm t
24+
:wp-code nil
25+
:tags-as-categories nil)
26+
))
27+
28+
#+END_SRC
29+
30+
关于plist中的属性说明如下:
31+
+ url :: blog中xmlrpc的url地址,必填
32+
+ username :: 登陆blog的用户名,必填
33+
+ password :: 登陆blog的密码
34+
+ default-title :: 新建文章时的默认标题,默认值为`org2blog/wp-default-title'的值
35+
+ default-categories :: 新建文章时默认所属的类别列表,默认值为`org2blog/wp-default-categories'的值
36+
+ tags-as-categories :: 是否将文章tag作为文章的类别,默认值为`org2blog/wp-use-tags-as-categories'的值
37+
+ confirm :: 发布文章时,是否需要用户确认,默认值为`org2blog/wp-confirm-post'的值
38+
+ show :: 发布完文章后,是否使用浏览器访问该文章. 默认值为`org2blog/wp-show-post-in-browser'的值
39+
+ keep-new-lines :: 是否删除文章中的空行. 默认值为`org2blog/wp-keep-new-lines'的值
40+
+ wp-latex :: 是否将org文件中的LaTeX代码转换为WP的latex代码. 默认值为`org2blog/wp-use-wp-latex'的值
41+
+ wp-code :: 是否将org中的<pre>...</pre>转换为WP的源代码块格式. 默认值为`org2blog/wp-use-sourcecode-shortcode'
42+
+ track-posts :: 是否追踪已发布的文章,若允许追踪,则会在发布的org文件中增加`#+POSTID: '行,通过这种方法可以更新已发布的文章.
43+
** 配置post templates
44+
通过修改变量`org2blog/wp-buffer-template'和`org2blog/wp-buffer-format-function'的值可以自动以新建文章的内容模板.
45+
46+
其中org2blog使用(funcall org2blog/wp-buffer-format-function org2blog/wp-buffer-template)的返回值作为新建的文章模板.
47+
#+BEGIN_SRC emacs-lisp
48+
(setq org2blog/wp-buffer-template "#+TITLE: %s\n#+AUTHOR: %s\n#+DATE: %s\n#+OPTIONS: toc:nil num:nil todo:nil pri:nil tags:nil ^:nil\n#+CATEGORY: %s\n#+TAGS:\n#+DESCRIPTION:\n\n")
49+
50+
(defun org2blog/wp-format-buffer-with-author (buffer-template)
51+
"Default buffer formatting function."
52+
(format buffer-template
53+
;; TITLE
54+
(or (plist-get (cdr org2blog/wp-blog) :default-title)
55+
org2blog/wp-default-title
56+
(read-string "请输入POST标题:"))
57+
;; AUTHOR
58+
user-login-name
59+
;; DATE
60+
(format-time-string "[%Y-%m-%d %a %H:%M]" (current-time))
61+
;; CATEGORY
62+
(mapconcat
63+
(lambda (cat) cat)
64+
(or (plist-get (cdr org2blog/wp-blog) :default-categories)
65+
org2blog/wp-default-categories)
66+
", ")
67+
))
68+
69+
(setq org2blog/wp-buffer-format-function 'org2blog/wp-format-buffer-with-author)
70+
#+END_SRC
71+
* 使用方法
72+
+ M-x org2blog/wp-login 会提示你要登陆哪个 blog
73+
74+
+ M-x org2blog/wp-logout 登出blog
75+
76+
+ M-x org2blog/wp-new-entry 会打开新buffer供你写作文章,并根据template预先填充好内容
77+
78+
- Tag/category的各个值之间需要使用`, '分隔开. 可以使用C-c t进行补全
79+
80+
- 可以在org的头部使用`#+DESCRIPTION: '来指定文章摘要
81+
82+
- 可以在org的头部使用`#+PERMALINK: '来指定文章的permalink
83+
84+
- 可以在org的头部使用`#+PARENT: '来指定文章的父级链接. 可以使用C-c t进行补全
85+
86+
- 可以在org的头部使用`#+TITLE: '来指定文章的标题
87+
88+
- 可以在org的头部使用`#+TAGS: '来指定文章的tag
89+
90+
- 可以在org的头部使用`#+CATEGORY: '来指定文章的分类
91+
92+
- 可以在org的头部使用`#+DATE: '来指定文章的创建时间
93+
94+
+ M-x org2blog/wp-post-buffer 将文章保存成 draft
95+
96+
+ M-x org2blog/wp-post-buffer-and-publish 将文章发布到blog
97+
98+
+ M-x org2blog/wp-post-subtree 发布某个tree而不是整个org文件
99+
100+
- 这时会使用tree的tag来作为发布的文章tag
101+
102+
- 会使用tree中的同名property drawer来代替org头部定义的属性
103+
104+
- 默认使用POST_DATE property drawer的值被用于替代`#+DATE'属性,但若无该property drawer,则会使用SCHEDULED, DEADLINE的值
105+
106+
- 默认情况下,tree的headline会作为文章的标题,但可以通过设置`TITLE' property drawer来设置另一个文章标题
107+
108+
+ M-x org2blog/wp-delete-entry 或 M-x org2blog/wp-delete-page
109+
110+
删除当前POSTID所表示的博文
111+
112+
+ C-u post-id M-x org2blog/wp-delete-entry 或 C-u post-id M-x org2blog/wp-delete-page
113+
114+
删除指定post-id所表示的博文
115+
116+
发布源代码可以使用 BEGIN_SRC END_SRC 块,或者冒号开头的行会被当作源代码。
117+
118+
我使用的是 wp-syntax,所以发布源代码使用 BEGIN_HTML 在里面使用 pre 标签,这样出来的代码会加上格式高亮。
119+
#+BEGIN_EXAMPLE
120+
,#+BEGIN_HTML
121+
<pre lang="lisp">
122+
(setq a 1)
123+
</pre>
124+
,#+END_HTML
125+
#+END_EXAMPLE
126+
* 关于org2blog mode
127+
128+
使用`M-x org2blog/wp-mode'可以开启org2blog mode. 在该mode下有以下默认的快捷键:
129+
+ C-c p :: 发布该buffer
130+
+ C-c d :: 保存该buffer为草稿
131+
+ C-c t :: 补全tag或parent page
132+
133+
* FAQ
134+
** How do I split a post into an introductory paragraph and a full view.
135+
136+
Just put in
137+
138+
#+HTML: <!--more-->
139+
140+
141+
at the location where you wish to split the post.
142+
** 如何从.netrc中抽取blog的password
143+
首先,`.netrc'的格式需要为:
144+
#+BEGIN_EXAMPLE
145+
machine myblog login myusername password myrealpassword
146+
#+END_EXAMPLE
147+
148+
然后使用类似下面的代码
149+
#+BEGIN_SRC emacs-lisp
150+
(require 'auth-source) ;; or nothing if already in the load-path
151+
152+
(let (credentials)
153+
;; only required if your auth file is not already in the list of auth-sources
154+
(add-to-list 'auth-sources "~/.netrc")
155+
(setq credentials (auth-source-user-and-password "myblog"))
156+
(setq org2blog/wp-blog-alist
157+
`(("my-blog"
158+
:url "http://username.server.com/xmlrpc.php"
159+
:username ,(car credentials)
160+
:password ,(cadr credentials)))))
161+
#+END_SRC
162+
** 如何设置网络访问的代理
163+
通过设置url-proxy-services来设置代理. 例如
164+
#+BEGIN_SRC elisp
165+
(setq url-proxy-services '(("http" . "127.0.0.1:8087")))
166+
#+END_SRC
167+
* provide feature
168+
#+BEGIN_SRC emacs-lisp
169+
(provide 'init-life-internet-org2blog)
170+
#+END_SRC

0 commit comments

Comments
 (0)