- ·上一篇文章:wordpress MARIA博客主题下载
- ·下一篇文章:WordPress降级方法
将代码高亮插件codecolorer替换为highlight
-->
转自“唐磊的博客”
最近在写一个Wordpress小的客户端发布工具,就是直接写markdown,然后转为html发布到Wordpress,为什么要写?
- 不太想换之前已有的blogs,试过相应的工具将已有的Wordpress blog转为markdown,效果不是很好。//直接用github+jekyll之类的静态站点
- WordPress已有的支持markdown的插件貌似都不怎么理想,想兼容之前的比较麻烦,特别是用了代码高亮之类的插件//用Wordpress已有的支持markdown的插件
所以就写了,目前的技术方案是:
1 | 本地markdown+pandoc——>html——>Wordpress-xmlrpc——>Wordpress server |
这样的好处是:
- 仅仅要对已有的blog进行细小的改动即可,即改下那些po了代码的文章;
- 本地的markdown方便管理和备份,也方便生成其他如pdf等格式;
- win下之前还有wlw工具方便发布带有图片的blog,但在mac、linux下找不到相应方便的工具,现在用这个统一的client就比较方便传图片等资源。
本篇文章是讨论解决之前文章代码高亮的问题。一方面,现在的代码高亮是基于pandoc的,pandoc会把代码拆分添加各种tag,然后根据tag去css,且生成的html是与之前的codecolorer不兼容的,开启codecolorer插件后,现在的文章乱得一塌糊涂; 另外一方面,关闭codecolorer后,由于现在的文章代码已经不是独立的代码,是带有各种html标签的文本,解决方案是将之前的所有post中含有的代码都用pandoc转换一下,这个成本太高;后来找到一个代码高亮的插件可以自定义代码区域的标签,且是通过前端实现的,不占用服务器资源,于是就采用了这款插件hightlight。
codecolorer之前的代码区域基本上都是通过
1 | <div>::CODECOLORER_BLOCK_1::</div> |
实现的,hightlight可以自定义html标签, 所以大致只需要将原来的文章中所有的
1 2 3 4 | <div>::CODECOLORER_BLOCK_2::</div> '</span><span class="p">,</span> <span class="s1">'```</pre>'</span> <span class="p">)</span> <span class="k">where</span> <span class="n">ID</span> <span class="k">in</span> <span class="p">(</span><span class="k">SELECT</span> <span class="n">ID</span> <span class="k">FROM</span> <span class="n">wp_posts</span> <span class="k">WHERE</span> <span class="n">post_content</span> <span class="k">LIKE</span> <span class="s1">'%[/cc]%'</span><span class="p">);</span> |
当试图用以上sql进行查询更新时,提示 “You can’t specify target table ‘wp_posts’ for update in FROM clause”,因为这样对同一个表操作会冲突,中间加一个临时表解决问题。2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<span class="k">UPDATE</span> <span class="n">wp_posts</span> <span class="k">SET</span> <span class="n">post_content</span> <span class="o">=</span> <span class="k">REPLACE</span><span class="p">(</span> <span class="n">post_content</span><span class="p">,</span> <span class="s1">'[/cc]'</span><span class="p">,</span> <span class="s1">'```</pre>'</span> <span class="p">)</span> <span class="k">where</span> <span class="n">ID</span> <span class="k">in</span>
<span class="p">(</span><span class="k">SELECT</span> <span class="n">ID</span> <span class="k">FROM</span> <span class="p">(</span><span class="k">SELECT</span> <span class="n">ID</span> <span class="k">FROM</span> <span class="n">wp_posts</span> <span class="k">WHERE</span> <span class="n">post_content</span> <span class="k">LIKE</span> <span class="s1">'%[/cc]%'</span><span class="p">)</span> <span class="k">as</span> <span class="n">tmp</span><span class="p">);</span>
<span class="k">UPDATE</span> <span class="n">wp_posts</span> <span class="k">SET</span> <span class="n">post_content</span> <span class="o">=</span> <span class="k">REPLACE</span><span class="p">(</span> <span class="n">post_content</span><span class="p">,</span> <span class="s1">'
<div>::CODECOLORER_BLOCK_3::</div>
'</span><span class="p">,</span> <span class="s1">'```</pre>'</span> <span class="p">)</span> <span class="k">where</span> <span class="n">ID</span> <span class="k">in</span>
<span class="p">(</span> <span class="k">SELECT</span> <span class="n">ID</span> <span class="k">FROM</span> <span class="p">(</span><span class="k">SELECT</span> <span class="n">ID</span> <span class="k">FROM</span> <span class="n">wp_posts</span> <span class="k">WHERE</span> <span class="n">post_content</span> <span class="k">LIKE</span> <span class="s1">'%[/cc]%'</span><span class="p">)</span> <span class="k">as</span> <span class="n">tmp</span><span class="p">);</span>
<span class="cm">/*66*/</span>
<span class="k">UPDATE</span> <span class="n">wp_posts</span> <span class="k">SET</span> <span class="n">post_content</span> <span class="o">=</span> <span class="k">REPLACE</span><span class="p">(</span> <span class="n">post_content</span><span class="p">,</span> <span class="s1">'<code'</span><span class="p">,</span> <span class="s1">'<pre><cc'</span> <span class="p">)</span> <span class="k">where</span> <span class="n">ID</span> <span class="k">in</span>
<span class="p">(</span> <span class="k">SELECT</span> <span class="n">ID</span> <span class="k">FROM</span> <span class="p">(</span><span class="k">SELECT</span> <span class="n">ID</span> <span class="k">FROM</span> <span class="n">wp_posts</span> <span class="k">WHERE</span> <span class="n">post_content</span> <span class="k">LIKE</span> <span class="s1">'%<code%'</span><span class="p">)</span> <span class="k">as</span> <span class="n">tmp</span><span class="p">);</span> <span class="cm">/*11*/</span>
<span class="k">UPDATE</span> <span class="n">wp_posts</span> <span class="k">SET</span> <span class="n">post_content</span> <span class="o">=</span> <span class="k">REPLACE</span><span class="p">(</span> <span class="n">post_content</span><span class="p">,</span> <span class="s1">'</code>'</span><span class="p">,</span> <span class="s1">'```</pre>'</span> <span class="p">)</span> <span class="k">where</span> <span class="n">ID</span> <span class="k">in</span>
<span class="p">(</span> <span class="k">SELECT</span> <span class="n">ID</span> <span class="k">FROM</span> <span class="p">(</span><span class="k">SELECT</span> <span class="n">ID</span> <span class="k">FROM</span> <span class="n">wp_posts</span> <span class="k">WHERE</span> <span class="n">post_content</span> <span class="k">LIKE</span> <span class="s1">'%</code>%'</span><span class="p">)</span> <span class="k">as</span> <span class="n">tmp</span><span class="p">);</span> <span class="cm">/*11*/</span>
<span class="k">UPDATE</span> <span class="n">wp_posts</span> <span class="k">SET</span> <span class="n">post_content</span> <span class="o">=</span> <span class="k">REPLACE</span><span class="p">(</span> <span class="n">post_content</span><span class="p">,</span> <span class="s1">'[cc lang="sql"]'</span><span class="p">,</span> <span class="s1">'<pre><cc class="sql">'</span> <span class="p">)</span> <span class="k">where</span> <span class="n">ID</span> <span class="k">in</span>
<span class="p">(</span> <span class="k">SELECT</span> <span class="n">ID</span> <span class="k">FROM</span> <span class="p">(</span><span class="k">SELECT</span> <span class="n">ID</span> <span class="k">FROM</span> <span class="n">wp_posts</span> <span class="k">WHERE</span> <span class="n">post_content</span> <span class="k">LIKE</span> <span class="s1">'%[cc lang="sql"]%'</span><span class="p">)</span> <span class="k">as</span> <span class="n">tmp</span><span class="p">);</span> <span class="cm">/*5*/</span>
<span class="k">UPDATE</span> <span class="n">wp_posts</span> <span class="k">SET</span> <span class="n">post_content</span> <span class="o">=</span> <span class="k">REPLACE</span><span class="p">(</span> <span class="n">post_content</span><span class="p">,</span> <span class="s1">'[cc lang="c"]'</span><span class="p">,</span> <span class="s1">'<pre><cc class="c">'</span> <span class="p">)</span> <span class="k">where</span> <span class="n">ID</span>
<span class="k">in</span> <span class="p">(</span> <span class="k">SELECT</span> <span class="n">ID</span> <span class="k">FROM</span> <span class="p">(</span><span class="k">SELECT</span> <span class="n">ID</span> <span class="k">FROM</span> <span class="n">wp_posts</span> <span class="k">WHERE</span> <span class="n">post_content</span> <span class="k">LIKE</span> <span class="s1">'%[cc lang="c"]%'</span><span class="p">)</span> <span class="k">as</span> <span class="n">tmp</span><span class="p">);</span> <span class="cm">/*4*/</span>
<span class="k">UPDATE</span> <span class="n">wp_posts</span> <span class="k">SET</span> <span class="n">post_content</span> <span class="o">=</span> <span class="k">REPLACE</span><span class="p">(</span> <span class="n">post_content</span><span class="p">,</span> <span class="s1">'[cc lang="javascript"]'</span><span class="p">,</span> <span class="s1">'<pre><cc class="javascript">'</span> <span class="p">)</span> <span class="k">where</span> <span class="n">ID</span>
<span class="k">in</span> <span class="p">(</span> <span class="k">SELECT</span> <span class="n">ID</span> <span class="k">FROM</span> <span class="p">(</span><span class="k">SELECT</span> <span class="n">ID</span> <span class="k">FROM</span> <span class="n">wp_posts</span> <span class="k">WHERE</span> <span class="n">post_content</span> <span class="k">LIKE</span> <span class="s1">'%[cc lang="javascript"]%'</span><span class="p">)</span> <span class="k">as</span> <span class="n">tmp</span><span class="p">);</span> <span class="cm">/*2*/</span>
<span class="k">UPDATE</span> <span class="n">wp_posts</span> <span class="k">SET</span> <span class="n">post_content</span> <span class="o">=</span> <span class="k">REPLACE</span><span class="p">(</span> <span class="n">post_content</span><span class="p">,</span> <span class="nv">"[cc lang='python']"</span><span class="p">,</span> <span class="s1">'<pre><cc class="python">'</span> <span class="p">)</span> <span class="k">where</span> <span class="n">ID</span> <span class="k">in</span>
<span class="p">(</span> <span class="k">SELECT</span> <span class="n">ID</span> <span class="k">FROM</span> <span class="p">(</span><span class="k">SELECT</span> <span class="n">ID</span> <span class="k">FROM</span> <span class="n">wp_posts</span> <span class="k">WHERE</span> <span class="n">post_content</span> <span class="k">LIKE</span> <span class="nv">"%[cc lang='python']%"</span><span class="p">)</span> <span class="k">as</span> <span class="n">tmp</span><span class="p">);</span> <span class="cm">/*2*/</span>
<span class="k">INSERT</span> <span class="k">INTO</span> <span class="n">wp_postmeta</span> <span class="p">(</span><span class="n">post_id</span><span class="p">,</span> <span class="n">meta_key</span><span class="p">,</span> <span class="n">meta_value</span><span class="p">)</span>
<span class="k">SELECT</span> <span class="n">wp_posts</span><span class="p">.</span><span class="n">ID</span><span class="p">,</span> <span class="s1">'enable_highlight'</span><span class="p">,</span>
<span class="s1">'<link rel="stylesheet" href="/wp-content/blogresources/highlightconfig/highlight.default.min.css">
<script src="/wp-content/blogresources/highlightconfig/jquery-2.1.4.min.js"></script>
<script src="/wp-content/blogresources/highlightconfig/enable_highlight.js"></script>'</span>
<span class="k">FROM</span> <span class="n">wp_posts</span> <span class="k">WHERE</span> <span class="n">wp_posts</span><span class="p">.</span><span class="n">ID</span> <span class="k">in</span> <span class="p">(</span><span class="k">SELECT</span> <span class="n">ID</span> <span class="k">FROM</span> <span class="n">wp_posts</span> <span class="k">WHERE</span> <span class="n">wp_posts</span><span class="p">.</span><span class="n">post_content</span> <span class="k">LIKE</span> <span class="s1">'%```</pre>%'</span><span class="p">);</span>
参考文献:
将代码高亮插件codecolorer替换为highlight