<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>迷途知返 &#187; WP/WP Plugins</title>
	<atom:link href="http://pwwang.com/category/technology/wp-wp-plugins/feed/" rel="self" type="application/rss+xml" />
	<link>http://pwwang.com</link>
	<description>专注技术,用心生活!</description>
	<lastBuildDate>Wed, 08 Feb 2012 09:37:25 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>WP-Plugin: Verification Code for Comments 2.1.0</title>
		<link>http://pwwang.com/2011/04/17/verification-code-for-comments-2/</link>
		<comments>http://pwwang.com/2011/04/17/verification-code-for-comments-2/#comments</comments>
		<pubDate>Sun, 17 Apr 2011 04:35:38 +0000</pubDate>
		<dc:creator>pwwang</dc:creator>
				<category><![CDATA[WP/WP Plugins]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[WP插件]]></category>

		<guid isPermaLink="false">http://pwwang.com/?p=1011</guid>
		<description><![CDATA[&#160;

Version 2.1.0

* remove jquery dependency

<span class="readmore"><a href="http://pwwang.com/2011/04/17/verification-code-for-comments-2/" title="WP-Plugin: Verification Code for Comments 2.1.0">Read More: 1019 Words Totally</a></span>]]></description>
			<content:encoded><![CDATA[<p>&nbsp;</p>
<p><span style="font-size: x-large;"><span style="color: rgb(0, 128, 128);"><strong>Version 2.1.0</strong></span></span></p>
<p>* remove jquery dependency<br />
* re-orgnize the js code<br />
&nbsp;</p>
<p><span style="font-size: x-large;"><strong><span style="color: rgb(0, 128, 128);">Version 2.0.2</span></strong></span></p>
<p>Add an verification code when user posting a comment to keep robots away. You can use an image verification code or a math equation instead.</p>
<p>Robots may post lots of spam comments into your database. You can add a verification code image or a math equation to avoid this.</p>
<p>Features:</p>
<ul>
<li>You can choose a verification code image or a math equation as you wish</li>
<li>You don&#8217;t need to edit any source code of WP, you just need to active the plugin&nbsp;</li>
</ul>
<ol class="screenshots">
<li><strong>&nbsp;configuration panel<br />
    </strong><br />
    <img width="640" height="921" src="/wp-content/plugins/verification-code-for-comments/screenshot-1.png" style="clear: both" alt="" /><br />
    <span id="more-1011"></span>&nbsp;</li>
<li><strong>&nbsp;a verification code image
<p>    </strong><img width="433" height="218" src="/wp-content/plugins/verification-code-for-comments/screenshot-2.png" style="clear: both" alt="" /><strong></p>
<p>    </strong></li>
<li><strong>&nbsp;a verification math equation
<p>    </strong><img width="423" height="208" src="/wp-content/plugins/verification-code-for-comments/screenshot-3.png" style="clear: both" alt="" /><strong><br />
    </strong><br />
    &nbsp;</li>
<li><strong>&nbsp;the error message when invalid code was entered
<p>    </strong><img width="434" height="224" src="/wp-content/plugins/verification-code-for-comments/screenshot-4.png" style="clear: both" alt="" /><strong></p>
<p>    </strong></li>
</ol>
<p>&nbsp;</p>
<p>&nbsp;<span style="font-size: small"><strong>Change Log:</strong></span></p>
<p>1.0.0&nbsp;&nbsp; Finish the basic functions</p>
<p>2.0.0</p>
<p><span style="color: #ff0000">* Change the skin of code and input box<br />
* Position of the box can be choosen<br />
* Number of characters can be set<br />
* Fix the bug in Chrome that code does not appear<br />
* Case sensitivity is configurable now for string mode<br />
* Length of string is configurable now for string mode<br />
* Position os verification code box could be coufigurable now</span></p>
<p>2.0.1, 2.0.2</p>
<p>* bug fixed</p>
<p>2.1.0<br />
* remove jquery dependency<br />
* re-orgnize the js code<br />
&nbsp;</p>
<p><strong><span style="font-size: small">Download/Install:</span></strong></p>
<p><a href="http://wordpress.org/extend/plugins/verification-code-for-comments/" target="_blank">http://wordpress.org/extend/plugins/verification-code-for-comments/</a></p>
<p>&nbsp;</p>
<p>Explanation to the configuration:</p>
<p><img width="652" height="408" src="http://pwwang.com/wp-content/uploads/2011/04/vcc_setting.png" style="clear:both" title="vcc_setting" alt="" /></p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://pwwang.com/2011/04/17/verification-code-for-comments-2/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>最后，我还是放弃了wp-codebox</title>
		<link>http://pwwang.com/2009/12/07/give_up_wp_codebo/</link>
		<comments>http://pwwang.com/2009/12/07/give_up_wp_codebo/#comments</comments>
		<pubDate>Mon, 07 Dec 2009 13:15:39 +0000</pubDate>
		<dc:creator>pwwang</dc:creator>
				<category><![CDATA[WP/WP Plugins]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[WP插件]]></category>

		<guid isPermaLink="false">http://pwwang.com/?p=846</guid>
		<description><![CDATA[&#160;

其实我本无意在这里批评什么或者指责什么，事实上，我自己的插件也没有用上心，只是满足了自己的需求就发了出来。

wp-codebox是一个不错的插件，我不知道wp-syntax与之哪个在前哪个在后，只是我看了两者的源代码，发现惊人地相似。

<span class="readmore"><a href="http://pwwang.com/2009/12/07/give_up_wp_codebo/" title="最后，我还是放弃了wp-codebox">Read More: 1966 Words Totally</a></span>]]></description>
			<content:encoded><![CDATA[<p>&nbsp;</p>
<p>其实我本无意在这里批评什么或者指责什么，事实上，我自己的插件也没有用上心，只是满足了自己的需求就发了出来。</p>
<p>wp-codebox是一个不错的插件，我不知道wp-syntax与之哪个在前哪个在后，只是我看了两者的源代码，发现惊人地相似。</p>
<p>wp-codebox最近更新了，我很想知道它到底更新了什么，到插件主页一看，什么介绍也没有，看了源代码才知道，原来整个源代码的组织形式都有所改进。</p>
<p><span id="more-846"></span>实际上，我两个插件都有安装，但只激活了wp-codebox，原因是对于wp-syntax，我没有找到设置选项，也就是说，要设置你就得改源代码，这也太不方便了。于是，我坚定而固执地选择了wp-codebox</p>
<p>之所以说固执，是因为有这样一件事情。我目前所用的这款主题，最新版本里加了一条，支持wp-syntax，于是我很奇怪，去问主题的作者，作者的回复是，wp-codebox不支持w3c标准。后来我一验证，果然如此。但我仍然没有禁用它，只是将不符合标准的地方改掉了：</p>
<p>将</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;script language</span><span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;javascript&quot;</span><span style="color: #339933;">&gt;...</span><span style="color: #000000; font-weight: bold;">&lt;/script&gt;</span></pre></div></div>

<p>改成了</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">&lt;</span>script type<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;text/javascript&quot;</span><span style="color: #339933;">&gt;...</span><span style="color: #000000; font-weight: bold;">&lt;/script&gt;</span></pre></div></div>

<p>可是最近一次更新，我实在无法忍受作者测试并未通过（至少我现在采用的wp版本，2.8.5也未通过）。</p>
<p>我无论怎么修改codebox.css，样式都没有变化，后来发现codebox.css并没有加载。作者在源代码中是这样写的：</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;">add_action<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'wp_print_scripts'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'Codebox_ScriptsAction'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">function</span> Codebox_ScriptsAction <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
    <span style="color: #000088;">$cb_path</span> <span style="color: #339933;">=</span> get_bloginfo<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'wpurl'</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">&quot;/wp-content/plugins/wp-codebox&quot;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//URL to the plugin directory</span>
    <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span> is_admin<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        wp_enqueue_script<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'jquery'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        wp_enqueue_script<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'codebox'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$cb_path</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">'/js/codebox.js'</span><span style="color: #339933;">,</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'jquery'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'0.1'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        wp_enqueue_style<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'codebox'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$cb_path</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">'/css/codebox.css'</span><span style="color: #339933;">,</span><span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'0.1'</span><span style="color: #339933;">,</span>screen<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>但实际上wp_print_scripts这个hook并不会加载style，而作者却将style也写在了里面。我修改成如下代码后，可以正常运行：</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;">add_action<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'wp_print_scripts'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'Codebox_ScriptsAction'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">function</span> Codebox_ScriptsAction <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
    <span style="color: #000088;">$cb_path</span> <span style="color: #339933;">=</span> get_bloginfo<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'wpurl'</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">&quot;/wp-content/plugins/wp-codebox&quot;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//URL to the plugin directory</span>
    <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span> is_admin<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        wp_enqueue_script<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'jquery'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        wp_enqueue_script<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'codebox'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$cb_path</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">'/js/codebox.js'</span><span style="color: #339933;">,</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'jquery'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'0.1'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #666666; font-style: italic;">//wp_enqueue_style('codebox', $cb_path . '/css/codebox.css',array(), '0.1',screen);</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #666666; font-style: italic;">// pwwang</span>
add_action<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'wp_print_styles'</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'Codebox_StylesAction'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">function</span> Codebox_StylesAction<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    <span style="color: #000088;">$cb_path</span> <span style="color: #339933;">=</span> get_bloginfo<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'wpurl'</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">&quot;/wp-content/plugins/wp-codebox&quot;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//URL to the plugin directory</span>
    <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span> is_admin<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #666666; font-style: italic;">//wp_enqueue_script('jquery');</span>
        <span style="color: #666666; font-style: italic;">//wp_enqueue_script('codebox', $cb_path . '/js/codebox.js', array('jquery'), '0.1');</span>
        wp_enqueue_style<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'codebox'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$cb_path</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">'/css/codebox.css'</span><span style="color: #339933;">,</span><span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'0.1'</span><span style="color: #339933;">,</span>screen<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>    
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>就像上次wp-codebox和quick-comments插件不兼容的问题一样，我没有任何抱怨地进行了修正，因为我也深有体会，写一款有用的插件并不是一件容易的事，这里也一样，我也没有抱怨，只是，虽然问题解决了，但我也决定放弃wp-codebox转而投向wp-syntax的怀抱。</p>
]]></content:encoded>
			<wfw:commentRss>http://pwwang.com/2009/12/07/give_up_wp_codebo/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>教你发布wordpress插件</title>
		<link>http://pwwang.com/2009/11/25/distribute-wordpress-plugin/</link>
		<comments>http://pwwang.com/2009/11/25/distribute-wordpress-plugin/#comments</comments>
		<pubDate>Wed, 25 Nov 2009 14:45:43 +0000</pubDate>
		<dc:creator>pwwang</dc:creator>
				<category><![CDATA[WP/WP Plugins]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://pwwang.com/?p=823</guid>
		<description><![CDATA[&#160;

0. 前言

&#160;&#160;&#160; 你想到了一个很有创意的点子？你写了一个很酷的插件？

<span class="readmore"><a href="http://pwwang.com/2009/11/25/distribute-wordpress-plugin/" title="教你发布wordpress插件">Read More: 2101 Words Totally</a></span>]]></description>
			<content:encoded><![CDATA[<p>&nbsp;</p>
<p><strong>0. 前言</strong></p>
<p>&nbsp;&nbsp;&nbsp; 你想到了一个很有创意的点子？你写了一个很酷的插件？</p>
<p>&nbsp;&nbsp;&nbsp; Oh，no！wordpress官网上的发布步骤太长了，还是E文。</p>
<p>&nbsp;&nbsp;&nbsp; 难道你的插件只能躺在插件包里，还是只放在你的网站里让寥寥无几的人下载？</p>
<p>&nbsp; &nbsp; 相信这篇文章能让你的插件不再山寨。</p>
<p><span id="more-823"></span></p>
<p><strong>1. 准备工作</strong></p>
<ol type="a">
<li>你得有一个插件吧：）<br />
    你的插件最好是别人没有写过的。这个你可以在官网上搜索一下，后面还会提到这一点。</li>
<li>在 <a href="http://wordpress.org/extend/plugins" target="_blank">http://wordpress.org/extend/plugins</a> 申请一个帐号。<br />
    你很快会收到一封邮件，里面会有密码。我找了一下，没有找到在哪里修改密码。。。</li>
<li>安装svn<br />
    其实，前面的几步都没有什么好说的，整个插件的发布，关键还是在于svn的使用。至于安装，我在这里就不细说了，大家可以搜索一下，有很多讲安装的文章。给出subversion的下载页面：<a href="http://www.collab.net/downloads/subversion/">http://www.collab.net/downloads/subversion</a></li>
</ol>
<p><strong>2. 提交申请</strong></p>
<p><strong>&nbsp;&nbsp;&nbsp; </strong>你需要向wordpress.org提交你的插件发布申请。</p>
<p>&nbsp;&nbsp;&nbsp; <a href="http://pwwang.com/wp-content/uploads/2009/11/how-to-distribute-plugin0.png"><img width="300" height="245" border="0" title="how-to-distribute-plugin0" alt="how-to-distribute-plugin0" src="http://pwwang.com/wp-content/uploads/2009/11/how-to-distribute-plugin0-300x245.png" style="clear: both;" /></a></p>
<p>&nbsp;&nbsp;&nbsp; 这里就要强调最好你的创意是别人没有的，或者是没有类似的插件，这样插件发布申请会比较容易通过申请。</p>
<p>&nbsp;&nbsp;&nbsp; 提交申请大概一天（周末时间可能会长一些），就会收到邮件，告诉你申请通过了云云。</p>
<p><strong>3. 插件截图及写好你的readme.txt</strong></p>
<p>&nbsp;&nbsp;&nbsp; 你需要对插件截几张图，关于设置或者使用的。</p>
<p>&nbsp;&nbsp;&nbsp; 关于readme.txt，官网有专门的验证工具 <a href="validator/">readme validator</a> 和标准 <a href="readme.txt">WordPress/bbPress plugin readme file standard</a> ，我在这里只是说一下各部分会显示在什么地方。</p>
<p>&nbsp;&nbsp;&nbsp; === plugin name ===</p>
<p>&nbsp;&nbsp;&nbsp; 这部分内容会出现在你插件页面右侧的信息栏中，当然，author信息会出现在下面的Description中。</p>
<p>&nbsp;&nbsp;&nbsp; <a href="http://pwwang.com/wp-content/uploads/2009/11/how-to-distribute-plugin2.png"><img width="237" height="278" border="0" title="how-to-distribute-plugin2" alt="how-to-distribute-plugin2" src="http://pwwang.com/wp-content/uploads/2009/11/how-to-distribute-plugin2.png" style="clear: both;" /></a></p>
<p>&nbsp;&nbsp;&nbsp; == item ==</p>
<p>&nbsp;&nbsp;&nbsp; 类似的内容会出现在下面的各个Item中。</p>
<p>&nbsp;&nbsp;&nbsp; Screenshots中，对应的图片名字为screenshot-1.png &#8230;， 并在readme.txt中对图片进行说明。</p>
<p>&nbsp;&nbsp;&nbsp; <a href="http://pwwang.com/wp-content/uploads/2009/11/how-to-distribute-plugin1.png"><img width="555" height="88" border="0" title="how-to-distribute-plugin1" alt="how-to-distribute-plugin1" src="http://pwwang.com/wp-content/uploads/2009/11/how-to-distribute-plugin1.png" style="clear: both;" /></a></p>
<p><strong>4. 上传插件</strong> &nbsp;&nbsp;</p>
<p>&nbsp; &nbsp; 以上的工作做好之后，你就可以开始上传你的插件了。这里就涉及svn的使用了。</p>
<ol type="a">
<li>&nbsp;关于subversion<br />
    所有的文件都会存储在服务器的<span style="color: rgb(255, 0, 0);">仓库</span>中。所有的人都可以从这个仓库中将插件<span style="color: rgb(255, 0, 0);">下载</span>到本地。但是只有插件作者可以<span style="color: rgb(255, 0, 0);">登入</span>，那就意味着你可以在本地修改文件，添加文件，删除文件并且将这些改动上传到服务器。这样既可以更新仓库中的文件，也会修改显示在wordpress.org的插件目录中的信息。<br />
    &nbsp;</li>
<li>在本地创建一个插件目录(把你的插件文件都放进去)：

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ <span style="color: #c20cb9; font-weight: bold;">mkdir</span> my-local-dir</pre></div></div>

</li>
<li>检查你的仓库

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ <span style="color: #c20cb9; font-weight: bold;">svn</span> <span style="color: #c20cb9; font-weight: bold;">co</span> http:<span style="color: #000000; font-weight: bold;">//</span>svn.wp-plugins.org<span style="color: #000000; font-weight: bold;">/</span>your-plugin-name my-local-dir
<span style="color: #000000; font-weight: bold;">&gt;</span> A    my-local-dir<span style="color: #000000; font-weight: bold;">/</span>trunk
<span style="color: #000000; font-weight: bold;">&gt;</span> A    my-local-dir<span style="color: #000000; font-weight: bold;">/</span>branches
<span style="color: #000000; font-weight: bold;">&gt;</span> A    my-local-dir<span style="color: #000000; font-weight: bold;">/</span>tags
<span style="color: #000000; font-weight: bold;">&gt;</span> Checked out revision <span style="color: #000000;">11325</span>.</pre></div></div>

</li>
<li>把文件copy到trunk目录下(代码和官网不一样，但目的一样)

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ <span style="color: #7a0874; font-weight: bold;">cd</span> my-local-dir<span style="color: #000000; font-weight: bold;">/</span>
my-local-dir<span style="color: #000000; font-weight: bold;">/</span>$ <span style="color: #c20cb9; font-weight: bold;">cp</span> <span style="color: #000000; font-weight: bold;">*</span> trunk<span style="color: #000000; font-weight: bold;">/</span></pre></div></div>

</li>
<li>让svn知道你想把文件加到仓库中

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">my-local-dir<span style="color: #000000; font-weight: bold;">/</span>$ <span style="color: #c20cb9; font-weight: bold;">svn</span> add trunk<span style="color: #000000; font-weight: bold;">/*</span>
<span style="color: #000000; font-weight: bold;">&gt;</span> A    trunk<span style="color: #000000; font-weight: bold;">/</span>my-plugin.php
<span style="color: #000000; font-weight: bold;">&gt;</span> A    trunk<span style="color: #000000; font-weight: bold;">/</span>readme.txt</pre></div></div>

</li>
<li>开始上传你的插件吧

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">my-local-dir<span style="color: #000000; font-weight: bold;">/</span>$ <span style="color: #c20cb9; font-weight: bold;">svn</span> ci <span style="color: #660033;">-m</span> <span style="color: #ff0000;">'Adding first version of my plugin'</span></pre></div></div>

<p>    回车之后会要求你输入用户名密码，这个就是你在官网申请的用户名密码。完了之后下面就开始显示和传输文件，最后会显示版本号。</li>
</ol>
<p>&nbsp;&nbsp;&nbsp; 很快，你就可以在官网插件目录中找到你的插件啦 ：）</p>
<p><strong>5. 修改插件</strong></p>
<ol type="a">
<li>检查本地版本是不是最新的，否则你就需要从仓库中下载最新的版本

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">my-local-dir<span style="color: #000000; font-weight: bold;">/</span>$ <span style="color: #c20cb9; font-weight: bold;">svn</span> up
<span style="color: #000000; font-weight: bold;">&gt;</span> At revision <span style="color: #000000;">11326</span>.</pre></div></div>

<p>    看这个版本号是否和你最后一次提交的版本号一致。<br />
    &nbsp;</li>
<li>对你的插件进行修改，工具无所谓你可以用vi,nano,gedit,甚至记事本

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">vi</span> trunk<span style="color: #000000; font-weight: bold;">/</span>my-plugin.php</pre></div></div>

</li>
<li>检查本地文件的状态

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">my-local-dir<span style="color: #000000; font-weight: bold;">/</span>$ <span style="color: #c20cb9; font-weight: bold;">svn</span> <span style="color: #c20cb9; font-weight: bold;">stat</span>
<span style="color: #000000; font-weight: bold;">&gt;</span> M    trunk<span style="color: #000000; font-weight: bold;">/</span>my-plugin.php</pre></div></div>

<p>    M 说明你已经对这个文件进行了修改（Modified）</li>
<li>你可以使用svn diff来查看修改过的地方</li>
<li>提交你的修改到服务器

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">my-local-dir<span style="color: #000000; font-weight: bold;">/</span>$ <span style="color: #c20cb9; font-weight: bold;">svn</span> ci <span style="color: #660033;">-m</span> <span style="color: #ff0000;">&quot;fancy new feature: now you can foo *and* bar at the same time&quot;</span>
<span style="color: #000000; font-weight: bold;">&gt;</span> Sending    trunk<span style="color: #000000; font-weight: bold;">/</span>my-plugin.php
<span style="color: #000000; font-weight: bold;">&gt;</span> Transmitting <span style="color: #c20cb9; font-weight: bold;">file</span> data .
<span style="color: #000000; font-weight: bold;">&gt;</span> Committed revision <span style="color: #000000;">11327</span>.</pre></div></div>

</li>
</ol>
<p><strong>6. 标记一个新的版本</strong></p>
<p>&nbsp;&nbsp;&nbsp; 用版本号来标记：&nbsp;&nbsp;&nbsp;</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">my-local-dir<span style="color: #000000; font-weight: bold;">/</span>$ <span style="color: #c20cb9; font-weight: bold;">svn</span> <span style="color: #c20cb9; font-weight: bold;">cp</span> trunk tags<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">2.0</span>
<span style="color: #000000; font-weight: bold;">&gt;</span> A tags<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">2.0</span></pre></div></div>

<p>
&nbsp;&nbsp;&nbsp; 提交更新：</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">my-local-dir<span style="color: #000000; font-weight: bold;">/</span>$ <span style="color: #c20cb9; font-weight: bold;">svn</span> ci <span style="color: #660033;">-m</span> <span style="color: #ff0000;">&quot;tagging version 2.0&quot;</span>
<span style="color: #000000; font-weight: bold;">&gt;</span> Adding         tags<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">2.0</span>
<span style="color: #000000; font-weight: bold;">&gt;</span> Adding         tags<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">2.0</span><span style="color: #000000; font-weight: bold;">/</span>my-plugin.php
<span style="color: #000000; font-weight: bold;">&gt;</span> Adding         tags<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">2.0</span><span style="color: #000000; font-weight: bold;">/</span>readme.txt
<span style="color: #000000; font-weight: bold;">&gt;</span> Committed revision <span style="color: #000000;">11328</span>.</pre></div></div>

<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://pwwang.com/2009/11/25/distribute-wordpress-plugin/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>WP-plugin:Verification Code for Comments(评论验证码)</title>
		<link>http://pwwang.com/2009/11/23/verification-code-for-comments/</link>
		<comments>http://pwwang.com/2009/11/23/verification-code-for-comments/#comments</comments>
		<pubDate>Mon, 23 Nov 2009 09:07:08 +0000</pubDate>
		<dc:creator>pwwang</dc:creator>
				<category><![CDATA[WP/WP Plugins]]></category>
		<category><![CDATA[WP插件]]></category>

		<guid isPermaLink="false">http://pwwang.com/?p=816</guid>
		<description><![CDATA[&#160;

之前写了一篇 非插件防垃圾评论， 用的是简单的数学等式。但是需要对主题中comments.php以及wp-comment-post.php进行修改，不太方便。于是便动手写了一个插件，不仅可以采用数学等式验证，更可以使用图片验证码。

&#160;

<span class="readmore"><a href="http://pwwang.com/2009/11/23/verification-code-for-comments/" title="WP-plugin:Verification Code for Comments(评论验证码)">Read More: 693 Words Totally</a></span>]]></description>
			<content:encoded><![CDATA[<p>&nbsp;</p>
<p>之前写了一篇 非插件防垃圾评论， 用的是简单的数学等式。但是需要对主题中comments.php以及wp-comment-post.php进行修改，不太方便。于是便动手写了一个插件，不仅可以采用数学等式验证，更可以使用图片验证码。</p>
<p>&nbsp;</p>
<p>Add an verification code when user posting a comment to keep  robots away. You can use an image verification code or a math equation instead.</p>
<p>Robots may post lots of spam comments into your database.  You can add a verification code image or a math equation to avoid this.</p>
<p>Features:</p>
<ul>
<li>You can choose a verification code image or a math equation  as you wish</li>
<li>You don&#8217;t need to edit any source code of WP, you just need  to active the plugin</li>
</ul>
<p>&nbsp;<span id="more-816"></span></p>
<p>&nbsp;</p>
<ol class="screenshots">
<li><img _extended="true" src="http://pwwang.com/wp-content/uploads/2009/11/screenshot-1.png" alt="verification-code-for-comments screenshot 1" class="screenshot" />
<p>configuration panel</p>
</li>
<li><img _extended="true" src="http://pwwang.com/wp-content/uploads/2009/11/screenshot-2.png" alt="verification-code-for-comments screenshot 2" class="screenshot" />
<p>a verification code image</p>
</li>
<li><img _extended="true" src="http://pwwang.com/wp-content/uploads/2009/11/screenshot-3.png" alt="verification-code-for-comments screenshot 3" class="screenshot" />
<p>a verification math equation</p>
</li>
<li><img _extended="true" src="http://pwwang.com/wp-content/uploads/2009/11/screenshot-4.png" alt="verification-code-for-comments screenshot 4" class="screenshot" />
<p>the error message when invalid code was  entered</p>
</li>
</ol>
<p>&nbsp;</p>
<p>&nbsp;<span style="font-size: small;"><strong>Change Log:</strong></span></p>
<p>1.0.0&nbsp;&nbsp; Finish the basic functions</p>
<p>&nbsp;</p>
<p><strong><span style="font-size: small;">Download/Install:</span></strong></p>
<p><a href="http://wordpress.org/extend/plugins/verification-code-for-comments/" target="_blank">http://wordpress.org/extend/plugins/verification-code-for-comments/</a></p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://pwwang.com/2009/11/23/verification-code-for-comments/feed/</wfw:commentRss>
		<slash:comments>31</slash:comments>
		</item>
		<item>
		<title>Dean&#8217;s FCKEditor With pwwang&#8217;s code plugin For WordPress</title>
		<link>http://pwwang.com/2009/10/23/deans-fckeditor-with-pwwangs-code-plugin-for-wordpress/</link>
		<comments>http://pwwang.com/2009/10/23/deans-fckeditor-with-pwwangs-code-plugin-for-wordpress/#comments</comments>
		<pubDate>Fri, 23 Oct 2009 04:05:31 +0000</pubDate>
		<dc:creator>pwwang</dc:creator>
				<category><![CDATA[WP/WP Plugins]]></category>
		<category><![CDATA[FCKeditor]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[WP插件]]></category>

		<guid isPermaLink="false">http://pwwang.com/?p=742</guid>
		<description><![CDATA[This plugin replaces the default WordPress editor with Dean&#8217;s FCKeditor with pwwang&#8217;s code plugin



Contributors: dean pwwang

<span class="readmore"><a href="http://pwwang.com/2009/10/23/deans-fckeditor-with-pwwangs-code-plugin-for-wordpress/" title="Dean&#8217;s FCKEditor With pwwang&#8217;s code plugin For WordPress">Read More: 1437 Words Totally</a></span>]]></description>
			<content:encoded><![CDATA[<p><em>This plugin replaces the default WordPress editor with Dean&#8217;s FCKeditor with pwwang&#8217;s code plugin</em></p>
<hr />
<p><strong>Contributors:</strong> dean pwwang<br />
<strong>Donate link:</strong> http://pwwang.com/<br />
<strong>Tags:</strong> post, fckeditor, editor, WYSIWYG, code<br />
<strong>Requires at least:</strong> 2.2<br />
<strong>Tested up to:</strong> 2.7.4<br />
<strong>Stable tag:</strong> trunk</p>
<p><span id="more-742"></span><br />
<hr />
<h3>Description</h3>
<p>This plugin replaces the default WordPress editor with <a href="http://www.deanlee.cn/wordpress/fckeditor-for-wordpress-plugin/">Dean&#8217;s FCKeditor</a> with pwwang&#8217;s code plugin</p>
<p>FCKeditor is an open source WYSIWYG text editor ,brings to the web much of the power of desktop editors like MS Word.it&#8217;s lightweight and is compatible with most internet browsers which include: IE 5.5+ (Windows), Firefox 1.0+, Mozilla 1.3+ and Netscape 7+. Dean Lee has modified it and made it fit for wordpress.</p>
<p>Features:</p>
<ul>
<li>media buttons</li>
<li>Build-in File manager and upload manager</li>
<li>Build-in WordPress &quot;read more&quot; Button</li>
<li>Integrated with WordPress media buttons</li>
<li>Manage and insert smileys into your post</li>
<li>Customize editor&#8217;s skin</li>
<li>&#8212;above: Dean&#8217;s had, below: pwwang added&#8212;<br />
    <span style="color: #ff6600">** Build-in &quot;Insert Codes&quot; Button <br />
    ** Block wordpress codes(pre lang=&quot;&#8230;&quot;) <br />
    ** Support mainstream code highlight plugin(wp-codebox,wp-syntax)</span></li>
<li>内建&ldquo;插入代码&rdquo;按钮</li>
<li>将你插入的代码保护起来，代码标记（pre lang=&quot;&quot;）</li>
<li>支持主流代码高亮插件（wp-codebox,wp-syntax）</li>
</ul>
<hr />
<h3>Installation</h3>
<ol>
<li>Upload this plugin to the <code>/wp-content/plugins/</code> directory.</li>
<li>Deactive or uninstall(RECOMMANDED) Dean&#8217;s editor.</li>
<li>Activate the plugin through the &#8216;Plugins&#8217; menu in WordPress.</li>
</ol>
<hr />
<h3>Frequently Asked Questions</h3>
<ol>
<li>Browsers supported? IE &amp; Firefox</li>
</ol>
<hr />
<h3>Screenshots</h3>
<ol>
<li>fckeditor&nbsp;<br />
    <img border="0" alt="" style="clear: both" src=" http://pwwang.com/wp-content/uploads/fckeditor/screenshot-1.png" /></li>
<li>build-in &quot;Insert Codes&quot; Button <br />
    <img border="0" alt="" zmxid="zoomXimageId1" style="clear: both" src="http://pwwang.com/wp-content/uploads/fckeditor/insertCodes.jpg" /></li>
<li>&quot;Insert Codes&quot; Dialog <br />
    <img border="0" alt="" zmxid="zoomXimageId2" style="clear: both" src="http://pwwang.com/wp-content/uploads/fckeditor/addCodes.jpg" /></li>
<li>&quot;Edit Codes&quot; popMenu <br />
    <img border="0" alt="" zmxid="zoomXimageId3" style="clear: both" src="http://pwwang.com/wp-content/uploads/fckeditor/codes.jpg" /></li>
</ol>
<hr />
<h3>Changelog</h3>
<p>=1.0= with code plugin</p>
<p><span style="color: #ff6600"><strong>Official Page URI:</strong></span> <a href="http://wordpress.org/extend/plugins/deans-fckeditor-with-pwwangs-code-plugin-for-wordpress/">http://wordpress.org/extend/plugins/deans-fckeditor-with-pwwangs-code-plugin-for-wordpress/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://pwwang.com/2009/10/23/deans-fckeditor-with-pwwangs-code-plugin-for-wordpress/feed/</wfw:commentRss>
		<slash:comments>38</slash:comments>
		</item>
		<item>
		<title>谁动了你的代码？&#8211;FCKEditor插件code开发小记</title>
		<link>http://pwwang.com/2009/10/21/who_moved_your_codes/</link>
		<comments>http://pwwang.com/2009/10/21/who_moved_your_codes/#comments</comments>
		<pubDate>Wed, 21 Oct 2009 08:02:06 +0000</pubDate>
		<dc:creator>pwwang</dc:creator>
				<category><![CDATA[WP/WP Plugins]]></category>
		<category><![CDATA[FCKeditor]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[WP插件]]></category>

		<guid isPermaLink="false">http://pwwang.com/?p=727</guid>
		<description><![CDATA[&#160;

WordPress，个人觉得就是为喜欢折腾的人而生的。我就是其中之一，并乐此不疲。

好的插件总想跃跃欲试，好的效果，总是想改了再改。

<span class="readmore"><a href="http://pwwang.com/2009/10/21/who_moved_your_codes/" title="谁动了你的代码？&#8211;FCKEditor插件code开发小记">Read More: 4667 Words Totally</a></span>]]></description>
			<content:encoded><![CDATA[<p>&nbsp;</p>
<p>WordPress，个人觉得就是为喜欢折腾的人而生的。我就是其中之一，并乐此不疲。</p>
<p>好的插件总想跃跃欲试，好的效果，总是想改了再改。</p>
<p>无论是wp程序的更新，还是主题的更新与更换，我总是要小心翼翼地做好备份。因为程序已经被我改得遍体鳞伤，记得上次更新主题，改到之前的效果，不知道耗死了多少脑细胞！</p>
<p>对于插件，我就更无语，能让人省心的插件还真不多。当然，这也不能怪作者，他们也不可能所有的情况都考虑到，所有的环境都测试到。往往我改过的插件，我都不敢再更新，我的做法就是把他们的版本改得很高。让wordpress不再自做多情地提示升级插件。</p>
<p>无论有多么强大的功能，wp只是一个博客程序，最基本的功能还是发文记事。一个好的编辑器是必不可少的。然而wp自带的编辑器为免显得寒酸了点。这时强大的FCKEditor就有了用武之地。</p>
<p>Dean将其改为wp所用，并加入了wpmore插件，可以很方便的插入readmore。上一个版本是2.5。最近出来3.1。当时我看到FCKEditor有更新的时候，真的欣喜万分，真的很期待很多问题能够解决掉。不过让我失望的是，问题没有解决，还出现了新的问题。原来的编辑器和新的编辑器在Firefox下都表现良好。而IE则出现了各种各样奇怪的问题。</p>
<p><span id="more-727"></span>原版本的问题是，如果你的文章中含有某些HTML元素（具体是哪些，这个我没有测试），就无法切换到源代码视图。我看了一下出错的信息：this.Elements[...].outerHTML为空或不是对象。找到出错了那一行，加了一个判断语句：&nbsp;</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #000066; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">Elements</span><span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span> <span style="color: #006600; font-style: italic;">//pwwang</span>
    <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">Elements</span><span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #3366CC;">'&lt;div&gt; '</span> <span style="color: #339933;">+</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">Elements</span><span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span>.<span style="color: #660066;">outerHTML</span> <span style="color: #339933;">+</span> <span style="color: #3366CC;">'&lt;/div&gt;'</span> <span style="color: #339933;">;</span>
    <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">Elements</span><span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span>.<span style="color: #660066;">isHtml</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">true</span> <span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>&nbsp;这样就不影响切换到源代码视图了。</p>
<p>而新版本的问题则更为离谱，先是好用的wpmore插件没了，然后是载入不了文章（这个有可能是网络的问题），最大的问题在于，切换到源代码视图（无法切换的问题已经得到修正）后，竟然无法切换到所见即所得模式视图，这个真是有点不可容忍，于是赶紧卸载了，装回原来的2.5版本。这个时候如果报错的话，检查一下是否需要重新生成smily图片缓存（在wp的设置中）</p>
<p>至少现在2.5在发一般的文章时问题还是不大的。于是将2.5的版本版了一下（在插件主文件的前几行注释中），以免wp总是提示升级。</p>
<p>说了这么多，还没有到代码的问题上来。</p>
<p>上面说过，dean&#8217;s fckeditor for wordpress 2.5在发一般文章时是很好用的，可是如果你想贴代码，那可谓是苦不堪言。并且一旦你的文章写好了，你就不敢再修改了，因为你不知道fckeditor会把你的文章变成什么样子。FCKEditor会把你的代码中与HTML相关的代码进行自动转换！！但是，这不能怪fckeditor自作多情，因为fckeditor的很多操作都要用到dom，如果你插入的代码打乱了dom树，那fckeditor的很多功能就不能用了，甚至很有可能崩溃。</p>
<p>那我们就眼睁睁和看着我们的代码被蹂躏得面目全非吗？？</p>
<p>No, never!!</p>
<p>早前我就有过尝试，我开始以为是我们用的代码插件对我们的代码抛了媚眼。后来才发现我错了，其实它们（wp-codebox,wp-syntax）从来就没有勾引过我们的代码，也没有从中拿过回扣，他们只是在显示的时候让不同的字符串穿上不同的衣服而已。</p>
<p>那到底是谁动了我们的代码？</p>
<p>毫无疑问，只有编辑器。仔细看就知道，你在源代码视图下输入好的代码，切换到所见即所得视图，再切换源代码视图的时候，代码就已经面目全非了。而写进数据库的，就是源代码视图下的那些字符！我们在源代码视图下敲入的字符就是我们想存进数据库的东西，你乱动个什么？！可是原因我已经在前面解释了，它也很无奈，为了生存啊！之前我写的那篇《<a target="_blank" href="http://pwwang.com/technology/wp-wp-plugins/%e5%91%8a%e5%88%abwordpress%e8%b4%b4%e4%bb%a3%e7%a0%81%e7%9a%84%e7%83%a6%e6%81%bc/">告别wordpress贴代码的烦恼</a>》，只治到了标，而没有治到本，之前有想过不让编辑器动我们的代码，可是看看fckeditor的源码，只能望而却步，于是退而求其次，既然你编辑器动了我的代码，那我在显示的时候再动回去就行了。这样在发表和显示文章的时候都没有问题，可以问题还是出在编辑文章上，因为开始编辑文章的时候，语法高亮插件根本就插不上脚！编辑器这时候终于威风一把。</p>
<p>其实想想，有时候我们是需要编辑器对我们的代码动动手脚的。你想想，如果你在源代码视图中，某个tag的名字敲错了怎么办？或者某个tag忘了关闭怎么办 ？如果编辑器不能你纠正的话，等到发表后，在网页中显示的时候，那就很有可能打乱你整个网站的结构了！这一点也不耸人听闻！</p>
<p>那很明显，我们只是想它不动我们的代码而已。而现在主流的语法高亮插件都是通过pre来实现的，就像上面提到的wp-codebox和wp-syntax，语言则采用lang来指定。那就好办了，我们只需要在编辑的时候将这个pre块保护住就行了。</p>
<p>怎么保护？</p>
<p>思路很简单，我们可以先正则表达式将这样的代码块找出来，然后将这些代码块在所见即所得视图下用FakeImage来保护住（FCKEditor的一种机制）。那么我们现在可以来整理一个整个思路了。</p>
<p>我们可以在fckeditor中添加一个工具栏插件：</p>
<p><img border="0" src="http://pwwang.com/wp-content/uploads/fckeditor/insertCodes.jpg" style="clear: both;" alt="" /></p>
<p>然后弹出一个对话框，让用户输入语言类型，其他属性以及代码：</p>
<p><img border="0" src="http://pwwang.com/wp-content/uploads/fckeditor/addCodes.jpg" style="clear: both;" alt="" /></p>
<p>代码输入好之后，确定，在所见即所得视图下就会出现一个Fakeimage：</p>
<p><img border="0" src="http://pwwang.com/wp-content/uploads/fckeditor/codes.jpg" style="clear: both;" alt="" /></p>
<p>点击右键就可以编辑代码了。这样就算你切换到源代码视图，再切换到所见即所得视图，代码还是被保护住的。（这时候Firefox会将换行转换成br，只需要点击那个Translate BR按钮就可以恢复格式。这一点，IE倒不会转换。）特别值得提一下的是，如果你插入的是HTML代码，请使用Translate &lt;&gt;按钮，这样可以保护你的HTML代码不被浏览器当作源代码处理（这个要先按照《<a target="_blank" href="http://pwwang.com/technology/wp-wp-plugins/%e5%91%8a%e5%88%abwordpress%e8%b4%b4%e4%bb%a3%e7%a0%81%e7%9a%84%e7%83%a6%e6%81%bc/">告别wordpress贴代码的烦恼</a>》进行修改）。另外，这样还可以防止你的代码中含有&lt;/pre&gt;而将代码截断（正则匹配采用的非贪婪模式）</p>
<p>以后，无论文章里是否包含代码，都可以在源代码和所见即所得视图中随意切换。</p>
<p><strong>后记：</strong></p>
<p>贴代码的问题相信已经困扰了wordpresser们很久了。现在总算有了一个初步的方案。</p>
<p>想说的，还是浏览器的问题。</p>
<p>由于IE没有很好的js调试工具，所以一直是在firefox下调试开发完成的。另外FCKEditor的插件机制实在不敢恭维，至少仅仅在插件目录中写代码是难已完成的。这一点，wp就要好多了。当然，客户端语言和服务端是没法相比的。直到所有的功能在firefox下运行正常之后，我才去ie下测试。</p>
<p>开始的问题的右键点击FakeImage根本就没有Edit Codes菜单出现。还以为是浏览器的缓存问题（IE总是喜欢自作多情的缓存，浏览器真应该有个选项，是否禁用缓存。速度上虽然是快了，但是却给开发者带来不少的麻烦，话说回来，反正MS就没有为开发人员切身考虑过，Firefox下的Web Developer插件就能很好地禁用缓存），后来发现并不是，而是IE根本就无法判断右键菜单的listener是FakeImage，原来IE下要获得一个元素的class属性，用getAttribute(&lsquo;class&rsquo;)是得不到的，只能用getAttribute(&lsquo;className&rsquo;)。真的有点莫名。</p>
<p>在Firefox下功能正常后，我以为会松下一口气，可是没想到，右键菜单的问题解决后，IE又出了问题。它把我所有代码中的换行和制表符全部都变成了空格，这怎么行？代码的美感就来自于此。原来，我在往源代码视图插入代码的时候，获取了原来代码块的代码，然后通过innerHTML赋给了新建的DOM元素pre，问题就出在这个innerHTML上，Firefox中是没有问题的，可是在IE中，问题就是这么千奇百怪。于是迅速上百度Google一下，说的都是innerHTML自动闭合标签和把标签名转变为大写的问题，这样的问题压根没有。这下我可真有点泄气了，好好的一个功能就要实现了，难道要夭折？</p>
<p>这里也许有个会说，插入的时候直接用HTML字符串插入，这样就不会转换了吧。是的，我也这么想，可以FCKEditor不这么想，它只能采用DOM结点的方式进行插入。于是想到了是否可以将HTML字符串转换成DOM Node，再上百度Google，找到一个，但是我一看有innerHTML，就觉得没戏了。</p>
<p>乍然想起jQuery不是可以直接将字符串转化为jQuery对象吗？</p>
<p>我先用jQuery测试了一下，</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#a'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">append</span><span style="color: #009900;">&#40;</span>HTML2Element<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'&lt;pre&gt;FCKCode.prototype.Execute=function()<span style="color: #000099; font-weight: bold;">\n</span>{<span style="color: #000099; font-weight: bold;">\n</span><span style="color: #000099; font-weight: bold;">\t</span>var oPre = FCK.EditorDocument.createElement( <span style="color: #000099; font-weight: bold;">\'</span>pre<span style="color: #000099; font-weight: bold;">\'</span> );<span style="color: #000099; font-weight: bold;">\n</span><span style="color: #000099; font-weight: bold;">\t</span>var oFakeImage = FCKDocumentProcessor_CreateFakeImage( <span style="color: #000099; font-weight: bold;">\'</span>FCK_Code<span style="color: #000099; font-weight: bold;">\'</span>, oPre) ;<span style="color: #000099; font-weight: bold;">\n</span><span style="color: #000099; font-weight: bold;">\t</span>oFakeImage    = FCK.InsertElement( oFakeImage ) ;<span style="color: #000099; font-weight: bold;">\n</span>}&lt;/pre&gt;'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #003366; font-weight: bold;">function</span> HTML2Element<span style="color: #009900;">&#40;</span>str<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    <span style="color: #003366; font-weight: bold;">var</span> $div <span style="color: #339933;">=</span> $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'div'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">append</span><span style="color: #009900;">&#40;</span>str<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000066; font-weight: bold;">return</span> $div.<span style="color: #660066;">children</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>发现测试成功，浏览器将换行和制表符都原封不动地输出！IE&amp;Firefox表现都正常。</p>
<p>可是，我总是至于要把jQuery也拉进来吧，本来FCKEditor就不小了。jQuery的插入的实现也是要通过dom的吧，那jQuery肯定在某一步将字符串转换为了Node。翻开jQuery的源码，发现DomManip函数就是干了这样一件事。可是我看到下面仍然用了innerHTML。由于就很奇怪了，难道jQuery用了什么魔法让IE的innerHTML听话了？</p>
<p>于是将jQuery的DomManip（可以转换多个HTML字符串）函数简化，测试了一下，也成功。对比了一下，发现DomManip的innerHTML插入的时候字符串是用tag包裹好的元素，而我插入的就是一个字符串。问题出在这。那么一个简单地将单元素的HTML字符串转化为Node的函数就出炉了：</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">function</span> str2Node<span style="color: #009900;">&#40;</span>str<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    <span style="color: #003366; font-weight: bold;">var</span> $div <span style="color: #339933;">=</span> document.<span style="color: #660066;">createElement</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'div'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    $div.<span style="color: #660066;">innerHTML</span> <span style="color: #339933;">=</span> str<span style="color: #339933;">;</span>
    <span style="color: #000066; font-weight: bold;">return</span> $div.<span style="color: #660066;">childNodes</span><span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>顺带贴一下将Node转化为HTML字符串的函数，其实就是IE下outerHTML，可惜Firefox不支持：</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">function</span> node2HTML<span style="color: #009900;">&#40;</span>node<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    <span style="color: #003366; font-weight: bold;">var</span> t <span style="color: #339933;">=</span> node.<span style="color: #660066;">tagName</span><span style="color: #339933;">;</span>
    <span style="color: #003366; font-weight: bold;">var</span> ret <span style="color: #339933;">=</span> <span style="color: #3366CC;">'&lt;'</span><span style="color: #339933;">+</span>t<span style="color: #339933;">;</span>
    <span style="color: #003366; font-weight: bold;">var</span> attrs <span style="color: #339933;">=</span> node.<span style="color: #660066;">attributes</span><span style="color: #339933;">;</span>
    <span style="color: #000066; font-weight: bold;">for</span><span style="color: #009900;">&#40;</span> <span style="color: #003366; font-weight: bold;">var</span> i<span style="color: #339933;">=</span><span style="color: #CC0000;">0</span><span style="color: #339933;">;</span> i<span style="color: #339933;">&lt;</span>attrs.<span style="color: #660066;">length</span><span style="color: #339933;">;</span> i<span style="color: #339933;">++</span> <span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        attr <span style="color: #339933;">=</span> attrs<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
        <span style="color: #000066; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span> attr.<span style="color: #660066;">specified</span> <span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
            ret <span style="color: #339933;">+=</span> <span style="color: #3366CC;">' '</span> <span style="color: #339933;">+</span> attr.<span style="color: #000066;">name</span> <span style="color: #339933;">+</span> <span style="color: #3366CC;">'=&quot;'</span> <span style="color: #339933;">+</span> attr.<span style="color: #660066;">value</span> <span style="color: #339933;">+</span> <span style="color: #3366CC;">'&quot;'</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span>
    ret <span style="color: #339933;">+=</span> <span style="color: #3366CC;">'&gt;'</span> <span style="color: #339933;">+</span> node.<span style="color: #660066;">innerHTML</span> <span style="color: #339933;">+</span> <span style="color: #3366CC;">'&lt;/'</span> <span style="color: #339933;">+</span> t <span style="color: #339933;">+</span> <span style="color: #3366CC;">'&gt;'</span><span style="color: #339933;">;</span>
    <span style="color: #000066; font-weight: bold;">return</span> ret<span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>这样，就可以不经innerHTML的转换将字符串转化为Node从而插入FCKEditor的源代码视图。按照这个思路，问题终于圆满解决！</p>
]]></content:encoded>
			<wfw:commentRss>http://pwwang.com/2009/10/21/who_moved_your_codes/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>解决quick comments和wp-codebox插件的冲突</title>
		<link>http://pwwang.com/2009/10/14/%e8%a7%a3%e5%86%b3quick-comments%e5%92%8cwp-codebox%e6%8f%92%e4%bb%b6%e7%9a%84%e5%86%b2%e7%aa%81/</link>
		<comments>http://pwwang.com/2009/10/14/%e8%a7%a3%e5%86%b3quick-comments%e5%92%8cwp-codebox%e6%8f%92%e4%bb%b6%e7%9a%84%e5%86%b2%e7%aa%81/#comments</comments>
		<pubDate>Wed, 14 Oct 2009 12:49:06 +0000</pubDate>
		<dc:creator>pwwang</dc:creator>
				<category><![CDATA[WP/WP Plugins]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://pwwang.com/?p=703</guid>
		<description><![CDATA[这简直是一段血泪史。。。。。。

一切都是折腾惹的祸！

事情是这样的：

<span class="readmore"><a href="http://pwwang.com/2009/10/14/%e8%a7%a3%e5%86%b3quick-comments%e5%92%8cwp-codebox%e6%8f%92%e4%bb%b6%e7%9a%84%e5%86%b2%e7%aa%81/" title="解决quick comments和wp-codebox插件的冲突">Read More: 2223 Words Totally</a></span>]]></description>
			<content:encoded><![CDATA[<p>这简直是一段血泪史。。。。。。</p>
<p>一切都是折腾惹的祸！</p>
<p>事情是这样的：</p>
<p>一直以来我都想用上quick comments，因为每一次访客留言的时候，如果输入有误，系统就会直接调用wp-die，给出一个硬生生的报错页面，并且没有返回按钮，用浏览器返回之后，事先敲入的字符就会全部88。</p>
<p>在这款皮肤的版本还是3.X的时候，我试了一下，不行，效果是页面直接跳到了要载入的ajax结果页面，很是郁闷。后面这款皮肤出了4.X的新版本（先在这里感谢作者），作者在更新历史上明确地写上了支持quick comments，后来我对比看了一下，皮肤作者把留言form中的元素用jQuery作选择器的方式作了一下改变，简单地说，就是把 #commentlist 改成了 .commentlist（我不太确定是不是还有其他的原因作这个修改），其实这个在quick comments中是可以设置的。说得有点远了。。。</p>
<p>我激活了quick comments，可以和之前的效果一样，我不禁开始怀疑作者在更新日志里那么明确地写上支持quick comments到底是什么意思？明明说好了支持，怎么还是不行。。。我只好望ajax兴叹了。</p>
<p><span id="more-703"></span></p>
<p>不甘心，于是用firebug进行调试（在提交留言的时候显示有js错误）。提示是</p>
<blockquote>
<p>I(this).block 没有定义</p>
</blockquote>
<p>真是奇了怪了，quick comments的作者在加载script的时候加载了jquery.blockUI啊，我以为是这个js文件没有加载上，于是我在这个js文件中加了一句话。什么，你问哪句话？就是这句：</p>
<blockquote>
<p>alert(12345);</p>
</blockquote>
<p>结果在重载页面的时候就听到&ldquo;叮咚&rdquo;一声，弹出来12345！其实我之前已经在Web developer里看到了jquery.blockUI.min.js已经加载了。只是不死心而已。</p>
<p>但是我继续不死心，在这个文件的最下面又加了一句话：</p>
<blockquote>
<p>alert(jQuery['blockUI']);</p>
</blockquote>
<p>结果是叮咚一声，出来一个undefined！天哪，我真是要抓狂了，上面定义了(function($){&nbsp;$.blockUI = function(){&#8230;}&nbsp;})(jQuery);&nbsp; 接着在下面alert居然是undefined.</p>
<p>我真的有点手足无措了。</p>
<p>。。。。。。</p>
<p>我找到了一个用quick comments的博客，把它的源代码打开看了一下，发现blockUI和scrollTo的调用在比较靠前的地方，于是我尝试着改add_action的priority（作者采用这个来加载js，priority可以用来设置执行的优先级），仍然未果，实际上调用顺序并没有改变。</p>
<p>一怒之下（其实早就怒了），我把这个页面另存为，把所有的js文件都下载下来，在本地运行。并在头部加了一段js：</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">jQuery<span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span> <span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'jQuery['</span>blockUI<span style="color: #3366CC;">']'</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>依然是undefined，于是我在上面这段代码之上又加了一段代码：</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>$<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span> $.<span style="color: #660066;">blockUI</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>...<span style="color: #009900;">&#125;</span> <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#40;</span>jQuery<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> </pre></div></div>

<p>就是把blockUI自己定义一下，这下就出现了自己定义的内容，于是我明白了，在调用jquery.blockUI的地方到上面这段代码之间有一些js代码这blockUI给&ldquo;洗&rdquo;掉了。</p>
<p>然后，我把jquery.blockUI往不同的地方移，最后终于发现，洗掉它的是wp-codebox调用的jquery.js（这之前jquery.js已经被调用了）！到这才发现是wp-codebox惹的祸。。。万恶的wp-codebox。三下五除二，把wp-codebox中调用jquery.js的地方注释掉，以为问题解决了。</p>
<p>当回到首页的时候，发现wp-codebox又无法正常了，因为缺少了jquery.js！首页不需要quick comments，所以也没有调用jquery.js。</p>
<p>于是把wp-codebox中注释掉的地方改了一下，如果jQuery存在，则不调用jquery.js，反之则调用之。</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$hHead</span> <span style="color: #339933;">.=</span> <span style="color: #0000ff;">&quot;     &lt;script type=<span style="color: #000099; font-weight: bold;">\&quot;</span>text\/javascript<span style="color: #000099; font-weight: bold;">\&quot;</span>&gt;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;&lt;</span>br <span style="color: #339933;">/&gt;</span>
<span style="color: #000088;">$hHead</span> <span style="color: #339933;">.=</span> <span style="color: #0000ff;">&quot;             if(typeof jQuery === <span style="color: #000099; font-weight: bold;">\&quot;</span>undefined<span style="color: #000099; font-weight: bold;">\&quot;</span>){<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;&lt;</span>br <span style="color: #339933;">/&gt;</span>
<span style="color: #000088;">$hHead</span> <span style="color: #339933;">.=</span> <span style="color: #0000ff;">&quot;                     document.write('&lt;script language=<span style="color: #000099; font-weight: bold;">\&quot;</span>javascript<span style="color: #000099; font-weight: bold;">\&quot;</span> type=<span style="color: #000099; font-weight: bold;">\&quot;</span>text/javascript<span style="color: #000099; font-weight: bold;">\&quot;</span> src=<span style="color: #000099; font-weight: bold;">\&quot;</span>&quot;</span><span style="color: #339933;">.</span>get_bloginfo<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'wpurl'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;/wp-includes/js/jquery/jquery.js<span style="color: #000099; font-weight: bold;">\&quot;</span>&gt;&lt;\/script&gt;');<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>  <span style="color: #666666; font-style: italic;">//这里是修改后动态调用，modified by pwwang&lt;br /&gt;</span>
<span style="color: #000088;">$hHead</span> <span style="color: #339933;">.=</span> <span style="color: #0000ff;">&quot;             }<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;&lt;</span>br <span style="color: #339933;">/&gt;</span>
<span style="color: #000088;">$hHead</span> <span style="color: #339933;">.=</span> <span style="color: #0000ff;">&quot;     &lt;/script&gt;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;&lt;</span>br <span style="color: #339933;">/&gt;</span>
<span style="color: #666666; font-style: italic;">//$hHead .= &quot;   &lt;script language=\&quot;javascript\&quot; type=\&quot;text/javascript\&quot; src=\&quot;&quot;.get_bloginfo('wpurl').&quot;/wp-includes/js/jquery/jquery.js\&quot;&gt;&lt;/script&gt;\n&quot;;  //这里是直接调用</span></pre></div></div>

<p>至此，wp-codebox与quick comments终于和睦共存。。。</p>
<p>在此也要提醒那些写插件的朋友们，如果要用到jquery，在调用jquery.js文件之前，请先做一下检测！</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://pwwang.com/2009/10/14/%e8%a7%a3%e5%86%b3quick-comments%e5%92%8cwp-codebox%e6%8f%92%e4%bb%b6%e7%9a%84%e5%86%b2%e7%aa%81/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>wordpress非插件防垃圾评论方法</title>
		<link>http://pwwang.com/2009/09/14/wordpress%e9%9d%9e%e6%8f%92%e4%bb%b6%e9%98%b2%e5%9e%83%e5%9c%be%e8%af%84%e8%ae%ba%e6%96%b9%e6%b3%95/</link>
		<comments>http://pwwang.com/2009/09/14/wordpress%e9%9d%9e%e6%8f%92%e4%bb%b6%e9%98%b2%e5%9e%83%e5%9c%be%e8%af%84%e8%ae%ba%e6%96%b9%e6%b3%95/#comments</comments>
		<pubDate>Mon, 14 Sep 2009 01:56:50 +0000</pubDate>
		<dc:creator>pwwang</dc:creator>
				<category><![CDATA[WP/WP Plugins]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://pwwang.com/?p=646</guid>
		<description><![CDATA[这个方法来自网上, 已经被转载多次了, 很多地方叫 &#34;WordPress 代码添加算术验证码防止垃圾评论&#34;, 我已经无法找到原始出处. 我只是对它进行了一点小小的改进, 把它变成了 +-/* 四则运算. 方法也不是很复杂, 加入一个运算法则的变量就行了. 效果见下面的评论.

在主题文件夹里找到comments.php文件,在你想要显示输入框的地方加入代码:



<span class="readmore"><a href="http://pwwang.com/2009/09/14/wordpress%e9%9d%9e%e6%8f%92%e4%bb%b6%e9%98%b2%e5%9e%83%e5%9c%be%e8%af%84%e8%ae%ba%e6%96%b9%e6%b3%95/" title="wordpress非插件防垃圾评论方法">Read More: 166 Words Totally</a></span>]]></description>
			<content:encoded><![CDATA[<p>
这个方法来自网上, 已经被转载多次了, 很多地方叫 &quot;WordPress 代码添加算术验证码防止垃圾评论&quot;, 我已经无法找到原始出处. 我只是对它进行了一点小小的改进, 把它变成了 +-/* 四则运算. 方法也不是很复杂, 加入一个运算法则的变量就行了. 效果见下面的评论.</p>
<p>在主题文件夹里找到comments.php文件,在你想要显示输入框的地方加入代码:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;">     &lt;div class=&quot;row&quot;&gt;
    &lt;input type=&quot;text&quot; name=&quot;cal&quot; id=&quot;cal&quot; class=&quot;textfield&quot; value=&quot;&quot; size=&quot;24&quot; tabindex=&quot;4&quot; /&gt;
    &lt;label for=&quot;cal&quot; class=&quot;small&quot;&gt;<span style="color: #000000; font-weight: bold;">&lt;?php</span>
        <span style="color: #000088;">$b</span> <span style="color: #339933;">=</span> <span style="color: #990000;">rand</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">1</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">9</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #000088;">$c</span> <span style="color: #339933;">=</span> <span style="color: #990000;">rand</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">1</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">4</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$c</span><span style="color: #339933;">==</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><span style="color: #000088;">$a</span> <span style="color: #339933;">=</span> <span style="color: #990000;">rand</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">40</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #000088;">$s</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'+'</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span>
        <span style="color: #b1b100;">elseif</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$c</span><span style="color: #339933;">==</span><span style="color: #cc66cc;">2</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><span style="color: #000088;">$a</span> <span style="color: #339933;">=</span> <span style="color: #990000;">rand</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">30</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">+</span><span style="color: #000088;">$b</span><span style="color: #339933;">;</span> <span style="color: #000088;">$s</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'-'</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span>
        <span style="color: #b1b100;">elseif</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$c</span><span style="color: #339933;">==</span><span style="color: #cc66cc;">3</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><span style="color: #000088;">$a</span> <span style="color: #339933;">=</span> <span style="color: #990000;">rand</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">5</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #000088;">$s</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'*'</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span>
        <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span><span style="color: #000088;">$a</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$b</span><span style="color: #339933;">*</span><span style="color: #000088;">$c</span><span style="color: #339933;">;</span> <span style="color: #000088;">$s</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'/'</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span>
        <span style="color: #b1b100;">echo</span> _e<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;<span style="color: #006699; font-weight: bold;">$a</span> <span style="color: #006699; font-weight: bold;">$s</span> <span style="color: #006699; font-weight: bold;">$b</span> = ?&quot;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'elegantbox'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span> <span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$req</span><span style="color: #009900;">&#41;</span> _e<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'(required)'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'elegantbox'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>
    &lt;/label&gt;
    &lt;input name=&quot;a&quot; type=&quot;hidden&quot; value=&quot;<span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #b1b100;">echo</span> <span style="color: #000088;">$a</span><span style="color: #339933;">;</span><span style="color: #000000; font-weight: bold;">?&gt;</span>&quot; /&gt;
        &lt;input name=&quot;b&quot; type=&quot;hidden&quot; value=&quot;<span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #b1b100;">echo</span> <span style="color: #000088;">$b</span><span style="color: #339933;">;</span><span style="color: #000000; font-weight: bold;">?&gt;</span>&quot; /&gt;
    &lt;input name=&quot;c&quot; type=&quot;hidden&quot; value=&quot;<span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #b1b100;">echo</span> <span style="color: #000088;">$c</span><span style="color: #339933;">;</span><span style="color: #000000; font-weight: bold;">?&gt;</span>&quot; /&gt;
      &lt;/div&gt;</pre></div></div>

<p>&nbsp;</p>
<p>在文件wp-comments-post.php中加入如下代码进行验证:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span> <span style="color: #339933;">!</span><span style="color: #000088;">$user</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">ID</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #000088;">$a</span> <span style="color: #339933;">=</span> <span style="color: #990000;">trim</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_POST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'a'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000088;">$b</span> <span style="color: #339933;">=</span> <span style="color: #990000;">trim</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_POST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'b'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000088;">$c</span> <span style="color: #339933;">=</span> <span style="color: #990000;">trim</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_POST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'c'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000088;">$sub</span> <span style="color: #339933;">=</span> <span style="color: #990000;">trim</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_POST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'cal'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$c</span><span style="color: #339933;">==</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span> <span style="color: #000088;">$res</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>bool<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$sub</span> <span style="color: #339933;">==</span> <span style="color: #000088;">$a</span> <span style="color: #339933;">+</span> <span style="color: #000088;">$b</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">elseif</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$c</span><span style="color: #339933;">==</span><span style="color: #cc66cc;">2</span><span style="color: #009900;">&#41;</span> <span style="color: #000088;">$res</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>bool<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$sub</span> <span style="color: #339933;">==</span> <span style="color: #000088;">$a</span> <span style="color: #339933;">-</span> <span style="color: #000088;">$b</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">elseif</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$c</span><span style="color: #339933;">==</span><span style="color: #cc66cc;">3</span><span style="color: #009900;">&#41;</span> <span style="color: #000088;">$res</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>bool<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$sub</span> <span style="color: #339933;">==</span> <span style="color: #000088;">$a</span> <span style="color: #339933;">*</span> <span style="color: #000088;">$b</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> 
    <span style="color: #b1b100;">elseif</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$c</span><span style="color: #339933;">==</span><span style="color: #cc66cc;">4</span><span style="color: #009900;">&#41;</span> <span style="color: #000088;">$res</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>bool<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$sub</span> <span style="color: #339933;">==</span> <span style="color: #000088;">$a</span> <span style="color: #339933;">/</span> <span style="color: #000088;">$b</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">else</span> <span style="color: #000088;">$res</span> <span style="color: #339933;">=</span> <span style="color: #009900; font-weight: bold;">false</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #000088;">$res</span> <span style="color: #339933;">||</span> <span style="color: #990000;">empty</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$sub</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        wp_die<span style="color: #009900;">&#40;</span> __<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Error: please enter the right calculating result.'</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>&nbsp;</p>
<p>另外,顺便记录一下这次wordpress升级改动的地方</p>
<p>1. 文章存档和链接的分栏显示 修改参考:<a rel="bookmark" href="http://pwwang.com/?p=536">wp侧栏内容分列显示技巧</a></p>
<p>2. 修改wp-codebox, (如果wp-codebox更新了的话) 修改参考:<a rel="bookmark" href="http://pwwang.com/?p=402">告别wordpress贴代码的烦恼</a></p>
<p>3. 修改评论验证, 即本文所述的内容</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://pwwang.com/2009/09/14/wordpress%e9%9d%9e%e6%8f%92%e4%bb%b6%e9%98%b2%e5%9e%83%e5%9c%be%e8%af%84%e8%ae%ba%e6%96%b9%e6%b3%95/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>wp侧栏内容分列显示技巧</title>
		<link>http://pwwang.com/2009/03/05/wp%e4%be%a7%e6%a0%8f%e5%86%85%e5%ae%b9%e5%88%86%e5%88%97%e6%98%be%e7%a4%ba%e6%8a%80%e5%b7%a7/</link>
		<comments>http://pwwang.com/2009/03/05/wp%e4%be%a7%e6%a0%8f%e5%86%85%e5%ae%b9%e5%88%86%e5%88%97%e6%98%be%e7%a4%ba%e6%8a%80%e5%b7%a7/#comments</comments>
		<pubDate>Thu, 05 Mar 2009 01:56:53 +0000</pubDate>
		<dc:creator>pwwang</dc:creator>
				<category><![CDATA[WP/WP Plugins]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://pwwang.com/?p=536</guid>
		<description><![CDATA[&#160;

有时候侧栏（sidebar）里的有些内容只做一列显示，显得有点浪费空间了，特别是像我这种两栏的主题。像文章按月存档，链接等等。于是我就想办法让他们分两列（甚至更多列）来显示，以节约空间。

其实前面有一篇文章&#160;使AutoBlogroll分两列显示链接&#160; 已经提到过一些，这里再总结一下。

<span class="readmore"><a href="http://pwwang.com/2009/03/05/wp%e4%be%a7%e6%a0%8f%e5%86%85%e5%ae%b9%e5%88%86%e5%88%97%e6%98%be%e7%a4%ba%e6%8a%80%e5%b7%a7/" title="wp侧栏内容分列显示技巧">Read More: 1234 Words Totally</a></span>]]></description>
			<content:encoded><![CDATA[<p>&nbsp;</p>
<p>有时候侧栏（sidebar）里的有些内容只做一列显示，显得有点浪费空间了，特别是像我这种两栏的主题。像文章按月存档，链接等等。于是我就想办法让他们分两列（甚至更多列）来显示，以节约空间。</p>
<p>其实前面有一篇文章&nbsp;<a rel="bookmark" href="http://pwwang.com/?p=270">使AutoBlogroll分两列显示链接</a>&nbsp; 已经提到过一些，这里再总结一下。</p>
<p>主要的方法还是通过css来控制，尽量少的改动程序代码。下面就以存档挂件和链接挂件来说明。这两个挂件都是主题自带的，我没有使用其他的插件。</p>
<p><span id="more-536"></span></p>
<p>先说存档的部分。存档部分要分两列显示还有个问题，就是月份名字太长了，如September，采用它的缩写形式（Sept.）是最好的。好在WP也提供了它们的缩写。（当然语言为中文的用户就不存在这个问题了）</p>
<p>先说说怎么把月份名改成缩写形式，找到wp-includes/general-template.php，第767行：</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$text</span> <span style="color: #339933;">=</span> <span style="color: #990000;">sprintf</span><span style="color: #009900;">&#40;</span>__<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'%1$s %2$d'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$wp_locale</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">get_month</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$arcresult</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">month</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$arcresult</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">year</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>这个就是显示存档的月份和年份的，把它修改成：</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$text</span> <span style="color: #339933;">=</span> <span style="color: #990000;">sprintf</span><span style="color: #009900;">&#40;</span>__<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'%1$s %2$d'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$wp_locale</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">get_month_abbrev</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$wp_locale</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">get_month</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$arcresult</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">month</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$arcresult</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">year</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>具体原因，大家可以查看$wp-&gt;locale这个类。好了，这样存档的月份就显示为缩写形式了。</p>
<p>接着说分列显示，使用的是css的一个小技巧。还是上面那个文件，第671行：</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$link_html</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;<span style="color: #000099; font-weight: bold;">\t</span>&lt;ul&gt;&lt;li&gt;<span style="color: #006699; font-weight: bold;">$before</span>&lt;a title=&quot;</span><span style="color: #000088;">$title_text</span><span style="color: #0000ff;">&quot; href=&quot;</span><span style="color: #000088;">$url</span><span style="color: #0000ff;">&quot;&gt;<span style="color: #006699; font-weight: bold;">$text</span>&lt;/a&gt;<span style="color: #006699; font-weight: bold;">$after</span>&lt;/li&gt;&lt;/ul&gt;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span></pre></div></div>

<p>修改成：</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$link_html</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;<span style="color: #000099; font-weight: bold;">\t</span>&lt;ul&gt;&lt;li style=&quot;</span>float<span style="color: #339933;">:</span> left<span style="color: #339933;">;</span> width<span style="color: #339933;">:</span> 124px<span style="color: #339933;">;</span> list<span style="color: #339933;">-</span>style<span style="color: #339933;">-</span>type<span style="color: #339933;">:</span> none<span style="color: #339933;">;</span><span style="color: #0000ff;">&quot;&gt;<span style="color: #006699; font-weight: bold;">$before</span>&lt;a title=&quot;</span><span style="color: #000088;">$title_text</span><span style="color: #0000ff;">&quot; href=&quot;</span><span style="color: #000088;">$url</span><span style="color: #0000ff;">&quot;&gt;<span style="color: #006699; font-weight: bold;">$text</span>&lt;/a&gt;<span style="color: #006699; font-weight: bold;">$after</span>&lt;/li&gt;&lt;/ul&gt;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span></pre></div></div>

<p>就是在里面加上一个css属性，其中的width是你侧栏宽度的一半，当然如果你想分三列显示就是三分之一，依此类推。</p>
<p>本来这样貌似已经大功告成了，但是如果你内容中的li是单数，则会出现这样的问题,下一挂件的标题会接到最后一个li的后面，这是由于float:left所造成的：</p>
<p>&nbsp;<a href="http://pwwang.com/wp-content/uploads/2009/03/sidebarbug.jpg"><img height="90" width="227" border="0" class="alignleft size-full wp-image-538" title="sidebarbug" alt="sidebarbug" src="http://pwwang.com/wp-content/uploads/2009/03/sidebarbug.jpg" /></a></p>
<p><br clear="all" /></p>
<p>&nbsp;</p>
<p>这个问题也好解决，我们采用一个br clear=&#8221;all&#8221;就行了，这样的换行就可以达到效果。找到你主题根目录下的functions.php这个文件（有可能不是这个文件，视主题而定），总之就是定义$after_widget的文件，找到这么一行：</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #0000ff;">'after_widget'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'&lt;/li&gt; '</span><span style="color: #339933;">,</span></pre></div></div>

<p>改成：</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #0000ff;">'after_widget'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'&lt;/li&gt;&lt;br clear=&quot;all&quot; /&gt;'</span><span style="color: #339933;">,</span></pre></div></div>

<p>这样就大功告成了。</p>
<p>而链接的修改只需要上面后面的两个步骤，最后一个步骤是共用的，上面已经修改了，因此只要添加那个css属性就行了。找到wp-include/bookmark-template.php，第55行：</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #0000ff;">'before'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'&lt;ul&gt;&lt;li&gt;'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'after'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'&lt;/li&gt;&lt;/ul&gt;'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'between'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span></pre></div></div>

<p>改成：</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #0000ff;">'before'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'&lt;ul&gt;&lt;li style=&quot;float: left; width: 124px; list-style-type: none;&quot;&gt;'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'after'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'&lt;/li&gt;&lt;/ul&gt;'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'between'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://pwwang.com/2009/03/05/wp%e4%be%a7%e6%a0%8f%e5%86%85%e5%ae%b9%e5%88%86%e5%88%97%e6%98%be%e7%a4%ba%e6%8a%80%e5%b7%a7/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>告别wordpress贴代码的烦恼</title>
		<link>http://pwwang.com/2009/01/05/%e5%91%8a%e5%88%abwordpress%e8%b4%b4%e4%bb%a3%e7%a0%81%e7%9a%84%e7%83%a6%e6%81%bc/</link>
		<comments>http://pwwang.com/2009/01/05/%e5%91%8a%e5%88%abwordpress%e8%b4%b4%e4%bb%a3%e7%a0%81%e7%9a%84%e7%83%a6%e6%81%bc/#comments</comments>
		<pubDate>Sun, 04 Jan 2009 16:11:15 +0000</pubDate>
		<dc:creator>pwwang</dc:creator>
				<category><![CDATA[WP/WP Plugins]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://pwwang.com/?p=402</guid>
		<description><![CDATA[有时候在发文章的时候，需要贴一些代码。

一般大家都用的是可视化的编辑器，如FCKEditor，甚至wp自带的编辑器都是可视化的。

大家习惯了（至少我是）在可视化的模式化写东西，我想没有谁去一个个敲HTML源码吧。。。

<span class="readmore"><a href="http://pwwang.com/2009/01/05/%e5%91%8a%e5%88%abwordpress%e8%b4%b4%e4%bb%a3%e7%a0%81%e7%9a%84%e7%83%a6%e6%81%bc/" title="告别wordpress贴代码的烦恼">Read More: 1170 Words Totally</a></span>]]></description>
			<content:encoded><![CDATA[<p>有时候在发文章的时候，需要贴一些代码。</p>
<p>一般大家都用的是可视化的编辑器，如FCKEditor，甚至wp自带的编辑器都是可视化的。</p>
<p>大家习惯了（至少我是）在可视化的模式化写东西，我想没有谁去一个个敲HTML源码吧。。。</p>
<p>但是在贴代码的时候会有一些问题，如<span style="background-color: rgb(255,153,0)"> &quot;a&quot;=&gt;2 ; </span>你在可视化的模式中敲下这行代码，再转入源代码看就变成了<span style="background-color: rgb(153,204,0)"> &amp;quot;a&amp;quot;=&amp;gt;2; </span>，当然，&nbsp;如果你不用语法高亮插件，这个时候在前台显示是没有问题的，一样能显示<span style="background-color: rgb(255,153,0)"> &quot;a&quot;=&gt;2 ;&nbsp; </span>，但是我想贴代码如果不高亮，那就犹如一张黑白照片，古板而没有生机。</p>
<p>但是如果你采用一些语法高亮插件（我用的是WP-codebox），你就会发现你的烦恼来了，如果你的代码是在可视化模式下输入的，那么在前面就显示<span style="background-color: rgb(153,204,0)">&amp;quot;a&amp;quot;=&amp;gt;2;&nbsp;</span>（WP-codebox是，其他我未用），然而这并不是我们想要的效果，以往我的做法就是在源代码的视图下贴代码，自己编辑源代码，并且文章一旦写好，就再也不敢修改，因为一修改在源代码视图里写好的东西又被转换了，苦不堪言。也想过换插件，可是又怕以前贴的代码乱了，一直没换，再者，开始用语法高亮插件的时候也看过一些插件的比较的文章，觉得还是这款效率好一些。</p>
<p>下面来说如何解决这个问题。</p>
<p><span id="more-402"></span></p>
<p>其实思路也很简单，编辑器把HTML编码了，我们再解码就行了。也曾想过让编辑器不转换HTML代码，但是发现很麻烦，因为并不是所有的HTML都不需要转换，对于wp-codebox，pre以外的代码是需要的，于是放弃了这个想法，然后只能让wp-codebox委屈一下，在处理之前先把被编辑器转换过的代码再转换过来，因为wp-codebox只处理pre的代码，所以不会干扰其他的代码。</p>
<p>打开wp-codebox的文件main.php，其中在这么一行：</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$geshi</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> GeSHi<span style="color: #009900;">&#40;</span><span style="color: #000088;">$code</span><span style="color: #339933;">,</span> <span style="color: #000088;">$language</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>在这一行改成：</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$geshi</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> GeSHi<span style="color: #009900;">&#40;</span>wp_codebox_unhtmlentites<span style="color: #009900;">&#40;</span><span style="color: #000088;">$code</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$language</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>然后再在这一页的其他地方添加一个函数：</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">function</span> wp_codebox_unhtmlentites<span style="color: #009900;">&#40;</span><span style="color: #000088;">$string</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <span style="color: #666666; font-style: italic;">//把被编辑器转换的HTML代码转换回来</span>
    static <span style="color: #000088;">$aTransSpecchar</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span>
        <span style="color: #0000ff;">'&amp;quot;'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'&quot;'</span><span style="color: #339933;">,</span>
        <span style="color: #0000ff;">'&amp;nbsp;'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">' '</span><span style="color: #339933;">,</span>
        <span style="color: #0000ff;">'&amp;lt;'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'&lt;'</span><span style="color: #339933;">,</span>
        <span style="color: #0000ff;">'&amp;gt;'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'&gt;'</span><span style="color: #339933;">,</span>
        <span style="color: #0000ff;">'&amp;amp;'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'&amp;'</span><span style="color: #339933;">,</span>
    <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">return</span> <span style="color: #990000;">strtr</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$string</span><span style="color: #339933;">,</span> <span style="color: #000088;">$aTransSpecchar</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>&nbsp;这个时候，你在可视化模式下输入的代码是什么样，就是什么样了，再也不用担心编辑器把HTML的特殊字符转换了，并且写好的文章可以随便的修改了。</p>
<p>如果其他高亮插件有同样的问题，可以参照上面的修改办法进行修改就可以解决问题了。</p>
]]></content:encoded>
			<wfw:commentRss>http://pwwang.com/2009/01/05/%e5%91%8a%e5%88%abwordpress%e8%b4%b4%e4%bb%a3%e7%a0%81%e7%9a%84%e7%83%a6%e6%81%bc/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
	</channel>
</rss>

