<?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>Domety &#187; WordPress</title>
	<atom:link href="http://domety.com/archives/tag/wordpress/feed/" rel="self" type="application/rss+xml" />
	<link>http://domety.com</link>
	<description>分享软件、互联网应用技巧以及开发技能</description>
	<lastBuildDate>Fri, 03 Feb 2012 14:02:27 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Wordpress 2.9 的缩略图功能</title>
		<link>http://domety.com/archives/272/</link>
		<comments>http://domety.com/archives/272/#comments</comments>
		<pubDate>Mon, 03 Jan 2011 07:25:18 +0000</pubDate>
		<dc:creator>DDBug</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[缩略图]]></category>

		<guid isPermaLink="false">http://domety.com/archives/272/</guid>
		<description><![CDATA[Wordpress 2.9 新增的缩略图功能是一个很实用的功能，今天就和大家探讨一下如何开启以及使用该功能。
第一步：让主题支持缩略图功能
首先确保你的wordpress版本在2.9之上，然后在你的当前主题文件夹中找到并编辑functions.php文件，加入下面这句代码
&#60;?php if ( function_exists( 'add_theme_support' ) )
	add_theme_support( 'post-thumbnails' ); ?&#62;
(注：主题文件夹都保存在wp-content/themes/目录下)
这样当你在后台编辑文章的时候，右边的分类目录下面就会多出一个“文章缩略图”模块。
 
点击“设置缩略图”就可以该文章添加缩略图了。

记得在添加图片的时候要点击下面的“用作缩略图”。
第二步：使用缩略图
在需要显示缩略图的地方调用the_post_thumbnail函数，比如你想在首页为每篇文章显示缩略图，可以在index.php文件中加入下面这样的代码
&#60;? php if ( function_exists( 'the_post_thumbnail' ) )
          the_post_thumbnail( 'thumbnail' ); ?&#62;
这样就能显示缩略图了，其中参数”thumbnail”表示缩略图显示的大小。wordpress预置了4种大小，你可以使用下面的4个参数来替换’thumbnail’，当然不同的台数显示的图片大小也不同
Ø Thumbnail (缩略图尺寸)
Ø Medium （中等尺寸）
Ø Large （大尺寸）
Ø Full （原始尺寸）
具体尺寸大小可以在后台“设置”中的“媒体”选项中进行设置
&#160; 
你可以设置3种不同的大小，以方便在不同的情况下使用。
至此你的主题已经支持缩略图功能并可以灵活使用了。
下面我将介绍一下更高级的应用技巧。
自定义缩略图尺寸的三种方法
方法一：后台设置
就是上面提到的方法，不过这种方法只设置3种大小。
方法二：自定义
在调用the_post_thumbnail函数的时候，可以直接指定缩略图的大小
the_post_thumbnail(array(200,200)); // 显示200X200尺寸的缩略图
这种方法的优点的灵活，可以随时通过代码的调用显示不同尺寸的图片，缺点是修改有点麻烦，如果你有多处这样的代码，修改起来就要把每一处代码都要修改掉。
方法三：增加预置尺寸
通过前面的介绍我们已经知道，wordpress为我们预置了三种可以设置的尺寸。可不可以再增加一些预置的尺寸呢？当然可以，我们要用到的函数是add_image_size。比如我们想在首页和分类页面使用不同的缩略图大小，就可以先预置homepage-thumb和category-thumb这两大小。方法是在functions.php文件中加入以下代码
if ( function_exists( 'add_image_size' ) ){
	add_image_size( 'category-thumb', 200, 200 ); // 预置一个名为’category-thumb’,200*200的缩略图大小
	add_image_size( [...]]]></description>
			<content:encoded><![CDATA[<p>Wordpress 2.9 新增的缩略图功能是一个很实用的功能，今天就和大家探讨一下如何开启以及使用该功能。</p>
<h3>第一步：让主题支持缩略图功能</h3>
<p>首先确保你的wordpress版本在2.9之上，然后在你的当前主题文件夹中找到并编辑functions.php文件，加入下面这句代码</p>
<pre class="php" name="code">&lt;?php if ( function_exists( 'add_theme_support' ) )
	add_theme_support( 'post-thumbnails' ); ?&gt;</pre>
<p>(注：主题文件夹都保存在wp-content/themes/目录下)</p>
<p>这样当你在后台编辑文章的时候，右边的分类目录下面就会多出一个“文章缩略图”模块。</p>
<p><img title="文章缩略图模块" alt="文章缩略图模块" src="http://i623.domety.com/albums/tt312/baolai5/201101/wordpress_thumbnail_001.png" /> </p>
<p>点击“设置缩略图”就可以该文章添加缩略图了。</p>
<p><img title="点击&quot;用作缩略图&quot;" alt="点击&quot;用作缩略图&quot;" src="http://i623.domety.com/albums/tt312/baolai5/201101/wordpress_thumbnail_003.png" /></p>
<p>记得在添加图片的时候要点击下面的“用作缩略图”。</p>
<h3>第二步：使用缩略图</h3>
<p>在需要显示缩略图的地方调用the_post_thumbnail函数，比如你想在首页为每篇文章显示缩略图，可以在index.php文件中加入下面这样的代码</p>
<pre class="php" name="code">&lt;? php if ( function_exists( 'the_post_thumbnail' ) )
          the_post_thumbnail( 'thumbnail' ); ?&gt;</pre>
<p>这样就能显示缩略图了，其中参数”thumbnail”表示缩略图显示的大小。wordpress预置了4种大小，你可以使用下面的4个参数来替换’thumbnail’，当然不同的台数显示的图片大小也不同</p>
<p>Ø Thumbnail (缩略图尺寸)</p>
<p>Ø Medium （中等尺寸）</p>
<p>Ø Large （大尺寸）</p>
<p>Ø Full （原始尺寸）</p>
<p>具体尺寸大小可以在后台“设置”中的“媒体”选项中进行设置</p>
<p>&#160;<img title="媒体选项" alt="媒体选项" src="http://i623.domety.com/albums/tt312/baolai5/201101/wordpress_thumbnail_002.png" /> </p>
<p>你可以设置3种不同的大小，以方便在不同的情况下使用。</p>
<p>至此你的主题已经支持缩略图功能并可以灵活使用了。</p>
<p>下面我将介绍一下更高级的应用技巧。</p>
<h3>自定义缩略图尺寸的三种方法</h3>
<h4>方法一：后台设置</h4>
<p>就是上面提到的方法，不过这种方法只设置3种大小。</p>
<h4>方法二：自定义</h4>
<p>在调用the_post_thumbnail函数的时候，可以直接指定缩略图的大小</p>
<pre class="php" name="code">the_post_thumbnail(array(200,200)); // 显示200X200尺寸的缩略图</pre>
<p>这种方法的优点的灵活，可以随时通过代码的调用显示不同尺寸的图片，缺点是修改有点麻烦，如果你有多处这样的代码，修改起来就要把每一处代码都要修改掉。</p>
<h4>方法三：增加预置尺寸</h4>
<p>通过前面的介绍我们已经知道，wordpress为我们预置了三种可以设置的尺寸。可不可以再增加一些预置的尺寸呢？当然可以，我们要用到的函数是add_image_size。比如我们想在首页和分类页面使用不同的缩略图大小，就可以先预置homepage-thumb和category-thumb这两大小。方法是在functions.php文件中加入以下代码</p>
<pre class="php" name="code">if ( function_exists( 'add_image_size' ) ){
	add_image_size( 'category-thumb', 200, 200 ); // 预置一个名为’category-thumb’,200*200的缩略图大小
	add_image_size( 'homepage-thumb', 220, 180); //预置一个名为’homepage-thumb’,220*180的缩略图大小
}</pre>
<p>之后就可以在首页调用</p>
<pre class="php" name="code">the_post_thumbnail(‘homepage-thumb’);</pre>
<p>显示220*180的缩略图</p>
<p>在分类页面调用</p>
<pre class="php" name="code">the_post_thumbnail(‘category-thumb’);</pre>
<p>则显示200*200的缩略图。</p>
<h3>定义缩略图的样式</h3>
<p>首先我们先来看一下the_post_thumbnail函数输出的html是什么样的</p>
<pre class="html" name="code">&lt;img width=&quot;150&quot; height=&quot;150&quot; src=&quot;http://domety.com/wp-content/uploads/2010/10/screenshot-150x150.png&quot;
class=&quot;attachment-thumbnail wp-post-image&quot; alt=&quot;&quot; title=&quot;screenshot&quot; /&gt;</pre>
<p>由此可以看出，我们可以用css定义类attachment-thumbnail的样式就可以了。</p>
<p>但是如果我想分别为首页和分类页面定义不同的样式，该怎么做呢？</p>
<p>方法一是增加一个div，针对不同的div定义不同的样式，在此不多做介绍。</p>
<p>我要介绍的是另一种方法：给缩略图添加属性</p>
<p>你可以测试一下，如果把the_post_thumbnail(“thumbnail”)修改为下面这样的代码，看看输出的html结果是什么？</p>
<pre class="php" name="code">the_post_thumbnail(‘thumbnail’,array(‘class’ =&gt; ‘homepage-thumb’));</pre>
<p>我这边输出的html为</p>
<pre class="html" name="code">&lt;img width=&quot;150&quot; height=&quot;150&quot; src=&quot;http://domety.com/wp-content/uploads/2010/10/screenshot-150x150.png&quot;
class=&quot;homepage-thumb wp-post-image&quot; alt=&quot;&quot; title=&quot;screenshot&quot; /&gt;</pre>
<p>可以和之前的html对比一下，不难发现class属性变成了我们设置的’homepage-thumb’。可以通过这种方法，把首页缩略图和分类页面的缩略图设置为不同的class属性。</p>
<h3>改变the_post_thumbnail的html输出</h3>
<p>我们可以使用filter来改变缩略图的html输出结果，下面的这段代码为缩略图加了一个文章链接</p>
<pre class="php" name="code">add_filter( 'post_thumbnail_html', 'my_post_image_html', 10, 3 );
function my_post_image_html( $html, $post_id, $post_image_id ) {
	$html = '&lt;a href=&quot;' . get_permalink( $post_id ) . '&quot; title=&quot;' . esc_attr( get_post_field( 'post_title', $post_id ) ) . '&quot;&gt;' . $html . '&lt;/a&gt;';
	return $html;
}</pre>
<p>当你点击缩略图的时候就会跳转到相应的文章内页。</p>
<h3>检测文章是否有缩略图</h3>
<p>一个良好的习惯就是在调用the_post_thumbnail函数之前，先检测一下该文章有没有设置缩略图，检测的方法是调用has_post_thumbnail函数，代码如下</p>
<pre class="php" name="code">&lt;?php if ( has_post_thumbnail() )
	the_post_thumbnail( 'thumbnail' );?&gt;</pre>
<p>结合本站之前的提取文章内图片做为缩略图的方法，现在可以合二为一：首先判断文章有没有设置缩略图，如果有就直接显示，如果没有再提取文章内的图片为缩略图。</p>
<pre class="php" name="code">/* 

* 缩略图

*/

function dm_the_thumbnail() {

	global $post;

	// 判断该文章是否设置的缩略图，如果有则直接显示

	if ( has_post_thumbnail() ) {

		echo '&lt;a href=&quot;'.get_permalink().'&quot; title=&quot;阅读全文&quot;&gt;';

		the_post_thumbnail('thumbnail');

		echo '&lt;/a&gt;';

	} else { //如果文章没有设置缩略图，则查找文章内是否包含图片

		$content = $post-&gt;post_content;

		preg_match_all('/&lt;img.*?(?: |\\t|\\r|\\n)?src=[\'&quot;]?(.+?)[\'&quot;]?(?:(?: |\\t|\\r|\\n)+.*?)?&gt;/sim', $content, $strResult, PREG_PATTERN_ORDER);

		$n = count($strResult[1]);

		if($n &gt; 0){ // 如果文章内包含有图片，就用第一张图片做为缩略图

			echo '&lt;a href=&quot;'.get_permalink().'&quot; title=&quot;阅读全文&quot;&gt;&lt;img src=&quot;'.$strResult[1][0].'&quot; alt=&quot;缩略图&quot; /&gt;&lt;/a&gt;';

		}else { // 如果文章内没有图片，则用默认的图片。

			echo '&lt;a href=&quot;'.get_permalink().'&quot; title=&quot;阅读全文&quot;&gt;&lt;img src=&quot;'.get_bloginfo('template_url').'/imgs/default_thumbnail.jpg&quot; alt=&quot;缩略图&quot; /&gt;&lt;/a&gt;';

		}

	}

}</pre>
<p>有兴趣的朋友可以把以上代码复制到functions.php文件中，然后调用dm_the_thumbnail()即可。</p>
]]></content:encoded>
			<wfw:commentRss>http://domety.com/archives/272/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>如何设置wordpress主题的日期格式</title>
		<link>http://domety.com/archives/264/</link>
		<comments>http://domety.com/archives/264/#comments</comments>
		<pubDate>Sat, 24 Apr 2010 17:49:26 +0000</pubDate>
		<dc:creator>DDBug</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[日期]]></category>

		<guid isPermaLink="false">http://domety.com/?p=264</guid>
		<description><![CDATA[这里说的设置日期格式不是在控制台设置，而是在主题中调用日期函数的时候，如何传递正确的参数来达到我们想要的日期显示方式。阅读完此文，对你制作主题或者修改主题中日期的显示方式有所帮助。
比如在主题中调用这样一个时间函数
&#60;?php the_time('Y-m-d'); ?&#62;
那么在页面中显示的形式就是 2010-04-25 (年-月-日)。你也许会问：为什么要用Y m d这几个字母呢？有没有其它字母可以使用呢？又有哪些字母可以使用呢？以下就是一些可以使用的字母
星期

l    ——  Sunday – Saturday
D  ——  Mon – Sun （英文缩写）

不过对于中文wordpress而言，l和D的效果是一样的（星期一 ~ 星期日）。
年份

Y    ——    4位数的年份 （如 2010）
y    ——    2位数的年份 （如 10）

月份

m  ——  数字月份，单数前加0 （01 &#8211; 12）
n  ——  数字月份，单数前不加0  （1 &#8211; 12）
F  ——  英文月份 （January – December）
M ——  英文月份缩写 （Jan &#8211; Dec）

同样，对于中文wordpress而言F和M的效果是一样的（一月 ~ 十二月）。
日期

d  ——  数字，单数前加0 (01 &#8211; 31)
j  ——  数字，单数前不加0 [...]]]></description>
			<content:encoded><![CDATA[<p>这里说的设置日期格式不是在控制台设置，而是在主题中调用日期函数的时候，如何传递正确的参数来达到我们想要的日期显示方式。阅读完此文，对你制作主题或者修改主题中日期的显示方式有所帮助。</p>
<p>比如在主题中调用这样一个时间函数</p>
<pre>&lt;?php the_time('Y-m-d'); ?&gt;</pre>
<p>那么在页面中显示的形式就是 2010-04-25 (年-月-日)。你也许会问：为什么要用Y m d这几个字母呢？有没有其它字母可以使用呢？又有哪些字母可以使用呢？以下就是一些可以使用的字母</p>
<h4>星期</h4>
<ul>
<li>l    ——  Sunday – Saturday</li>
<li>D  ——  Mon – Sun （英文缩写）</li>
</ul>
<p>不过对于中文wordpress而言，l和D的效果是一样的（星期一 ~ 星期日）。</p>
<h4>年份</h4>
<ul>
<li>Y    ——    4位数的年份 （如 2010）</li>
<li>y    ——    2位数的年份 （如 10）</li>
</ul>
<h4>月份</h4>
<ul>
<li>m  ——  数字月份，单数前加0 （01 &#8211; 12）</li>
<li>n  ——  数字月份，单数前不加0  （1 &#8211; 12）</li>
<li>F  ——  英文月份 （January – December）</li>
<li>M ——  英文月份缩写 （Jan &#8211; Dec）</li>
</ul>
<p>同样，对于中文wordpress而言F和M的效果是一样的（一月 ~ 十二月）。</p>
<h4>日期</h4>
<ul>
<li>d  ——  数字，单数前加0 (01 &#8211; 31)</li>
<li>j  ——  数字，单数前不加0 （1 &#8211; 31）</li>
<li>S  ——  日期的英文复数形式(st, nd, rd or th)，需要结合d或j使用。比如dS (04th)、jS (4th)</li>
</ul>
<h4>时间</h4>
<ul>
<li>h  ——  12小时制，单数以0开头 (01 &#8211; 12)</li>
<li>g  ——  12小时制，不带0 （1 &#8211; 12）</li>
<li>a  ——  am (上午)，pm(下午)</li>
<li>A  ——  AM，PM （大写的上下午）</li>
<li>H  —— 24小时制，单数前加0 （00 &#8211; 23）</li>
<li>G  ——  24小时制，单数前不加0 （0 &#8211; 23）</li>
<li>i  ——  分，单数前加0 （00 &#8211; 59）</li>
<li>s  ——  秒，单数前加0 （00 &#8211; 59）</li>
</ul>
<p>如果参数中包含以上字母，就会自动转换为相应的日期和时间，其它字符不会被转换。如</p>
<pre>&lt;?php the_time('公元Y年m月d日'); ?&gt;</pre>
<p>显示形式为 公元2010年04月25日</p>
]]></content:encoded>
			<wfw:commentRss>http://domety.com/archives/264/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>为wordpress添加评论邮件回复功能</title>
		<link>http://domety.com/archives/253/</link>
		<comments>http://domety.com/archives/253/#comments</comments>
		<pubDate>Tue, 20 Apr 2010 14:28:06 +0000</pubDate>
		<dc:creator>DDBug</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[评论]]></category>
		<category><![CDATA[邮件]]></category>

		<guid isPermaLink="false">http://domety.com/?p=253</guid>
		<description><![CDATA[评论回复就是说如果你在一个博客或者网站上留了言，当有人回复你的时候，系统就会自动发一封邮件通知你。我最早在万戈那里留言的时候，就体会到的评论回复在用户体验上是很友好的。最近逛的博客多了，才发现几乎所有的博客都有评论回复功能。那好吧，我就也给小站增加一个邮件回复的功能。
最快最方便的方法就是使用插件，这样的插件很多，就不在这里多说了，再说我也没有使用过，也不好评价那一个插件好用。本文介绍的是自己动手，添加一些代码实现邮件回复的功能。
wp_mail函数简介
不知道大家有没有注意过，在wordpress安装成功后，会向你的邮件中发送一封邮件。从这一点就可以看出worpress自带有发送邮件的功能。而且控制台里也可以设置当日志有新评论的时候邮件通知。就是从这里下手，我找到了这个wp_mail函数，它的功能就是发送邮件。该函数定义在wp-includes目录下的plaggable.php文件中，其原型为
wp_mail( $to, $subject, $message, $headers = '', $attachments = array() )
其中参数$to代表收件人，$subject是邮件主题。通过$header可以设置发件人信息，比如发件人名称、email地址（Name &#60;email@address.com&#62;）等，还可以设置邮件的文本格式，默认是text/plain，该格式不支持html格式。如果想使用html格式，就要设置为text/html。具体设置的方法是传递一个字符串，如
$headers = "from:Domety &#60;ddbug@domety.com&#62;\n content-type:text/html"
注意中间是以\n隔开。或者传递一个数组，如
$headers = array("from" =&#62; "Domety &#60;ddbug@domety.com&#62;","content-type" = "text/html" );
最后还可以通过$attachments参数来发送附件。
action : wp_insert_comment
有了发送邮件的函数，就可以说是万事具备，只欠东风了。我们需要准确的知道在什么时候要发送邮件，我觉得至少要符合以下条件：

在有人发表评论的时候，这时候wordpress会调用wp_insert_comment函数。
该评论不是直接对日志的评论，而是回复的另一个评论。也就是这个评论一定要有parent.
该评论是通过审核的评论。也就是说approved == 1
被回复的评论要有email地址。

wp_inset_comment函数为开发人员提供了一个叫做wp_insert_comment的action,通过它我们可以很方便的完成对以上条件的审查工作。我们首先定义一个 dm_notify_commentauthor($comment_id,$comment)函数，用来处理邮件通知用户。然后增加一个action
add_action('wp_insert_comment','dm_notify_commentauthor',10,2);
这样一来，当有用户回复另一个人的评论的时候，就会邮件通知另一个人。至此我们的全部工作就做完了。以下是完整代码，添加到functions.php文件中即可生效。
function dm_notify_commentauthor($comment_id,$comment) {
 if($comment-&#62;comment_approved != 1 &#124;&#124; $comment-&#62;comment_type == 'trackback' &#124;&#124; $comment-&#62;comment_type == 'pingback' &#124;&#124; $comment-&#62;comment_parent == 0 )
  return $comment_id;
 $parent = get_comment($comment-&#62;comment_parent);
 if(empty($parent-&#62;comment_author_email))
  return $comment_id;
 $post = get_post($comment-&#62;comment_post_ID);
 $to = $parent-&#62;comment_author_email;
 $from_name = wp_specialchars_decode(get_option('blogname'), ENT_QUOTES);s;
 $from_email [...]]]></description>
			<content:encoded><![CDATA[<p>评论回复就是说如果你在一个博客或者网站上留了言，当有人回复你的时候，系统就会自动发一封邮件通知你。我最早在万戈那里留言的时候，就体会到的评论回复在用户体验上是很友好的。最近逛的博客多了，才发现几乎所有的博客都有评论回复功能。那好吧，我就也给小站增加一个邮件回复的功能。</p>
<p>最快最方便的方法就是使用插件，这样的插件很多，就不在这里多说了，再说我也没有使用过，也不好评价那一个插件好用。本文介绍的是自己动手，添加一些代码实现邮件回复的功能。</p>
<h3>wp_mail函数简介</h3>
<p>不知道大家有没有注意过，在wordpress安装成功后，会向你的邮件中发送一封邮件。从这一点就可以看出worpress自带有发送邮件的功能。而且控制台里也可以设置当日志有新评论的时候邮件通知。就是从这里下手，我找到了这个wp_mail函数，它的功能就是发送邮件。该函数定义在wp-includes目录下的plaggable.php文件中，其原型为</p>
<pre name="code" class="php">wp_mail( $to, $subject, $message, $headers = '', $attachments = array() )</pre>
<p>其中参数$to代表收件人，$subject是邮件主题。通过$header可以设置发件人信息，比如发件人名称、email地址（Name &lt;email@address.com&gt;）等，还可以设置邮件的文本格式，默认是text/plain，该格式不支持html格式。如果想使用html格式，就要设置为text/html。具体设置的方法是传递一个字符串，如</p>
<pre name="code" class="php">$headers = "from:Domety &lt;ddbug@domety.com&gt;\n content-type:text/html"</pre>
<p>注意中间是以\n隔开。或者传递一个数组，如</p>
<pre name="code" class="php">$headers = array("from" =&gt; "Domety &lt;ddbug@domety.com&gt;","content-type" = "text/html" );</pre>
<p>最后还可以通过$attachments参数来发送附件。</p>
<h3>action : wp_insert_comment</h3>
<p>有了发送邮件的函数，就可以说是万事具备，只欠东风了。我们需要准确的知道在什么时候要发送邮件，我觉得至少要符合以下条件：</p>
<ol>
<li>在有人发表评论的时候，这时候wordpress会调用wp_insert_comment函数。</li>
<li>该评论不是直接对日志的评论，而是回复的另一个评论。也就是这个评论一定要有parent.</li>
<li>该评论是通过审核的评论。也就是说approved == 1</li>
<li>被回复的评论要有email地址。</li>
</ol>
<p>wp_inset_comment函数为开发人员提供了一个叫做wp_insert_comment的action,通过它我们可以很方便的完成对以上条件的审查工作。我们首先定义一个 dm_notify_commentauthor($comment_id,$comment)函数，用来处理邮件通知用户。然后增加一个action</p>
<pre name="code" class="php">add_action('wp_insert_comment','dm_notify_commentauthor',10,2);</pre>
<p>这样一来，当有用户回复另一个人的评论的时候，就会邮件通知另一个人。至此我们的全部工作就做完了。以下是完整代码，添加到functions.php文件中即可生效。</p>
<pre name="code" class="php">function dm_notify_commentauthor($comment_id,$comment) {
 if($comment-&gt;comment_approved != 1 || $comment-&gt;comment_type == 'trackback' || $comment-&gt;comment_type == 'pingback' || $comment-&gt;comment_parent == 0 )
  return $comment_id;
 $parent = get_comment($comment-&gt;comment_parent);
 if(empty($parent-&gt;comment_author_email))
  return $comment_id;
 $post = get_post($comment-&gt;comment_post_ID);
 $to = $parent-&gt;comment_author_email;
 $from_name = wp_specialchars_decode(get_option('blogname'), ENT_QUOTES);s;
 $from_email = "<a href="mailto:ddbug@domety.com">ddbug@domety.com</a>";
 $mail_content_type = "text/html";
 $mail_headers = "from:$from_name &lt;$from_email&gt;\ncontent-type:$mail_content_type";
 $parent_name = empty($parent-&gt;comment_author) ?  '无名仕' : $parent-&gt;comment_author;
 $cur_name = empty($comment-&gt;comment_author) ?  '无名仕' : $comment-&gt;comment_author;
 $title = $cur_name.'回复了您在Domety.com的评论';

 $msg = '&lt;p&gt;'.$parent_name.',您好！&lt;/p&gt;';
 $msg .= '您在&lt;a href="'.get_permalink($post).'" style="text-decoration:none; color: #007EC4;"&gt;《'.$post-&gt;post_title.'》&lt;/a&gt;的评论：';
 $msg .= '&lt;p style="margin-left:50px; background:#fff;border:1px dashed #7C98B1;padding:10px 30px;"&gt;'.$parent-&gt;comment_content.'&lt;/p&gt;';
 $msg .= '&lt;p&gt;&lt;a href="'.$comment-&gt;comment_author_url.'" style="text-decoration:none; color: #007EC4;"&gt;'.$cur_name.'&lt;/a&gt;对您的回复：&lt;/p&gt;';
 $msg .= '&lt;p style="margin-left:50px; background:#fff;border:1px dashed #7C98B1;padding:10px 30px;"&gt;'.$comment-&gt;comment_content.'&lt;/p&gt;';
 $msg .= '&lt;p&gt;&lt;a href='.get_comment_link($comment).' style="text-decoration:none; color: #007EC4;"&gt;点此查看原始回复内容&lt;/a&gt;&lt;/p&gt;';
 $msg .= "&lt;p style='font-weight:bold'&gt;衷心的感谢您对 &lt;a href='http://domety.com/' style='text-decoration:none; color: #007EC4;'&gt;Domety&lt;/a&gt; 的关注和支持，欢迎 &lt;a href='http://feed.domety.com/' style='text-decoration:none; color: #007EC4;'&gt;订阅本站&lt;/a&gt;，以获取最新信息。&lt;/p&gt;";
 $msg = '&lt;div style="border:1px solid #7C98B1; background:#f1f1f1; padding:50px;font-size:16px;"&gt;'.$msg.'&lt;/div&gt;';
 @wp_mail($to,$title,$msg,$mail_headers);
 return $comment_id;
}
add_action('wp_insert_comment','dm_notify_commentauthor',10,2);</pre>
]]></content:encoded>
			<wfw:commentRss>http://domety.com/archives/253/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>开启Akismet插件，自动过滤垃圾留言</title>
		<link>http://domety.com/archives/247/</link>
		<comments>http://domety.com/archives/247/#comments</comments>
		<pubDate>Tue, 06 Apr 2010 13:45:58 +0000</pubDate>
		<dc:creator>DDBug</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[插件]]></category>

		<guid isPermaLink="false">http://domety.com/?p=247</guid>
		<description><![CDATA[Wordpress自带了一个叫做Akismet的插件，刚开始一直感觉它没有什么用处，也就没有开启这个插件。但后来发现，随着网站流量的增多，慢慢的垃圾留言也开始增多。后来就开启了Akismet，效果还真不错。这段时间Akismet帮我过虑了不少垃圾留言，请看截图

不过Akismet和其它插件不一样，不是点击“开启”就能起作用的，还需要一个wordpress.com的API key，具体开启过程请往下看。
开启过程
进入后台管理面板，查看插件列表，你会发现有一个Akismet插件，如下图

点击“wordpress.com API key”或者直接在浏览器的地址栏里输入http://akismet.com/get/，进入如下图所示的页面

在&#8221;your email address&#8221;一栏输入你的email地址，然后点击&#8221;Next&#8221;

在&#8221;choose a username&#8221;一栏输入一个用户名，并勾选&#8221;I have read and agree to the Akismet terms of service&#8221;，点击“Next”

这个页面是说已经向你的邮箱里发送了一封激活账号的邮件，需要你打开你的邮箱并点击激活链接进行激活账号操作。
那么下一步就是打开你的邮箱查看邮件

点击邮件内的链接进行激活

复制你的API Key，然后进入你的wordpress后台管理面板，开启Akismet插件

点击“输入一个wordpress.com API key”

把你刚才复制的API key粘贴过来，然后点击“更新选项”

恭喜你，你的Akismet过虑垃圾留言插件已经生效了。以后你可以通过控制板下面的“Akismet统计”来查看垃圾留言情况。

]]></description>
			<content:encoded><![CDATA[<p>Wordpress自带了一个叫做Akismet的插件，刚开始一直感觉它没有什么用处，也就没有开启这个插件。但后来发现，随着网站流量的增多，慢慢的垃圾留言也开始增多。后来就开启了Akismet，效果还真不错。这段时间Akismet帮我过虑了不少垃圾留言，请看截图<span id="more-247"></span></p>
<p><img class="alignnone" title="Akismet统计概况" src="http://i623.domety.com/albums/tt312/baolai5/201004/akismet_001.png" alt="" width="562" height="260" /></p>
<p>不过Akismet和其它插件不一样，不是点击“开启”就能起作用的，还需要一个wordpress.com的API key，具体开启过程请往下看。</p>
<h3>开启过程</h3>
<p>进入后台管理面板，查看插件列表，你会发现有一个Akismet插件，如下图</p>
<p><img class="alignnone" src="http://i623.domety.com/albums/tt312/baolai5/201004/akismet_002.png" alt="" width="535" height="135" /></p>
<p>点击“wordpress.com API key”或者直接在浏览器的地址栏里输入<a href="http://akismet.com/get/">http://akismet.com/get/</a>，进入如下图所示的页面</p>
<p><img class="alignnone" src="http://i623.domety.com/albums/tt312/baolai5/201004/akismet_003.png" alt="" width="516" height="349" /></p>
<p>在&#8221;your email address&#8221;一栏输入你的email地址，然后点击&#8221;Next&#8221;</p>
<p><img class="alignnone" src="http://i623.domety.com/albums/tt312/baolai5/201004/akismet_004.png" alt="" width="506" height="345" /></p>
<p>在&#8221;choose a username&#8221;一栏输入一个用户名，并勾选&#8221;I have read and agree to the Akismet terms of service&#8221;，点击“Next”</p>
<p><img class="alignnone" src="http://i623.domety.com/albums/tt312/baolai5/201004/akismet_005.png" alt="" width="514" height="136" /></p>
<p>这个页面是说已经向你的邮箱里发送了一封激活账号的邮件，需要你打开你的邮箱并点击激活链接进行激活账号操作。</p>
<p>那么下一步就是打开你的邮箱查看邮件</p>
<p><img class="alignnone" src="http://i623.domety.com/albums/tt312/baolai5/201004/akismet_006.png" alt="" width="566" height="130" /></p>
<p>点击邮件内的链接进行激活</p>
<p><img class="alignnone" src="http://i623.domety.com/albums/tt312/baolai5/201004/akismet_007.png" alt="" width="454" height="305" /></p>
<p>复制你的API Key，然后进入你的wordpress后台管理面板，开启Akismet插件</p>
<p><img class="alignnone" src="http://i623.domety.com/albums/tt312/baolai5/201004/akismet_008.png" alt="" width="475" height="89" /></p>
<p>点击“输入一个wordpress.com API key”</p>
<p><img class="alignnone" src="http://i623.domety.com/albums/tt312/baolai5/201004/akismet_009.png" alt="" width="515" height="446" /></p>
<p>把你刚才复制的API key粘贴过来，然后点击“更新选项”</p>
<p><img class="alignnone" src="http://i623.domety.com/albums/tt312/baolai5/201004/akismet_010.png" alt="" width="520" height="436" /></p>
<p>恭喜你，你的Akismet过虑垃圾留言插件已经生效了。以后你可以通过控制板下面的“Akismet统计”来查看垃圾留言情况。</p>
<p><img class="alignnone" title="Akismet统计报表" src="http://i623.domety.com/albums/tt312/baolai5/201004/akismet_011.png" alt="" width="559" height="522" /></p>
]]></content:encoded>
			<wfw:commentRss>http://domety.com/archives/247/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>对所有日志的指定字符串进行替换</title>
		<link>http://domety.com/archives/244/</link>
		<comments>http://domety.com/archives/244/#comments</comments>
		<pubDate>Sun, 04 Apr 2010 13:09:47 +0000</pubDate>
		<dc:creator>DDBug</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[phpmyadmin]]></category>

		<guid isPermaLink="false">http://domety.com/?p=244</guid>
		<description><![CDATA[上午写了一篇《终于解决了半角引号自动转换为全角引号的问题》，果真也有朋友和我一样，用blockquote引用代码，但他们又不想修改wordpress的源代码，所以想把blockquote替换成pre或者code。但又苦于日志太多，一篇一篇的修改也确实太麻烦。在QQ上问我有没有简单的方法&#8230;&#8230;
方法当然是有的，而且还有很多种。比如可以通过写一段php代码，先从数据库中取出所有的日志，再用str_replace函数进行字符串替换，然后再更新数据库。这种方法当然可以，特别是对于插件开发者，可以在插件中增加一个对所有日志替换字符串的功能。但是这个需要一般不是太高，也没必要做到插件中去。其实我们可以充分发挥mysql的实力，也就是一条sql语句的事情。
REPLACE()
稍微了解一点mysql的人都应该知道，mysql定义了很多实用的函数，其中就有一个字符串替换的函数REPLACE()，具体参数如下
REPLACE(str,from_str,to_str)
这是mysql5.5的参考手册中给出的解释，其中str是一个要查找的字符串，from_str是要被替换的字符串，to_str是替换字符串。手册中也给出了一个例子
mysql&#62; SELECT REPLACE('www.mysql.com', 'w', 'Ww');
-&#62; 'WwWwWw.mysql.com'
这段例子是把字符串&#8217;www.mysql.com&#8217;中的&#8217;w'替换成&#8217;Ww&#8217;，替换结果是&#8217;WwWwWw.mysql.com&#8217;。
开始行动
有了以上的准备知识，让我们实际动手试一试吧，把日志中的blockquote标签替换成code标签或pre标签，以替换成code标签为例。
首先登录你的phpmyadmin管理面板，进入你的wordpress所使用的数据库，编辑sql语句
UPDATE ddd_posts SET post_content = replace( post_content, 'blockquote', 'code' )
其中ddd_posts为你的日志表名，请根据实际情况进行更改(下同)。其实这一个简单的sql语句就可以达到我们的目的了，但是有一个缺点：它不仅会替换&#60;blockquote&#62;&#60;/blockquote&#62;标签中的blockquote字符串，也会替换掉你在正文中出现的字符串中包含的blockquote。为了避免出现这种情况，我们采取下面这样的安全措施
UPDATE ddd_posts SET post_content = replace( post_content, '&#60;blockquote&#62;', '&#60;code&#62;' ) ;
UPDATE ddd_posts SET post_content = replace( post_content, '&#60;/blockquote&#62;', '&#60;/code&#62;' ) ;
这样就可以准确的把blockquote标签替换成code标签。
替换昵称
我们再举一个常见的例子，有些人写文章的时候喜欢在文章中引入自己的昵称，就像我有的时候会在文章称自己是的DDBug一样。但是一段时间之后作者想改换昵称，这个时候REPLACE函数就又派上了用场。比如我想把DDBug替换成Domety，就可以执行下面这样的sql语句
UPDATE ddd_posts SET post_content = replace( post_content, 'DDBug', 'Domety' )
当然，针对不同的用户，可能还有更多类似的需求，当你碰到类似的问题的时候，考虑一下mysql的REPLACE函数吧，或许能帮上你的忙。
]]></description>
			<content:encoded><![CDATA[<p>上午写了一篇《<a href="http://domety.com/archives/241/">终于解决了半角引号自动转换为全角引号的问题</a>》，果真也有朋友和我一样，用blockquote引用代码，但他们又不想修改wordpress的源代码，所以想把blockquote替换成pre或者code。但又苦于日志太多，一篇一篇的修改也确实太麻烦。在QQ上问我有没有简单的方法&#8230;&#8230;</p>
<p>方法当然是有的，而且还有很多种。比如可以通过写一段php代码，先从数据库中取出所有的日志，再用str_replace函数进行字符串替换，然后再更新数据库。这种方法当然可以，特别是对于插件开发者，可以在插件中增加一个对所有日志替换字符串的功能。但是这个需要一般不是太高，也没必要做到插件中去。其实我们可以充分发挥mysql的实力，也就是一条sql语句的事情。<span id="more-244"></span></p>
<h3>REPLACE()</h3>
<p>稍微了解一点mysql的人都应该知道，mysql定义了很多实用的函数，其中就有一个字符串替换的函数REPLACE()，具体参数如下</p>
<pre name="code" class="sql">REPLACE(<em>str</em>,<em>from_str</em>,<em>to_str</em>)</pre>
<p>这是mysql5.5的参考手册中给出的解释，其中str是一个要查找的字符串，from_str是要被替换的字符串，to_str是替换字符串。手册中也给出了一个例子</p>
<pre name="code" class="sql">mysql&gt; SELECT REPLACE('www.mysql.com', 'w', 'Ww');
-&gt; 'WwWwWw.mysql.com'</pre>
<p>这段例子是把字符串&#8217;www.mysql.com&#8217;中的&#8217;w'替换成&#8217;Ww&#8217;，替换结果是&#8217;WwWwWw.mysql.com&#8217;。</p>
<h3>开始行动</h3>
<p>有了以上的准备知识，让我们实际动手试一试吧，把日志中的blockquote标签替换成code标签或pre标签，以替换成code标签为例。</p>
<p>首先登录你的phpmyadmin管理面板，进入你的wordpress所使用的数据库，编辑sql语句</p>
<pre name="code" class="sql">UPDATE ddd_posts SET post_content = replace( post_content, 'blockquote', 'code' )</pre>
<p>其中ddd_posts为你的日志表名，请根据实际情况进行更改(下同)。其实这一个简单的sql语句就可以达到我们的目的了，但是有一个缺点：它不仅会替换&lt;blockquote&gt;&lt;/blockquote&gt;标签中的blockquote字符串，也会替换掉你在正文中出现的字符串中包含的blockquote。为了避免出现这种情况，我们采取下面这样的安全措施</p>
<pre name="code" class="sql">UPDATE ddd_posts SET post_content = replace( post_content, '&lt;blockquote&gt;', '&lt;code&gt;' ) ;
UPDATE ddd_posts SET post_content = replace( post_content, '&lt;/blockquote&gt;', '&lt;/code&gt;' ) ;</pre>
<p>这样就可以准确的把blockquote标签替换成code标签。</p>
<h3>替换昵称</h3>
<p>我们再举一个常见的例子，有些人写文章的时候喜欢在文章中引入自己的昵称，就像我有的时候会在文章称自己是的DDBug一样。但是一段时间之后作者想改换昵称，这个时候REPLACE函数就又派上了用场。比如我想把DDBug替换成Domety，就可以执行下面这样的sql语句</p>
<pre name="code" class="sql">UPDATE ddd_posts SET post_content = replace( post_content, 'DDBug', 'Domety' )</pre>
<p>当然，针对不同的用户，可能还有更多类似的需求，当你碰到类似的问题的时候，考虑一下mysql的REPLACE函数吧，或许能帮上你的忙。</p>
]]></content:encoded>
			<wfw:commentRss>http://domety.com/archives/244/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>终于解决了半角引号自动转换为全角引号的问题</title>
		<link>http://domety.com/archives/241/</link>
		<comments>http://domety.com/archives/241/#comments</comments>
		<pubDate>Thu, 01 Apr 2010 12:42:19 +0000</pubDate>
		<dc:creator>DDBug</dc:creator>
				<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://domety.com/?p=241</guid>
		<description><![CDATA[以前就有朋友反应过日志中的代码中引号有问题，一直也没放在心上。今天仔细看了一下，原来wordpress会自动把blockquote中的半角引号转换成全角引号。以下是两种解决方法
修改formatting.php文件
wordpress对日志的格式化处理代码保存在includes文件夹下的formatting.php文件中。用文本编辑器打开该文件，找到以下代码片段
if ( !empty($curl) &#38;&#38; '&#60;' != $curl{0} &#38;&#38; '[' != $curl{0}
amp;&#38; empty($no_texturize_shortcodes_stack) &#38;&#38; empty($no_texturize_tags_stack)) {
// This is not a tag, nor is the texturization disabled
// static strings
$curl = str_replace($static_characters, $static_replacements, $curl);
// regular expressions
$curl = preg_replace($dynamic_characters, $dynamic_replacements, $curl);
}
注释掉两条$curl语句即可，修改后代码如下：
if ( !empty($curl) &#38;&#38; '&#60;' != $curl{0} &#38;&#38; '[' != $curl{0}
&#38;&#38; empty($no_texturize_shortcodes_stack) &#38;&#38; empty($no_texturize_tags_stack)) {
// This is not a [...]]]></description>
			<content:encoded><![CDATA[<p>以前就有朋友反应过日志中的代码中引号有问题，一直也没放在心上。今天仔细看了一下，原来wordpress会自动把blockquote中的半角引号转换成全角引号。以下是两种解决方法</p>
<h3>修改formatting.php文件</h3>
<p>wordpress对日志的格式化处理代码保存在includes文件夹下的formatting.php文件中。用文本编辑器打开该文件，找到以下代码片段</p>
<pre name="code" class="php">if ( !empty($curl) &amp;&amp; '&lt;' != $curl{0} &amp;&amp; '[' != $curl{0}
amp;&amp; empty($no_texturize_shortcodes_stack) &amp;&amp; empty($no_texturize_tags_stack)) {
// This is not a tag, nor is the texturization disabled
// static strings
$curl = str_replace($static_characters, $static_replacements, $curl);
// regular expressions
$curl = preg_replace($dynamic_characters, $dynamic_replacements, $curl);
}</pre>
<p>注释掉两条$curl语句即可，修改后代码如下：</p>
<pre name="code" class="php">if ( !empty($curl) &amp;&amp; '&lt;' != $curl{0} &amp;&amp; '[' != $curl{0}
&amp;&amp; empty($no_texturize_shortcodes_stack) &amp;&amp; empty($no_texturize_tags_stack)) {
// This is not a tag, nor is the texturization disabled
// static strings
//$curl = str_replace($static_characters, $static_replacements, $curl);
// regular expressions
//$curl = preg_replace($dynamic_characters, $dynamic_replacements, $curl);
}</pre>
<h3>还是修改formatting.php文件</h3>
<p>同样是修改formatting.php文件，上面提到的代码可以不用注释掉，找到下面这行代码</p>
<pre name="code" class="php">$default_no_texturize_tags = array('pre', 'code', 'kbd', 'style', 'script', 'tt');</pre>
<p>改为</p>
<pre name="code" class="php">$default_no_texturize_tags = array('pre', 'code', 'kbd', 'style', 'script', 'tt', 'blockquote');</pre>
<p>也就是在$default_no_texturize_tags中加入一个&#8217;blockquote&#8217;标签</p>
<h3>不使用blockquote</h3>
<p>以上两种方法都可以解决引号转换的问题，不过需要修改wordpress的源代码，对以后的升级带来了麻烦。从上面的代码中我们也可以看到，像pre,code这些标签都不会转换引号，可以使用这两个标签来代替blockquote。</p>
]]></content:encoded>
			<wfw:commentRss>http://domety.com/archives/241/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>给文章添加“收藏到”(QQ书签、Google书签、百度搜藏)</title>
		<link>http://domety.com/archives/234/</link>
		<comments>http://domety.com/archives/234/#comments</comments>
		<pubDate>Sat, 30 Jan 2010 04:01:18 +0000</pubDate>
		<dc:creator>DDBug</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[QQ]]></category>
		<category><![CDATA[收藏]]></category>

		<guid isPermaLink="false">http://domety.com/?p=234</guid>
		<description><![CDATA[为了方便有需要的朋友收藏小站有用的文章，做了一个收藏到 QQ书签 、 Google书签 、 百度搜藏 、 Yahoo收藏 、 乐收 的链接。其实网上也有很多第三方的js文件可以很方便的做到这一点，只需要加载一个js文件即可。因为DDBug不太喜欢加载第三方的东西，能不加载就不加载，所以本文讨论的是最原始的链接形式的。
下面给出几个常用的在线收藏夹的收藏链接，标题以domety为例，网址以http://domety.com/为例。在具体的使用过程中，只需要把这两个替换掉你自己文章的标题和网址即可。
QQ书签：http://shuqian.qq.com/post?title=domety&#38;uri=http://domety.com/
google书签：http://www.google.com/bookmarks/mark?op=add&#38;hl=zh_cn&#38;title=domety&#38;bkmk=http://domety.com/
百度搜藏：http://cang.baidu.com/do/add?it=domety&#38;iu=http://domety.com/
yahoo收藏：http://myweb.cn.yahoo.com/popadd.html?title=domety&#38;url=http://domety.com/
新浪ViVi：http://vivi.sina.com.cn/collect/icollect.php?title=domety&#38;url=http://domety.com/
乐收：http://leshou.com/post?act=shou&#38;title=domety&#38;url=http://domety.com/
以下是本站的实现代码，以做参考

&#60;?php $title = get_the_title();
$permalink = get_permalink();
$title = urlencode($title);
$permalink = esc_url($permalink);
// QQ书签
$output = '&#60;a href="http://shuqian.qq.com/post?title='.$title.'&#38;uri='.$permalink.'" title="收藏到QQ书签" target="_blank"&#62;QQ书签&#60;/a&#62;';
// google书签
$output .= ' &#124; &#60;a href="http://www.google.com/bookmarks/mark?op=add&#38;hl=zh_cn&#38;title='.$title.'&#38;bkmk='.$permalink.'" title="收藏到google书签" target="_blank"&#62;Google书签&#60;/a&#62;';
// 百度搜藏
$output .= ' &#124; &#60;a href="http://cang.baidu.com/do/add?it='.$title.'&#38;iu='.$permalink.'" title="收藏到百度搜藏" target="_blank"&#62;百度搜藏&#60;/a&#62;';
// yahoo收藏
$output .= ' &#124; &#60;a href="http://myweb.cn.yahoo.com/popadd.html?title='.$title.'&#38;url='.$permalink.'" title="收藏到Yahoo收藏" target="_blank"&#62;Yahoo收藏&#60;/a&#62;';
// 乐收
$output .= ' &#124; &#60;a href="http://leshou.com/post?act=shou&#38;title='.$title.'&#38;url='.$permalink.'" title="收藏到乐收" target="_blank"&#62;乐收&#60;/a&#62;';
echo $output; ?&#62;
]]></description>
			<content:encoded><![CDATA[<p>为了方便有需要的朋友收藏小站有用的文章，做了一个收藏到 QQ书签 、 Google书签 、 百度搜藏 、 Yahoo收藏 、 乐收 的链接。其实网上也有很多第三方的js文件可以很方便的做到这一点，只需要加载一个js文件即可。因为DDBug不太喜欢加载第三方的东西，能不加载就不加载，所以本文讨论的是最原始的链接形式的。</p>
<p>下面给出几个常用的在线收藏夹的收藏链接，标题以domety为例，网址以http://domety.com/为例。在具体的使用过程中，只需要把这两个替换掉你自己文章的标题和网址即可。</p>
<p>QQ书签：<a href="http://shuqian.qq.com/post?title=domety&amp;uri=http://domety.com/" target="_blank">http://shuqian.qq.com/post?title=domety&amp;uri=http://domety.com/</a></p>
<p>google书签：<a href="http://www.google.com/bookmarks/mark?op=add&amp;hl=zh_cn&amp;title=domety&amp;bkmk=http://domety.com/" target="_blank">http://www.google.com/bookmarks/mark?op=add&amp;hl=zh_cn&amp;title=domety&amp;bkmk=http://domety.com/</a></p>
<p>百度搜藏：<a href="http://cang.baidu.com/do/add?it=domety&amp;iu=http://domety.com/" target="_blank">http://cang.baidu.com/do/add?it=domety&amp;iu=http://domety.com/</a></p>
<p>yahoo收藏：<a href="http://myweb.cn.yahoo.com/popadd.html?title=domety&amp;url=http://domety.com/" target="_blank">http://myweb.cn.yahoo.com/popadd.html?title=domety&amp;url=http://domety.com/</a></p>
<p>新浪ViVi：<a href="http://vivi.sina.com.cn/collect/icollect.php?title=domety&amp;url=http://domety.com/" target="_blank">http://vivi.sina.com.cn/collect/icollect.php?title=domety&amp;url=http://domety.com/</a></p>
<p>乐收：<a href="http://leshou.com/post?act=shou&amp;url=http://domety.com/&amp;title=domety" target="_blank">http://leshou.com/post?act=shou&amp;title=domety&amp;url=http://domety.com/</a></p>
<p>以下是本站的实现代码，以做参考</p>
<pre name="code" class="php">
&lt;?php $title = get_the_title();
$permalink = get_permalink();
$title = urlencode($title);
$permalink = esc_url($permalink);
// QQ书签
$output = '&lt;a href="http://shuqian.qq.com/post?title='.$title.'&amp;uri='.$permalink.'" title="收藏到QQ书签" target="_blank"&gt;QQ书签&lt;/a&gt;';
// google书签
$output .= ' | &lt;a href="http://www.google.com/bookmarks/mark?op=add&amp;hl=zh_cn&amp;title='.$title.'&amp;bkmk='.$permalink.'" title="收藏到google书签" target="_blank"&gt;Google书签&lt;/a&gt;';
// 百度搜藏
$output .= ' | &lt;a href="http://cang.baidu.com/do/add?it='.$title.'&amp;iu='.$permalink.'" title="收藏到百度搜藏" target="_blank"&gt;百度搜藏&lt;/a&gt;';
// yahoo收藏
$output .= ' | &lt;a href="http://myweb.cn.yahoo.com/popadd.html?title='.$title.'&amp;url='.$permalink.'" title="收藏到Yahoo收藏" target="_blank"&gt;Yahoo收藏&lt;/a&gt;';
// 乐收
$output .= ' | &lt;a href="http://leshou.com/post?act=shou&amp;title='.$title.'&amp;url='.$permalink.'" title="收藏到乐收" target="_blank"&gt;乐收&lt;/a&gt;';
echo $output; ?&gt;</pre>
]]></content:encoded>
			<wfw:commentRss>http://domety.com/archives/234/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>为页面标题添加页码</title>
		<link>http://domety.com/archives/233/</link>
		<comments>http://domety.com/archives/233/#comments</comments>
		<pubDate>Wed, 27 Jan 2010 12:05:52 +0000</pubDate>
		<dc:creator>DDBug</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[标题]]></category>
		<category><![CDATA[页面]]></category>

		<guid isPermaLink="false">http://domety.com/?p=233</guid>
		<description><![CDATA[说起来这篇文章应该很早以前就写的，可能是感觉这只是一个很小很小的技巧吧，所以也没提上日程。
自从小站添加了分页导航以后，发现了一个问题：搜索引擎收录的页面中，有很多标题重复的网页，但链接地址却不一样。认真一看才知道是分页的原因，分页之后链接地址不一样了，形如http://domety.com/page/2/、http://domety.com/page/3/等，但标题还是首页的标题。这种情况对搜索引擎来说是非常不友好的。

于是我就想到，何不在标题中加上页码呢？这样就能避免标题重复的问题了，那就修改header.php文件吧，在&#60;title&#62;和&#60;/title&#62;之间加入以下代码
&#60;?php $paged = get_query_var('paged'); if($paged &#62; 1) printf('第%s页&#38;laquo;',$paged); ?&#62;
如果当前页面不是第一页的话，就在标题中显示页码。具体效果可以点击小站的分页导航看一下，搜索引擎收录结果如下

在这里也提醒一下使用分页插件的朋友，最好也给标题加个页码，或者使用其它你能想到的方法来区别各个标题，争取做到一个链接对应一个标题。
]]></description>
			<content:encoded><![CDATA[<p>说起来这篇文章应该很早以前就写的，可能是感觉这只是一个很小很小的技巧吧，所以也没提上日程。</p>
<p>自从小站添加了分页导航以后，发现了一个问题：搜索引擎收录的页面中，有很多标题重复的网页，但链接地址却不一样。认真一看才知道是分页的原因，分页之后链接地址不一样了，形如<a href="http://domety.com/page/2/">http://domety.com/page/2/</a>、<a href="http://domety.com/page/2/">http://domety.com/page/3/</a>等，但标题还是首页的标题。这种情况对搜索引擎来说是非常不友好的。<span id="more-233"></span></p>
<p><img class="alignnone" title="标题重复" src="http://i623.domety.com/albums/tt312/baolai5/201001/domety_001.png" alt="" width="566" height="291" /></p>
<p>于是我就想到，何不在标题中加上页码呢？这样就能避免标题重复的问题了，那就修改header.php文件吧，在&lt;title&gt;和&lt;/title&gt;之间加入以下代码</p>
<pre name="code" class="php">&lt;?php $paged = get_query_var('paged'); if($paged &gt; 1) printf('第%s页&amp;laquo;',$paged); ?&gt;</pre>
<p>如果当前页面不是第一页的话，就在标题中显示页码。具体效果可以点击小站的分页导航看一下，搜索引擎收录结果如下</p>
<p><img class="alignnone" title="标题带有页码" src="http://i623.domety.com/albums/tt312/baolai5/201001/domety_002.png" alt="" width="576" height="95" /></p>
<p>在这里也提醒一下使用分页插件的朋友，最好也给标题加个页码，或者使用其它你能想到的方法来区别各个标题，争取做到一个链接对应一个标题。</p>
]]></content:encoded>
			<wfw:commentRss>http://domety.com/archives/233/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>the_content是如何输出摘要和全文的</title>
		<link>http://domety.com/archives/224/</link>
		<comments>http://domety.com/archives/224/#comments</comments>
		<pubDate>Wed, 13 Jan 2010 14:27:46 +0000</pubDate>
		<dc:creator>DDBug</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[The Loop]]></category>
		<category><![CDATA[摘要]]></category>

		<guid isPermaLink="false">http://domety.com/?p=224</guid>
		<description><![CDATA[现在每次写文章的时候，已经习惯了在文章和第一段或前两段之后加一个more标签，这样首页的摘要就会显示more标签之前的内容。但是一直都有一个疑问，首页index.php和日志页面single.php都是调用the_content函数，为什么一个显示摘要，一个显示全文呢？
通过阅读wordpress的源代码，发现了这样一段代码
 if ( is_single() &#124;&#124; is_page() &#124;&#124; is_feed() )
  $more = 1;
难道是通过$more变量决定的？再去了解一下the_content的源代码，果然，就是通过$more变量来决定是输出摘要还是输出全文的。为了证实这个结论，我做了一个实验:
 修改index.php文件，在the_content之前强行把$more的值修改为1
$more = 1;
the_content();
结果之前一直显示摘要的首页，现在显示的是全文内容。同样，再去修改singel.php文件，在the_content之前强行把$more的值修改为0
$more = 0;
the_content();
结果日志页面显示的是摘要，而不是全文。
通过以上实验可以看出，the_content函数是输出全文还是输出摘要，是这个全局变量$more决定的。理解了这一点，我们就可以更灵活的运用the_content函数。下面通过一个实例来结束本文。
首页的第一篇文章显示全文，其它文章显示摘要：
&#60;?php if(have_posts() ){
                   $more = -1;
                   while(have_posts()){
                           the_post(); 
                           // ......
                          if($more == -1){
                                $more = 1;
                                the_content();
                                $more = 0;
                          } else {
                                the_content('继续阅读...');
                           }
                          // ......
                   }//end while(have_posts)
             }//end if(have_posts())
   else{
          echo '没有找到相关文章';
   }//end else
  ?&#62;
]]></description>
			<content:encoded><![CDATA[<p>现在每次写文章的时候，已经习惯了在文章和第一段或前两段之后加一个more标签，这样首页的摘要就会显示more标签之前的内容。但是一直都有一个疑问，首页index.php和日志页面single.php都是调用the_content函数，为什么一个显示摘要，一个显示全文呢？<span id="more-224"></span></p>
<p>通过阅读wordpress的源代码，发现了这样一段代码</p>
<pre name="code" class="php"> if ( is_single() || is_page() || is_feed() )
  $more = 1;</pre>
<p>难道是通过$more变量决定的？再去了解一下the_content的源代码，果然，就是通过$more变量来决定是输出摘要还是输出全文的。为了证实这个结论，我做了一个实验:</p>
<p> 修改index.php文件，在the_content之前强行把$more的值修改为1</p>
<pre name="code" class="php">$more = 1;
the_content();</pre>
<p>结果之前一直显示摘要的首页，现在显示的是全文内容。同样，再去修改singel.php文件，在the_content之前强行把$more的值修改为0</p>
<pre name="code" class="php">$more = 0;
the_content();</pre>
<p>结果日志页面显示的是摘要，而不是全文。</p>
<p>通过以上实验可以看出，the_content函数是输出全文还是输出摘要，是这个全局变量$more决定的。理解了这一点，我们就可以更灵活的运用the_content函数。下面通过一个实例来结束本文。</p>
<p>首页的第一篇文章显示全文，其它文章显示摘要：</p>
<pre name="code" class="php">&lt;?php if(have_posts() ){
                   $more = -1;
                   while(have_posts()){
                           the_post(); 
                           // ......
                          if($more == -1){
                                $more = 1;
                                the_content();
                                $more = 0;
                          } else {
                                the_content('继续阅读...');
                           }
                          // ......
                   }//end while(have_posts)
             }//end if(have_posts())
   else{
          echo '没有找到相关文章';
   }//end else
  ?&gt;</pre>
]]></content:encoded>
			<wfw:commentRss>http://domety.com/archives/224/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>自定义more标签的more跳转</title>
		<link>http://domety.com/archives/220/</link>
		<comments>http://domety.com/archives/220/#comments</comments>
		<pubDate>Sun, 10 Jan 2010 14:35:17 +0000</pubDate>
		<dc:creator>DDBug</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[摘要]]></category>
		<category><![CDATA[正则表达式]]></category>

		<guid isPermaLink="false">http://domety.com/?p=220</guid>
		<description><![CDATA[很多主题首页的摘要都是使用the_content()函数来实现的，使用这种方法会在摘要结束的地方自动生成 一个more链接，比如&#8221;阅读更多&#8221;或&#8221;阅读全文&#8221;之类，当你点击这个链接之后会自动跳转到该日志页面摘要之后的部分。如果你喜欢这样的效果，那自然很好，不用修改。但是如果你不喜欢这种效果，而是想跳转到文章最开始的部分，那就继续向下看。
其实我们不难发现，more链接的链接地址就是在日志的链接地址之后加了一个#more-id，我们如果有办法把这个#more-id从链接中去掉不就行了吗？幸好wordpress给我们提供了一个叫做the_content_more_link的filter，通过它再加上正则表达式，可以很轻松的解决这个问题。

function remove_more_jump_link($link) {
return preg_replace('/#more-\d+/i','',$link);
}
add_filter('the_content_more_link', 'remove_more_jump_link');
把以上代码复制到functions.php文件即可。代码中的正则表达式也很好理解，就是把链接中#more-id形式的字符串替换为空。
]]></description>
			<content:encoded><![CDATA[<p>很多主题首页的摘要都是使用the_content()函数来实现的，使用这种方法会在摘要结束的地方自动生成 一个more链接，比如&#8221;阅读更多&#8221;或&#8221;阅读全文&#8221;之类，当你点击这个链接之后会自动跳转到该日志页面摘要之后的部分。如果你喜欢这样的效果，那自然很好，不用修改。但是如果你不喜欢这种效果，而是想跳转到文章最开始的部分，那就继续向下看。</p>
<p>其实我们不难发现，more链接的链接地址就是在日志的链接地址之后加了一个#more-id，我们如果有办法把这个#more-id从链接中去掉不就行了吗？幸好wordpress给我们提供了一个叫做the_content_more_link的filter，通过它再加上正则表达式，可以很轻松的解决这个问题。</p>
<pre name="code" class="php">
function remove_more_jump_link($link) {
return preg_replace('/#more-\d+/i','',$link);
}
add_filter('the_content_more_link', 'remove_more_jump_link');</pre>
<p>把以上代码复制到functions.php文件即可。代码中的正则表达式也很好理解，就是把链接中#more-id形式的字符串替换为空。</p>
]]></content:encoded>
			<wfw:commentRss>http://domety.com/archives/220/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

