<?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>浩行天下 ghSky-&#62;Blog &#187; WordPress</title>
	<atom:link href="http://ghsky.com/tag/wordpress/feed" rel="self" type="application/rss+xml" />
	<link>http://ghsky.com</link>
	<description>热衷于前端技术 (X)HTML, CSS, JavaScript</description>
	<lastBuildDate>Sat, 24 Jul 2010 09:30:45 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
	<atom:link rel='hub' href='http://ghsky.com/?pushpress=hub'/>
		<item>
		<title>最新文章函数不显示指定分类</title>
		<link>http://ghsky.com/2008/07/function-of-recent-posts-none-display-some-categories.html</link>
		<comments>http://ghsky.com/2008/07/function-of-recent-posts-none-display-some-categories.html#comments</comments>
		<pubDate>Fri, 18 Jul 2008 15:35:03 +0000</pubDate>
		<dc:creator>ghSky</dc:creator>
				<category><![CDATA[Site]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Plugin]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://ghsky.com/?p=199</guid>
		<description><![CDATA[启用了Video分类，但是不希望这个分类的文章在“最新文章”中显示，怎么办呢？只能过滤分类了。可是现在的WordPress数据库比较奇特，在文章的wp_posts属性里面category已经被全部指定为0 （汗一个，那文章分类在哪里呢？）原来在现在的WordPress中引用了term_taxonomy(下简称tt)、term_relationships(下简称tr)来确定分类关系~~自己还是不大明白为啥要用那么复杂的办法捏 怎么排除这个分类的文章呢？参考了“相关日志”这个插件的一些代码，不过作者的思路比较高深，我这种随便玩玩php的人自然很难看懂，所以就用了一些比较笨的办法来实现相关的排除分类。这里就摘取了相关的一段代码：p.s.排除的分类ID修改变量$ex_id即可 //Recent Posts function get_recent_posts($no_posts = 10, $before = ' ', $after = ' ', $show_pass_post = false, $skip_posts = 0, $ex_id = '47') { global $wpdb, $post, $table_prefix; $exclude = explode(",",$ex_id); $q = "SELECT tt.term_id, tr.object_id FROM ". $table_prefix ."term_taxonomy tt, " . $table_prefix . "term_relationships tr WHERE tt.taxonomy = 'category' AND [...]]]></description>
			<content:encoded><![CDATA[<p>启用了Video分类，但是不希望这个分类的文章在“最新文章”中显示，怎么办呢？只能过滤分类了。可是现在的WordPress数据库比较奇特，在文章的wp_posts属性里面category已经被全部指定为0 <img src='http://ghsky.com/wp-includes/images/smilies/icon_mrgreen.gif' alt=':mrgreen:' class='wp-smiley' /> （汗一个，那文章分类在哪里呢？）原来在现在的WordPress中引用了term_taxonomy(下简称tt)、term_relationships(下简称tr)来确定分类关系~~自己还是不大明白为啥要用那么复杂的办法捏 <img src='http://ghsky.com/wp-includes/images/smilies/icon_question.gif' alt=':question:' class='wp-smiley' /> </p>
<p>怎么排除这个分类的文章呢？参考了“相关日志”这个插件的一些代码，不过作者的思路比较高深，我这种随便玩玩php的人自然很难看懂，所以就用了一些比较笨的办法来实现相关的排除分类。这里就摘取了相关的一段代码：p.s.排除的分类ID修改变量$ex_id即可</p>
<pre class="brush:php">
//Recent Posts
function get_recent_posts($no_posts = 10, $before = '
<li>', $after = '</li>

', $show_pass_post = false, $skip_posts = 0, $ex_id = '47') {
    global $wpdb, $post, $table_prefix;
	$exclude = explode(",",$ex_id);
	$q = "SELECT tt.term_id, tr.object_id FROM ". $table_prefix ."term_taxonomy tt, " . $table_prefix . "term_relationships tr WHERE tt.taxonomy = 'category' AND tt.term_taxonomy_id = tr.term_taxonomy_id";
	$cats = $wpdb->get_results($q);
	$cnt = 0;
	foreach($cats as $cat) {
		if (in_array($cat->term_id, $exclude) == true){
			$ex_post_id[$cnt] = $cat->object_id;
			$cnt++;
		}
	}
	$ex_post_out = 'p.ID !=';
	for ($i = 0; $i <= $cnt-2; $i++) {
		$ex_post_out = $ex_post_out . $ex_post_id[$i] . ' AND p.ID !=';
	}
	$ex_post_out .= $ex_post_id[$cnt-1];
    $request = "SELECT p.ID, p.post_title, p.post_date, p.post_content FROM $wpdb->posts p WHERE $ex_post_out AND p.post_status = 'publish' AND p.post_type = 'post'";
        if(!$show_pass_post) { $request .= "AND post_password ='' "; }
    $request .= "ORDER BY post_date DESC LIMIT $skip_posts, $no_posts";
    $posts = $wpdb->get_results($request);
    $output = '';
...
</pre>
<p>大概原来就是先从表中确定是category的项目，然后再对照tt.term_taxonomy_id = tr.term_taxonomy_id的项目，即把分类和文章ID挂上勾，然后再查找所要排除的分类的ID，再从中筛选出来该分类（或几个分类）的文章ID生成数组ex_post_id，再用一点儿字符串链接的方法结合成字符串p.ID != xxx以便在查询最新文章的时候排除这个几个ID，然后就大功告成了~~~研究这个真的花了不少时间，首先mysql的查询就比较头大，然后php数组问题也卡了一下（原来数组赋值和pascal一样，只不过不用事先声明数组），基本就这样咯~~</p>
]]></content:encoded>
			<wfw:commentRss>http://ghsky.com/2008/07/function-of-recent-posts-none-display-some-categories.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>最近对WP的一些动作</title>
		<link>http://ghsky.com/2008/06/some-actions-to-my-wordpress.html</link>
		<comments>http://ghsky.com/2008/06/some-actions-to-my-wordpress.html#comments</comments>
		<pubDate>Thu, 12 Jun 2008 04:22:22 +0000</pubDate>
		<dc:creator>ghSky</dc:creator>
				<category><![CDATA[Site]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Plugin]]></category>
		<category><![CDATA[Theme]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://ghsky.com/?p=145</guid>
		<description><![CDATA[最近，在小影唆使下，更新了原来的破主题，其实自己高考前就想高考完了换主题。他小子给我看了个不错的主题Fresh News，看似很不错，不过是收费的，而且费用高达99.95美刀（额滴神啊~~~），快有一个Windows Vista Released贵了……不过那小子不知从哪里居然搞到了主题文件，汗，佩服他一下……但是用上后，发现这个主题那是相当复杂，复杂，……，复杂！个人使用不了那么多功能，所以我就想正好练练PHP CSS吧，就开始了精简工作，和那小子一起搞。经过4天的努力，基本搞定了，就是现在这个应用的样子。在这期间我算是认识到了JS的威力，可怕啊，还要再次多谢刺猬哥哥的帮忙哦，哇哈哈，又是他帮忙加了一些不错功能（主要是comments.php里面）！主题兼容性没有自己验证，让小影验证了下，应该基本没问题！哇哈哈，终于搞定了！不过这个主题像这样改了也许会有侵权的嫌疑，所以当然不能把这个主题发布咯，希望原主题的作者表来找我俩的麻烦（其实罪魁祸首是那个提供下载的人）…… 昨天随便逛的时候，发现了个相当不错的主题，可惜晚发现了，不然现在可能我就用上那个主题了，大家没事可以去看看，居然那作者还是第一次发主题，就这么精美，Orz 主题：INSay 今天随便转了转了，又发现我爱水煮鱼上面的一篇不错的文章，转过来收藏+共享！ Popularity Contest 转换到 PostViews 前面在通过优化插件来提高 WordPress 运行效率中谈到：我一直使用的 Popularity Contest 这个插件，这个是非常好的插件，但是它一个很大的问题是对数据库操作实在太多了，因为要统计一篇日志在 single category archive home feed 等下的被阅读的次数，其实个人觉得只有在 single 下阅读次数是最重要的，如果要求提供 WordPress 运行效率的情况下，最好转换到 PostViews 这个插件。今天就把转换函数贴出来，本来想用 SQL 转换的，后来发现一个循环更容易解决问题，代码如下：]]></description>
			<content:encoded><![CDATA[<p>最近，在<a href="http://cople.cn/" target="_blank">小影</a>唆使下，更新了原来的破主题，其实自己高考前就想高考完了换主题。他小子给我看了个不错的主题<a href="http://freshnews.premiumnewstheme.com/">Fresh News</a>，看似很不错，不过是收费的，而且费用高达99.95美刀（额滴神啊~~~），快有一个Windows Vista Released贵了……不过那小子不知从哪里居然搞到了主题文件，汗，佩服他一下……但是用上后，发现这个主题那是相当复杂，复杂，……，复杂！个人使用不了那么多功能，所以我就想正好练练PHP CSS吧，就开始了精简工作，和那小子一起搞。经过4天的努力，基本搞定了，就是现在这个应用的样子。在这期间我算是认识到了JS的威力，可怕啊，还要再次多谢<a href="http://soniccube.net">刺猬哥哥</a>的帮忙哦，哇哈哈，又是他帮忙加了一些不错功能（主要是comments.php里面）！主题兼容性没有自己验证，让小影验证了下，应该基本没问题！哇哈哈，终于搞定了！不过这个主题像这样改了也许会有侵权的嫌疑，所以当然不能把这个主题发布咯，希望原主题的作者表来找我俩的麻烦（其实罪魁祸首是那个提供下载的人）……</p>
<p>昨天随便逛的时候，发现了个相当不错的主题，可惜晚发现了，不然现在可能我就用上那个主题了，大家没事可以去看看，居然那作者还是第一次发主题，就这么精美，Orz 主题：<a href="http://www.ineversay.com/wordpress/insay.html">INSay</a><br />
<span id="more-145"></span><br />
今天随便转了转了，又发现<a href="http://fairyfish.net/">我爱水煮鱼</a>上面的一篇不错的文章，转过来收藏+共享！</p>
<p><a href="http://fairyfish.net/2008/01/02/popularity-contest-to-postviews/">Popularity Contest 转换到 PostViews</a><br />
前面在通过优化插件来提高 WordPress 运行效率中谈到：我一直使用的 Popularity Contest 这个插件，这个是非常好的插件，但是它一个很大的问题是对数据库操作实在太多了，因为要统计一篇日志在 single category archive home feed 等下的被阅读的次数，其实个人觉得只有在 single 下阅读次数是最重要的，如果要求提供 WordPress 运行效率的情况下，最好转换到 PostViews 这个插件。今天就把转换函数贴出来，本来想用 SQL 转换的，后来发现一个循环更容易解决问题，代码如下：</p>
<pre class="brush:php">
<?php
function Popularity_Contest_to_PostViews() {
	global $wpdb;
	$q = "select id from wp_posts where post_type='post' or post_type='page'";
	$post_ids = $wpdb->get_results($q);
	foreach ($post_ids as $post_id ){
		$id = $post_id -> id;
		$sql = "SELECT single_views FROM wp_ak_popularity WHERE post_id = $id";
		$views = $wpdb->get_results($sql);
		if ($views) {
			$view = $views[0]->single_views;
			if($view){
				if(!update_post_meta($id, 'views', $view)) {
					add_post_meta($id, 'views', $view, true);
				}
			}
		}
	}
}?>
<?php Popularity_Contest_to_PostViews(); ?>
</pre>
<p>在激活 PostViews 插件之前，你把以上代码复制到你的模板的 footer.php 中，让其运行一次，删除以上代码，然后安装 PostViews 插件。</p>
<p>该函数在本站测试成功，但是为了保证你的数据的安全，请在使用之前，最好备份好数据库，以免出错，由此出现错误，本站概不负责。挖哈哈！</p>
<p>所以也把自己的POP插件卸载了，换上了PostViews，使用中，体会以后慢慢说，不过看首页的数据库查询量是下来了，从3X到了2X！</p>
]]></content:encoded>
			<wfw:commentRss>http://ghsky.com/2008/06/some-actions-to-my-wordpress.html/feed</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>提高你博客性能的十条建议</title>
		<link>http://ghsky.com/2008/05/10-tips-toimprove-the-performance-of-your-blog.html</link>
		<comments>http://ghsky.com/2008/05/10-tips-toimprove-the-performance-of-your-blog.html#comments</comments>
		<pubDate>Mon, 26 May 2008 12:10:35 +0000</pubDate>
		<dc:creator>ghSky</dc:creator>
				<category><![CDATA[Site]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://ghsky.com/?p=140</guid>
		<description><![CDATA[虽然文章说是给PJBLOG的用户，但是看了一下，WP用户有些地方也同样适用，所以转过来自己收藏以后看看，也供大家学习学习！ 原文来自：dudo 对于服务器租用者来说，要想在硬件环境、网络环境等来改善自身网站性能，受客观因素的影响可能会有比较大的难度。因此，只能退而求其次，在程序上狠下功夫。对于独立博客站长来说，使用的博客程序一般都是比较成熟的发行版的程序，这些程序为了适用的广泛性往往在代码中留出了很大的改进余地，因此，我们可以 在这上面下一些功夫。 我针对PJBlog博客程序（其它独立博客程序和网站也可作为参考）为例说一下改进方法： 1.合并JavaScript文件。无论是在PJBlog还是其它的博客程序中，都使用了大量的外部JavaScript文件，要知道，引入一个外部文件都要 发送一个HTTP请求，而在所有影响页面响应速度的因素中，HTTP请求是最关键的一个，因此把所有的JavaScrip文件合并到一个 javascript.js的文件中是一个很好的做法。不过，你要注意不同的JavaScript文件中使用了不同的变量和函数名称，你要保证它们合并之 后还能正常工作。在某些情况下，你也可以有两个独立的JavaScript文件； 2.精减你的JavaScript文件。合并 JavaScript文件是为了减少HTTP请求次数，但是基本上不会在体积上有所改观，所以你还需要精简掉JavaScript文件中那些没有用的东 西，比如注释、换行、空白等，这大概会使你的程序缩小20%~30%的空间。你可以使用ESC 1.14对文件进行压缩，它的压缩率高达60%以上，对于减少响应大小、提高响应速度来说大有裨益； 3.合并CSS文件与精减CSS文件。和处理JavaScript文件一样，把所有的CSS文件合并到一个style.css中，CSS比 JavaScript 好处理的一点就是它冲突的机率较小，即便有冲突也不会是大问题。精简就去掉多余的样式化的格式，把所有的CSS规则都放到一行中。这款叫作Minify的 程序不但可以压缩CSS还可以压缩JavaScript和PHP程序。不过这里要提醒的是，如果你要合并和精简文件一定要保留原来的文件以便以后程序更改时使用。 4.使用CSS Spirites。所谓的CSS Spirites就是所有CSS中用来做背景图像的图片文件都放到一个文件中。在PJBlog以及其它博客程序的皮肤中，作者很多都没有使用CSS Spirites，这样造成每出现一次background规则都要发送一次HTTP请求，而如果使用CSS Spirites则只需要一次HTTP请求，节省不必要的开支。 5.使用缓存。对于静态内容（如Flash、 JavaScript、CSS、Image）通过加上Expires头或者Cache-Control来把它们缓存到客户端，这样用户在下次访问的时候就 可以不用下载这样内容了，这样减少了HTTP请求的次数又减少了下载文件的大小。在IIS中设置文件头很简单，在你要设置的文件或者文件夹上右键点击—— 属性——HTTP头，然后勾中“启用文件过期”，设定过期时间，可以是一年或者十年等，还可以指定某个未来的时间，如2010年等。不过你一但设置了 HTTP头，如果你要对文件作出修改你需为修改过的文件重新起一个名字。 6.启用Gzip压缩。Gzip压缩针对 JavaScript、CSS等内容一种压缩技术，它能大大减少文件的体积提高传输速率，精简JavaScript和CSS只是去除不必要的内容，而 Gzip压缩则是将文件在服务器端打包、在客户端解包的过程。Apache和IIS6.0都内置了Gzip技术，现代浏览器都支持Gzip技术（即使不支 持它也会告诉服务器不要打包），因此可以放心使用。在IIS6.0中你需要简单配置之后才能使用Gzip技术，而在Apache 1.3中要启用mod_zip，在Apache 2.x使用moflate。Gzip大概可以节省70%的传输空间，目前互联网中有90%浏览器资料支持Gzip传输。 7.把JavaSCript 文件放在文档的最末尾，而把CSS文件放在之间。CSS放在之间会加快文档下载。在Yahoo！的研 究中发现，如果你把一个CSS文件置于文档内部，当浏览器加载到这个样式表时会终止所有文件的下载而单独下载它（一般的下载浏览器使用并行下载模式），这 是因为浏览器在下载到一个CSS文件后都要根据CSS内的规则重绘屏幕，这还会导致用户出现白屏。所以要把你所有的样式文件都放在最开始。而把 JavaScript文件放于末尾下载，一方面可以使用户首先获得文档内容，另一方面JavaScript文件的下载和其它文件不同，它不能和其它文件同 时下载，所有的JavaScript文件只有单独一个一个下载。所以在不影响使用的情况下，JavaScript文件要放在末尾加载。 8.CSS和JavaScript文档要成为独立的外部文件。这是因为浏览器加载使用的是并行模式，一次可以加载多个内容，把CSS和JavaScript作为单独文件不但可以减小HTML文档的大小，而可以加快下载效率。 9.使用少量的域名。一般来说一个页面引用的文件（图片、Flash、CSS、JavaScript）不能多于四个主机，因为每多出一个域名就意味着多一个 DNS的查找，在浏览器查找DNS信息的过程中，浏览器由于不知道要访问的IP地址是什么，所以它什么都不做，只是在等待，所以DNS查找的次数越少，响 应速度就越快。 10.避免CSS中使用Expression。虽然功能很强大，但是它的计算频率太高，影响网站的整体性能。对于一个CSS Expression来说，即使你滚动一下屏幕它都要重新计算一次，甚至你移到一次鼠标它都要重新计算，所有一个CSS Express在页面中计算10000次是很容易的事情。 空间和网络的因素我们很难左右，但是程序本身的性能还需要改进的地方。看看你的博客在提高性能方面是否还有需要改进的地方呢？]]></description>
			<content:encoded><![CDATA[<p>虽然文章说是给PJBLOG的用户，但是看了一下，WP用户有些地方也同样适用，所以转过来自己收藏以后看看，也供大家学习学习！<br />
原文来自：<a href="http://www.dudo.org/" target="_blank">dudo</a></p>
<p>对于服务器租用者来说，要想在硬件环境、网络环境等来改善自身网站性能，受客观因素的影响可能会有比较大的难度。因此，只能退而求其次，在程序上狠下功夫。对于独立博客站长来说，使用的博客程序一般都是比较成熟的发行版的程序，这些程序为了适用的广泛性往往在代码中留出了很大的改进余地，因此，我们可以 在这上面下一些功夫。</p>
<p>我针对PJBlog博客程序（其它独立博客程序和网站也可作为参考）为例说一下改进方法：</p>
<p>1.合并JavaScript文件。无论是在PJBlog还是其它的博客程序中，都使用了大量的外部JavaScript文件，要知道，引入一个外部文件都要 发送一个HTTP请求，而在所有影响页面响应速度的因素中，HTTP请求是最关键的一个，因此把所有的JavaScrip文件合并到一个 javascript.js的文件中是一个很好的做法。不过，你要注意不同的JavaScript文件中使用了不同的变量和函数名称，你要保证它们合并之 后还能正常工作。在某些情况下，你也可以有两个独立的JavaScript文件；</p>
<p>2.精减你的JavaScript文件。合并 JavaScript文件是为了减少HTTP请求次数，但是基本上不会在体积上有所改观，所以你还需要精简掉JavaScript文件中那些没有用的东 西，比如注释、换行、空白等，这大概会使你的程序缩小20%~30%的空间。你可以使用ESC 1.14对文件进行压缩，它的压缩率高达60%以上，对于减少响应大小、提高响应速度来说大有裨益；</p>
<p>3.合并CSS文件与精减CSS文件。和处理JavaScript文件一样，把所有的CSS文件合并到一个style.css中，CSS比 JavaScript 好处理的一点就是它冲突的机率较小，即便有冲突也不会是大问题。精简就去掉多余的样式化的格式，把所有的CSS规则都放到一行中。这款叫作Minify的 程序不但可以压缩CSS还可以压缩JavaScript和PHP程序。不过这里要提醒的是，如果你要合并和精简文件一定要保留原来的文件以便以后程序更改时使用。</p>
<p>4.使用CSS Spirites。所谓的CSS Spirites就是所有CSS中用来做背景图像的图片文件都放到一个文件中。在PJBlog以及其它博客程序的皮肤中，作者很多都没有使用CSS Spirites，这样造成每出现一次background规则都要发送一次HTTP请求，而如果使用CSS Spirites则只需要一次HTTP请求，节省不必要的开支。</p>
<p>5.使用缓存。对于静态内容（如Flash、 JavaScript、CSS、Image）通过加上Expires头或者Cache-Control来把它们缓存到客户端，这样用户在下次访问的时候就 可以不用下载这样内容了，这样减少了HTTP请求的次数又减少了下载文件的大小。在IIS中设置文件头很简单，在你要设置的文件或者文件夹上右键点击—— 属性——HTTP头，然后勾中“启用文件过期”，设定过期时间，可以是一年或者十年等，还可以指定某个未来的时间，如2010年等。不过你一但设置了 HTTP头，如果你要对文件作出修改你需为修改过的文件重新起一个名字。<span id="more-140"></span></p>
<p>6.启用Gzip压缩。Gzip压缩针对 JavaScript、CSS等内容一种压缩技术，它能大大减少文件的体积提高传输速率，精简JavaScript和CSS只是去除不必要的内容，而 Gzip压缩则是将文件在服务器端打包、在客户端解包的过程。Apache和IIS6.0都内置了Gzip技术，现代浏览器都支持Gzip技术（即使不支 持它也会告诉服务器不要打包），因此可以放心使用。在IIS6.0中你需要简单配置之后才能使用Gzip技术，而在Apache 1.3中要启用mod_zip，在Apache 2.x使用moflate。Gzip大概可以节省70%的传输空间，目前互联网中有90%浏览器资料支持Gzip传输。</p>
<p>7.把JavaSCript 文件放在文档的最末尾，而把CSS文件放在<head>之间。CSS放在<head/>之间会加快文档下载。在Yahoo！的研 究中发现，如果你把一个CSS文件置于文档内部，当浏览器加载到这个样式表时会终止所有文件的下载而单独下载它（一般的下载浏览器使用并行下载模式），这 是因为浏览器在下载到一个CSS文件后都要根据CSS内的规则重绘屏幕，这还会导致用户出现白屏。所以要把你所有的样式文件都放在最开始。而把 JavaScript文件放于末尾下载，一方面可以使用户首先获得文档内容，另一方面JavaScript文件的下载和其它文件不同，它不能和其它文件同 时下载，所有的JavaScript文件只有单独一个一个下载。所以在不影响使用的情况下，JavaScript文件要放在末尾加载。</p>
<p>8.CSS和JavaScript文档要成为独立的外部文件。这是因为浏览器加载使用的是并行模式，一次可以加载多个内容，把CSS和JavaScript作为单独文件不但可以减小HTML文档的大小，而可以加快下载效率。</p>
<p>9.使用少量的域名。一般来说一个页面引用的文件（图片、Flash、CSS、JavaScript）不能多于四个主机，因为每多出一个域名就意味着多一个 DNS的查找，在浏览器查找DNS信息的过程中，浏览器由于不知道要访问的IP地址是什么，所以它什么都不做，只是在等待，所以DNS查找的次数越少，响 应速度就越快。</p>
<p>10.避免CSS中使用Expression。虽然功能很强大，但是它的计算频率太高，影响网站的整体性能。对于一个CSS Expression来说，即使你滚动一下屏幕它都要重新计算一次，甚至你移到一次鼠标它都要重新计算，所有一个CSS Express在页面中计算10000次是很容易的事情。</p>
<p>     空间和网络的因素我们很难左右，但是程序本身的性能还需要改进的地方。看看你的博客在提高性能方面是否还有需要改进的地方呢？</p>
]]></content:encoded>
			<wfw:commentRss>http://ghsky.com/2008/05/10-tips-toimprove-the-performance-of-your-blog.html/feed</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>给WP加入Ctrl+Enter快捷键回复功能</title>
		<link>http://ghsky.com/2008/04/add-ctrl-enter-answer.html</link>
		<comments>http://ghsky.com/2008/04/add-ctrl-enter-answer.html#comments</comments>
		<pubDate>Sun, 20 Apr 2008 07:54:34 +0000</pubDate>
		<dc:creator>ghSky</dc:creator>
				<category><![CDATA[Site]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://ghsky.com/?p=135</guid>
		<description><![CDATA[多年以来在QQ上都用惯了Ctrl+Enter的回复模式，在DZ下也可以用这个快速回复帖子！但是在WordPress下却没有这个快捷的功能，今天总算是在朋友（刺猬哥哥）的帮助下搞定了，在此给大家分享一下，就着再次感谢一下刺猬哥哥！ 首先是在模版的comments.php加一段JS代码 function ctrlEnter(e){ var theEvent = e?e:window.event; 　　if(theEvent.ctrlKey &#038;&#038; theEvent.keyCode==13){ document.getElementById("submit").click(); } } 记住，最好是加在php的头部！ 最后是找到这段，并修改： 哈哈，这样基本上就大功告成了，大家可以尝试做一下试试！]]></description>
			<content:encoded><![CDATA[<p>多年以来在QQ上都用惯了Ctrl+Enter的回复模式，在DZ下也可以用这个快速回复帖子！但是在WordPress下却没有这个快捷的功能，今天总算是在朋友（刺猬哥哥）的帮助下搞定了，在此给大家分享一下，就着再次感谢一下刺猬哥哥！</p>
<p>首先是在模版的comments.php加一段JS代码</p>
<pre class="brush:js">
<script language=javascript> 
function ctrlEnter(e){ 
    var theEvent = e?e:window.event;
　　if(theEvent.ctrlKey &#038;& theEvent.keyCode==13){
      document.getElementById("submit").click();
    } 
}
</script>
</pre>
<p>记住，最好是加在php的头部！</p>
<p>最后是找到这段，并修改：</p>
<pre class="brush:html">
<textarea name="comment" id="comment" tabindex="4" rows="4" cols="70" ></textarea>
<!--修改为：-->
<textarea name="comment" id="comment" tabindex="4" rows="4" cols="70" onkeyup="javascript:return ctrlEnter(event);"></textarea>
<!--注意，添加了这段代码：onkeyup="javascript:return ctrlEnter(event);"-->
</pre>
<p>哈哈，这样基本上就大功告成了，大家可以尝试做一下试试！</p>
]]></content:encoded>
			<wfw:commentRss>http://ghsky.com/2008/04/add-ctrl-enter-answer.html/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>WordPress 2.5 常问问题解答</title>
		<link>http://ghsky.com/2008/04/wordpress-25-faq.html</link>
		<comments>http://ghsky.com/2008/04/wordpress-25-faq.html#comments</comments>
		<pubDate>Fri, 04 Apr 2008 13:52:46 +0000</pubDate>
		<dc:creator>ghSky</dc:creator>
				<category><![CDATA[Site]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://ghsky.com/?p=132</guid>
		<description><![CDATA[WordPress 2.5 相关问题解答由 WordPress 中文团队的 Leo 翻译自 FAQ on WordPress 2.5，略有删节。 Q:怎样查看日志 ID 或页面 ID？ A:如果你的浏览器可以在状态栏显示 URL，当你把鼠标悬浮到链接上，可以看到 ID 作为 URL 的一部分而被显示在浏览器状态栏。还可以通过使用 phpMyAdmin 之类的工具来浏览数据库以查看 ID，找到表 wp_posts，post_title 字段是日志或页面的标题，ID 字段即为日志或页面的 ID。（译注：前两天逛插件目录的时候似乎看到了一个在后台直接显示日志 ID 的插件，可惜忘了名字了，请知道的朋友告知） Q:怎样查看分类 ID？ A:在后台的“管理”-“分类”下，将鼠标移到分类名称上，可以在浏览器的链接中看到该分类的 ID。还可以通过使用 phpMyAdmin 之类的工具来浏览数据库以查看 ID，找到表 wp_terms，name 字段是分类名称，term_id 字段即为该分类的 ID。 Q:我屏幕分辨率是 1280×960，此时后台管理页面偏向屏幕左侧，而不是居中或拉伸到100%。 A:这是刻意这样设计的。但是你可以通过插件 Remove Max Width Plugin 来改变这一点。（译注：Admin Big Width 也可以做到） Q:如何编辑日志缩略名或页面缩略名？ A:撰写或编辑日志（页面）的时候，日志（页面）缩略名会作为永久链接的一部分显示在标题字段下。如果你使用的是默认的永久链接设置，则不可以查看或编辑永久链接。只有当你的永久链接中含有 %postname% [...]]]></description>
			<content:encoded><![CDATA[<p>WordPress 2.5 相关问题解答由 <a href="http://wpcng.com/">WordPress 中文团队</a>的 <a href="http://cuteleo.cn/">Leo</a> 翻译自 <a href="http://weblogtoolscollection.com/archives/2008/04/01/faq-on-wordpress-25/">FAQ on WordPress 2.5</a>，略有删节。</p>
<p>Q:怎样查看日志 ID 或页面 ID？<br />
A:如果你的浏览器可以在状态栏显示 URL，当你把鼠标悬浮到链接上，可以看到 ID 作为 URL 的一部分而被显示在浏览器状态栏。还可以通过使用 phpMyAdmin 之类的工具来浏览数据库以查看 ID，找到表 wp_posts，post_title 字段是日志或页面的标题，ID 字段即为日志或页面的 ID。（译注：前两天逛插件目录的时候似乎看到了一个在后台直接显示日志 ID 的插件，可惜忘了名字了，请知道的朋友告知）</p>
<p>Q:怎样查看分类 ID？<br />
A:在后台的“管理”-“分类”下，将鼠标移到分类名称上，可以在浏览器的链接中看到该分类的 ID。还可以通过使用 phpMyAdmin 之类的工具来浏览数据库以查看 ID，找到表 wp_terms，name 字段是分类名称，term_id 字段即为该分类的 ID。</p>
<p>Q:我屏幕分辨率是 1280×960，此时后台管理页面偏向屏幕左侧，而不是居中或拉伸到100%。<br />
A:这是刻意这样设计的。但是你可以通过插件 Remove Max Width Plugin 来改变这一点。（译注：Admin Big Width 也可以做到）</p>
<p>Q:如何编辑日志缩略名或页面缩略名？<br />
A:撰写或编辑日志（页面）的时候，日志（页面）缩略名会作为永久链接的一部分显示在标题字段下。如果你使用的是默认的永久链接设置，则不可以查看或编辑永久链接。只有当你的永久链接中含有 %postname% 的时候，才能编辑缩略名。撰写或编辑日志（页面）时，只有填写了标题，才会显示永久链接字段。</p>
<p>Q:撰写日志时候，在哪里设置日志分类和标签？<br />
A:把窗口内容往下拉，这些设置在日志内容编辑框下。</p>
<p>Q:在哪里编辑用户的姓名？<br />
A:在用户列表中，点击用户的名称，即可编辑该用户的资料。</p>
<p>Q:导入链接的功能放在哪了？<br />
A:“撰写”-“链接”页面的“相关操作”区域。</p>
<p>Q:子分类怎么了？难道我不能把“福特”同时作为“新车”和“旧车”的子分类吗？<br />
A:重复的子分类或标签已经不再允许出现。<span id="more-132"></span></p>
<p>Q:上传文件的时候得到这样的消息：“该文件类型不符合安全规则，请尝试其它类型的文件。”。怎么办？<br />
A:未知的文件类型是不允许上传的。可以通过编辑 wp-includes/functions.php 中的wp_check_filetype 和 wp_ext2type 两个函数来增加新的文件类型与图标。</p>
<p>Q:怎么更改管理首页里的红色 Banner ？<br />
A:在“用户”-“您的档案”页面下的“管理界面配色方案”中选择“经典”。</p>
<p>Q:如何编辑分类描述？<br />
A:在“管理”-“分类”页面下，点击要编辑的分类名称。</p>
<p>Q:如何编辑评论？<br />
A:在“评论”页面下，点击评论者的名称。</p>
<p>Q:在媒体库中得到这样的错误：“Fatal error: Call to undefined function: wp_get_attachment_image() in /home/public_html/wp-includes/post-template.php on line 384”<br />
A:这通常是因为没有完整地上传某个 PHP 文件，请确认 wp-includes/media.php 和 wp-settings.php 两个文件被正确地上传了。</p>
<p>Q:当我上传媒体文件的时候，得到这样的消息：“您确定要这样做吗？”。链接“请重试”也不起作用。<br />
A:你可能需要一个一个地禁用插件以找出问题所在。某些较老的插件可能会导致这样的现象。已知的有 Ryan Duff’s WP-Contact。</p>
<p>Q:启用/禁用 Gzip 的选项是否已经被 WordPress 2.5 去掉了？<br />
A:是的，这个选项已经取消了。现在 WordPress 把这个决定权交给服务器本身。</p>
<p>Q:日志时间戳编辑框在哪里？如何编辑日志的时间戳？<br />
A:撰写或编辑日志时，在发布状态区域，点击“立即发布”按钮右侧的“编辑”。（译注：目前版本的 WordPress 本身有 Bug，会导致这里两处字串无法中文化）</p>
<p>作者：<a href="http://fairyfish.net/">雪山飞猪</a><br />
原文链接：<a href="http://fairyfish.net/2008/04/02/faq-on-wordpress-25/">WordPress 2.5 常问问题解答</a><br />
<a href="http://fairyfish.net/">我爱水煮鱼</a>版权所有，转载时必须以链接形式注明作者和原始出处及本声明。</p>
]]></content:encoded>
			<wfw:commentRss>http://ghsky.com/2008/04/wordpress-25-faq.html/feed</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
		<item>
		<title>WordPress更新到了2.5</title>
		<link>http://ghsky.com/2008/03/upgrade-to-wordpress-25.html</link>
		<comments>http://ghsky.com/2008/03/upgrade-to-wordpress-25.html#comments</comments>
		<pubDate>Sun, 30 Mar 2008 14:13:49 +0000</pubDate>
		<dc:creator>ghSky</dc:creator>
				<category><![CDATA[Site]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://ghsky.com/?p=134</guid>
		<description><![CDATA[今天WordPress更新到了2.5，自己也索性升级了，后台更新比较大，暂时就写到这里…… 哈，其实这篇日志的另一个主要原因是填补3月份日志空白…… 再转一个2.5说明好了……WordPress 2.5 新特性 用户端新特性 更亲爽，快速，有条理的后台面板。 后台面板的 Widgets --- 后台面板主页现在是一系列的 Widgets 组成，也可以自定义 Widgets。 带进度条的多文件上传 --- 现在能够一次性上传多个文件，并且能够显示文件上传进度。 EXIF 信息提取 --- WordPress 能够提取图片的 EXIF 数据（比如包含照相机型号、光圈大小、快门速度、ISO等等）存到自定义域（custom fields）中。 搜索日志和页面 --- 现在搜索结果也包括了页面（pages）。 Tag 管理 --- 现在 WordPress 集成了 tag 管理。但是个人觉得还是比较弱，有待加强。 密码强度 --- 现在 WordPress 会提示你的密码强度。 并发编辑保护措施 --- WordPress 通过对日志的锁定来实现并发编辑的问题。 自动插件升级 --- WordPress 能够让你通过后台下载和升级在官方插件目录中的插件。 更加友好的日志编辑工具 --- 现在的使用 3.0 的 TinyMCE [...]]]></description>
			<content:encoded><![CDATA[<p>今天WordPress更新到了2.5，自己也索性升级了，后台更新比较大，暂时就写到这里……<br />
哈，其实这篇日志的另一个主要原因是填补3月份日志空白……</p>
<p>再转一个2.5说明好了……<a href="http://fairyfish.net/2008/03/31/wordpress-25-feature/">WordPress 2.5 新特性</a></p>
<p><em><strong>用户端新特性<br />
更亲爽，快速，有条理的后台面板。</strong> </em><br />
<strong>后台面板的 Widgets</strong> --- 后台面板主页现在是一系列的 Widgets 组成，也可以自定义 Widgets。<br />
<strong>带进度条的多文件上传</strong> --- 现在能够一次性上传多个文件，并且能够显示文件上传进度。<br />
<strong>EXIF 信息提取</strong> --- WordPress 能够提取图片的 EXIF 数据（比如包含照相机型号、光圈大小、快门速度、ISO等等）存到自定义域（custom fields）中。<br />
<strong>搜索日志和页面</strong> --- 现在搜索结果也包括了页面（pages）。<br />
<strong>Tag 管理</strong> --- 现在 WordPress 集成了 tag 管理。但是个人觉得还是比较弱，有待加强。<br />
<strong>密码强度</strong> --- 现在 WordPress 会提示你的密码强度。<br />
<strong>并发编辑保护措施</strong> --- WordPress 通过对日志的锁定来实现并发编辑的问题。<br />
<strong>自动插件升级</strong> --- WordPress 能够让你通过后台下载和升级在官方插件目录中的插件。<br />
<strong>更加友好的日志编辑工具</strong> --- 现在的使用 3.0 的 TinyMCE 有根好的兼容性，并且更重要的是不会搞乱代码。个人比较喜欢这项功能。<br />
<strong>内建图库</strong> --- 通过一些短代码（shortcode）来实现嵌入图库。关于 gallery shorcode 的使用，看这里。通过该功能可以我相信 WordPress 可以取代一些相册程序，或者不再需要相册插件来实现功能。 </p>
<p><em><strong>开发者端的新特性</strong></em><br />
<strong>加强的密码</strong> --- WordPress 现在采用 phpass 库来加强密码，更加安全。如果你使用像mod_auth_mysql 这样的程序，可以通过插件来实现兼容。<br />
<strong>安全的 cookies</strong> --- cookies 现在是基于这个 PDF 文档中的协议加密的，需要设置一个密钥。<br />
<strong>简单的分类系统和 URL 创建 </strong>--- 可以通过 register_taxonomy() 来注册一个分类系统并且通过它来创建 URL。对这个，我还不太懂。需要进一步了解。<br />
<strong>注释文档 </strong>--- 很多源代码中关于函数和其参数的注释文档。<br />
<strong>数据库优化</strong> --- 数据库没有做布局上做任何更改，所以大部分插件依然能够工作。更具对 WordPress.com 上 270万个博客上发现的瓶颈，对数据库进行了优化。确实 WordPress 2.5 快了很多。<br />
<strong>$wpdb->prepare()</strong> --- WordPress 里的所有 SQL 都是先准备的。<br />
<strong>媒体按钮</strong> --- 媒体按钮都是可扩展的。<br />
<strong>短代码 API</strong> --- 详细查看短代码 API 文档。 <span id="more-134"></span></p>
<p>更详细地介绍请看原文：<a href="http://wordpress.org/development/2008/03/wordpress-25-brecker/">WordPress 2.5。</a>中文翻译看这里：<a href="http://www.aaronmix.com.cn/blog/wordpress-2-5-release-trans.aaron">Aaron</a> 的，<a href="http://papu.cn/2008/03/30/wordpress-25-released.html">PaPu</a> 的。</p>
<p>作者：<a href="http://fairyfish.net/">雪山飞猪</a><br />
原文链接：<a href="http://fairyfish.net/2008/03/31/wordpress-25-feature/">WordPress 2.5 常问问题解答</a><br />
<a href="http://fairyfish.net/">我爱水煮鱼</a>版权所有，转载时必须以链接形式注明作者和原始出处及本声明。</p>
]]></content:encoded>
			<wfw:commentRss>http://ghsky.com/2008/03/upgrade-to-wordpress-25.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordPress v2.3.1 Final发布</title>
		<link>http://ghsky.com/2007/10/wordpress-231-final-released.html</link>
		<comments>http://ghsky.com/2007/10/wordpress-231-final-released.html#comments</comments>
		<pubDate>Sat, 27 Oct 2007 06:12:39 +0000</pubDate>
		<dc:creator>ghSky</dc:creator>
				<category><![CDATA[Site]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://hi.ghsky.cn/2007/10/wordpress-231-final-released.html</guid>
		<description><![CDATA[刚刚上网，就在CB上发现WordPress v2.3.1 Final发布的消息，马上登录，下载升级！ 官方地址：http://wordpress.org/download/ （英文版） 升级的时候，发生了一件比较糗的事……用迅雷下载到了文件，名为latest.zip，解压缩，打包tar.gz，上传升级……结果，TAG的函数都提示错误！我晕呐，不至于吧，2.3才官方提供TAG功能，2.3.1就去了？？！！！不信邪，马上官网上看更新日志，没发现2.3.1的信息…… 后来，自己到BLOG上面再看了一下……怎么升级到2.2.2了？！汗死……原来都是迅雷捣的鬼……重新用迅雷下载，选择只从原始地址获取文件……漫长地下载后终于拿到文件，升级，一切顺利！]]></description>
			<content:encoded><![CDATA[<p>刚刚上网，就在CB上发现WordPress v2.3.1 Final发布的消息，马上登录，下载升级！<br />
官方地址：<a href="http://wordpress.org/download/" target="_blank">http://wordpress.org/download/</a> （英文版）</p>
<p>升级的时候，发生了一件比较糗的事……用迅雷下载到了文件，名为latest.zip，解压缩，打包tar.gz，上传升级……结果，TAG的函数都提示错误！我晕呐，不至于吧，2.3才官方提供TAG功能，2.3.1就去了？？！！！不信邪，马上官网上看更新日志，没发现2.3.1的信息……</p>
<p>后来，自己到BLOG上面再看了一下……怎么升级到2.2.2了？！汗死……原来都是迅雷捣的鬼……重新用迅雷下载，选择只从原始地址获取文件……漫长地下载后终于拿到文件，升级，一切顺利！</p>
]]></content:encoded>
			<wfw:commentRss>http://ghsky.com/2007/10/wordpress-231-final-released.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>让WordPress模板支持Sidebar Widgets</title>
		<link>http://ghsky.com/2007/10/sidebar-widgets-support.html</link>
		<comments>http://ghsky.com/2007/10/sidebar-widgets-support.html#comments</comments>
		<pubDate>Sun, 14 Oct 2007 11:55:51 +0000</pubDate>
		<dc:creator>ghSky</dc:creator>
				<category><![CDATA[Site]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://hi.ghsky.cn/2007/10/sidebar-widgets-support.html</guid>
		<description><![CDATA[早就想搞了，一直没时间，刚好今天上网搜了篇文章看看 原文来自：http://www.digglife.cn/articles/sidebar-widgets-support.html 一.有关侧边栏的两个重要文件 侧边栏所涉及到的主要集中在这两个文件上,我的理解是,sidebar.php负责侧边栏的显示内容,fuctions.php在这里则负责侧边栏如何显示.一个不支持侧边栏插件的模板没有functions.php这个文件,sidebar.php中也没有调用语句. 二.Functions.php文件修改. 为了让模板支持侧边栏插件,首先需要新建一个functions.php文件,然后添加一些代码.我参考了一些文章和许多模板代码之后,发现三栏和两栏的fuctions.php代码在细节上有些区别,为了更加清除地说明,下面分两种情况讨论(我靠,怎么像做数学啊): 1.两栏模板(侧栏只有一列) < ?php if ( function_exists('register_sidebar') ) register_sidebar(array( 'before_widget' => ' ', // #1 'after_widget' => ' ', // #2 'before_title' => ' ', // #3 'after_title' => ' ', // #4 )); ?> 其中#1和#2是定义Widget内容前后标识符的语句,#3和#4是定义Widget标题的标识符的语句.根据模板的具体情况而定,你可以参考sidebar.php中已经定义过的侧边栏来决定应该采用哪种标识符.比如我修改的那个模板的sidebar.php中: //右栏模块 //Widgets前标识 //Widgets标题 // widgets后标识 ...... 所以我应该在#1和#2语句中的' '内填入分别填入 和 ,#3和#4语句中的' '内填入 和 . 2.三栏模板(侧栏有两列) [...]]]></description>
			<content:encoded><![CDATA[<p>早就想搞了，一直没时间，刚好今天上网搜了篇文章看看<br />
原文来自：<a href="http://www.digglife.cn/articles/sidebar-widgets-support.html">http://www.digglife.cn/articles/sidebar-widgets-support.html</a></p>
<p>一.有关侧边栏的两个重要文件<br />
侧边栏所涉及到的主要集中在这两个文件上,我的理解是,sidebar.php负责侧边栏的显示内容,fuctions.php在这里则负责侧边栏如何显示.一个不支持侧边栏插件的模板没有functions.php这个文件,sidebar.php中也没有调用语句.</p>
<p>二.Functions.php文件修改.<br />
为了让模板支持侧边栏插件,首先需要新建一个functions.php文件,然后添加一些代码.我参考了一些文章和许多模板代码之后,发现三栏和两栏的fuctions.php代码在细节上有些区别,为了更加清除地说明,下面分两种情况讨论(我靠,怎么像做数学啊):</p>
<p>1.两栏模板(侧栏只有一列)</p>
<pre class="brush:php">
< ?php
if ( function_exists('register_sidebar') )
    register_sidebar(array(
        'before_widget' => '
<li>',    // #1
        'after_widget' => '</li>

',     // #2
        'before_title' => '
<h2>',      // #3
        'after_title' => '</h2>

',       // #4
    ));
?>
</pre>
<p>其中#1和#2是定义Widget内容前后标识符的语句,#3和#4是定义Widget标题的标识符的语句.根据模板的具体情况而定,你可以参考sidebar.php中已经定义过的侧边栏来决定应该采用哪种标识符.比如我修改的那个模板的sidebar.php中:</p>
<pre class="brush:php">
<div id="sidebar_r">  //右栏模块   
<ul>
<li>    //Widgets前标识
<h2><?php _e('Archives'); ?></h2>

    //Widgets标题   
<ul>
    <?php wp_get_archives('type=monthly'); ?>
    </ul>
</li>

      //  widgets后标识
......
</ul>
</div>

所以我应该在#1和#2语句中的' '内填入分别填入
<li>和</li>

,#3和#4语句中的' '内填入
<h2>和</h2>

.
</pre>
<p><span id="more-106"></span></p>
<p>2.三栏模板(侧栏有两列)</p>
<p>通常情况下,三栏模板的functions.php可以按照如下代码定义:</p>
<pre class="brush:php">
<?php
if ( function_exists('register_sidebar') )
    register_sidebar(array(
        'name' => 'Left Sidebar',         //#5
        'before_widget' => '
<li>',
        'after_widget' => '</li>

',
        'before_title' => '
<h2>',
        'after_title' => '</h2>

',
    ));    

if ( function_exists('register_sidebar') )
    register_sidebar(array(
        'name' => 'Right Sidebar',      //#6
        'before_widget' => '
<li>',
        'after_widget' => '</li>

',
        'before_title' => '
<h2>',
        'after_title' => '</h2>

',
    ));
?>
</pre>
<p>不要看代码很长,其实还是很简单.因为侧栏有两列,所以代码自然比单列的两栏模板多出一段,而且几乎一样.区别只在#5和#6两处的name,所谓name就是给widget指定各自的名称,以便在sidebar.php中分别调用.所以你只需要给这两个widget取两个自己认得的名字就好了.</p>
<p>三.Sidebar.php文件的修改.<br />
functions.php改好之后,sidebar.php就非常之简单了.我们只需在合适的地方加上下面这段代码:</p>
<pre class="brush:php">
<?php if ( function_exists('dynamic_sidebar') &#038;& dynamic_sidebar('#7') ) : else : ?>
<?php endif; ?>
</pre>
<p>其中#7为widgets的名称,对应name属性的值(#5和#6).</p>
<p>以我的右栏为例:</p>
<pre class="brush:php">
<div id="sidebar_r">  //右栏模块   
<ul>
#8   
<li>    //Widgets前标识
<h2><?php _e('Archives'); ?></h2>

    //Widgets标题   
<ul>
    <?php wp_get_archives('type=monthly'); ?>
    </ul>
</li>

      //  widgets后标识
......(更多模板默认的widgets)
#9
</ul>
<ul>
</ul>
</div>
</pre>
<p>如果你想保留默认的sidebar定义,在#8处加上上述代码的第一行,在#9处添加第二行即可.如果你不再需要默认的sidebar定义,可以将他们全部删除,直接加上上面的代码(推荐).</p>
<p>两栏模板只需添加一次,三栏模板需要给左右两列各添加一次,当然要对应functions.php中各自的name.</p>
<p>四.总结<br />
1.模板不同,代码会有差别,请根据模板的情况决定代码.</p>
<p>2.上面这些我试验过多次,证明是可行的而且也是简单的,如果有什么错误的地方,请在留言中指出,谢谢. </p>
<p>3.参考:<a href="http://www.crystown.cn/">Crystown</a>的<a href="http://www.crystown.cn/index.php/p/36/" target="_blank">WordPress Widget研究(一)</a></p>
]]></content:encoded>
			<wfw:commentRss>http://ghsky.com/2007/10/sidebar-widgets-support.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>WordPress 模板条件判断函数</title>
		<link>http://ghsky.com/2007/10/template-function-of-wordpress.html</link>
		<comments>http://ghsky.com/2007/10/template-function-of-wordpress.html#comments</comments>
		<pubDate>Sat, 06 Oct 2007 18:44:34 +0000</pubDate>
		<dc:creator>ghSky</dc:creator>
				<category><![CDATA[Site]]></category>
		<category><![CDATA[Other]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://hi.ghsky.cn/2007/10/template-function-of-wordpress.html</guid>
		<description><![CDATA[这个文章找了好久了，一直都想要，可是最终都没有发现……今晚（不对，是凌晨好几点了……）总算功夫不负有心人，急切想找一个判断函数，搜索引擎搜了好多，最终还是在一个关键词下找到了它！！！ 原文来自：就是点这儿啦！ //这里写你想显示的内容，包括函数 下面是直接来自wordpress.org，我可以做一个简单的翻译 is_single() When any single Post page is being displayed. 判断是否是具体文章的页面 is_single(’17′) When Post 17 is being displayed as a single Post. 判断是否是具体文章（id=17）的页面 is_single(’Beef Stew’) When the Post with Title “Beef Stew” is being displayed as a single Post. 判断是否是具体文章（标题判断）的页面 is_single(’beef-stew’) When the Post with Post Slug “beef-stew” is being displayed as [...]]]></description>
			<content:encoded><![CDATA[<p>这个文章找了好久了，一直都想要，可是最终都没有发现……今晚（不对，是凌晨好几点了……）总算功夫不负有心人，急切想找一个判断函数，搜索引擎搜了好多，最终还是在一个关键词下找到了它！！！<br />
原文来自：<a href="http://www.storyday.com/html/y2007/899_wordpress-theme-condition-fun.html">就是点这儿啦！</a></p>
<p><?php if(is_single()):?></p>
<p>//这里写你想显示的内容，包括函数<br />
<?php endif;?><br />
下面是直接来自wordpress.org，我可以做一个简单的翻译</p>
<p>is_single()<br />
When any single Post page is being displayed. 判断是否是具体文章的页面<br />
is_single(’17′)<br />
When Post 17 is being displayed as a single Post. 判断是否是具体文章（id=17）的页面<br />
is_single(’Beef Stew’)<br />
When the Post with Title “Beef Stew” is being displayed as a single Post. 判断是否是具体文章（标题判断）的页面<br />
is_single(’beef-stew’)<br />
When the Post with Post Slug “beef-stew” is being displayed as a single Post. 判断是否是具体文章（slug判断）的页面<span id="more-102"></span></p>
<p>comments_open()<br />
When comments are allowed for the current Post being processed in the WordPress Loop. 是否留言开启<br />
pings_open()<br />
When pings are allowed for the current Post being processed in the WordPress Loop. 是否开启ping</p>
<p>is_page()<br />
When any Page is being displayed. 是否是页面<br />
is_page(’42′)<br />
When Page 42 is being displayed. 同single，id判断，即是否是id为42的页面<br />
is_page(’About Me’)<br />
When the Page with Title “About Me” is being displayed. title判断<br />
is_page(’about-me’)<br />
When the Page with Page Slug “about-me” is being displayed. slug判断</p>
<p>is_category()<br />
When any Category archive page is being displayed. 是否是分类<br />
is_category(’6′)<br />
When the archive page for Category 6 is being displayed. 同single，id判断，即是否是id为6的分类<br />
is_category(’Cheeses’)<br />
When the archive page for the Category with Name “Cheeses” is being displayed. title判断<br />
is_category(’cheeses’)<br />
When the archive page for the Category with Category Slug “cheeses” is being displayed. slug判断<br />
in_category(’5′)<br />
Returns true if the current post is in the specified category id. read more (http://codex.wordpress.org/Template_Tags/in_category)  判断当前的文章是否属于分类5</p>
<p>is_author()<br />
When any Author page is being displayed. 将所有的作者的页面显示出来<br />
is_author(’1337′)<br />
When the archive page for Author number 1337 is being displayed. 显示author number为1337的页面<br />
is_author(’Elite Hacker’)<br />
When the archive page for the Author with Nickname “Elite Hacker” is being displayed. 通过昵称来显示当前作者的页面<br />
is_author(’elite-hacker’)<br />
When the archive page for the Author with Nicename “elite-hacker” is being displayed.</p>
<p>下面是通过不同的判断实现以年、月、日、时间等方式来显示归档<br />
is_date()<br />
When any date-based archive page is being displayed (i.e. a monthly, yearly, daily or time-based archive).<br />
is_year()<br />
When a yearly archive is being displayed.<br />
is_month()<br />
When a monthly archive is being displayed.<br />
is_day()<br />
When a daily archive is being displayed.<br />
is_time()<br />
When an hourly, “minutely”, or “secondly” archive is being displayed.</p>
<p>判断当前是否是归档页面<br />
is_archive()<br />
When any type of Archive page is being displayed. Category, Author and Date based pages are all types of Archives.</p>
<p>判断是否是搜索<br />
is_search()<br />
When a search result page archive is being displayed.</p>
<p>判断页面是否404<br />
is_404()<br />
When a page displays after an “HTTP 404: Not Found” error occurs.</p>
<p>判断是否翻页，比如你当前的blog是http://domain.com 显示http://domain.com?paged=2的时候，这个判断将返回真，通过这个函数可以配合is_home来控制某些只能在首页显示的界面，<br />
例如：if(is_home() &#038;& !is_paged() )<br />
is_paged()<br />
When the page being displayed is “paged”. This refers to an archive or the main page being split up over several pages. This does not refer to a Post or Page whose content has been divided into pages using the <!–nextpage–> QuickTag.</p>
<p>is_attachment()<br />
When an attachment document to a post or Page is being displayed. An attachment is an image or other file uploaded through the post editor’s upload utility. Attachments can be displayed on their own ‘page’ or template. For more information, see Using Image and File Attachments.</p>
<p>is_feed()<br />
When the site requested is a Syndication. This tag is not typically used by users; it is used internally by WordPress and is available for Plugin Developers.</p>
<p>is_trackback()<br />
When the site requested is WordPress’ hook into its Trackback engine. This tag is not typically used by users; it is used internally by WordPress and is available for Plugin Developers.</p>
]]></content:encoded>
			<wfw:commentRss>http://ghsky.com/2007/10/template-function-of-wordpress.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>让WLW支持WP2.3 TAG</title>
		<link>http://ghsky.com/2007/10/enable-support-windows-live-writer-wordpress23-tag.html</link>
		<comments>http://ghsky.com/2007/10/enable-support-windows-live-writer-wordpress23-tag.html#comments</comments>
		<pubDate>Wed, 03 Oct 2007 10:55:42 +0000</pubDate>
		<dc:creator>ghSky</dc:creator>
				<category><![CDATA[Site]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Windows Live]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://hi.ghsky.cn/2007/10/enable-support-windows-live-writer-wordpress23-tag.html</guid>
		<description><![CDATA[逛逛WP中文论坛，还是挺有用的，发现了一些自己需要的东东！WINDOWS LIVE WRITER，简称WLW，可以很好地支持WORDPRESS 2.3的TAG功能，不过需要手动加个文件！ 文章来自：这里哦 使用方法：上传wlwmanifest到wordpress根目录 XML文件，CODE如下： Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes True No View your blog Administer your blog 效果如图：]]></description>
			<content:encoded><![CDATA[<p>逛逛<a href="http://wordpress.org.cn/forums/">WP中文论坛</a>，还是挺有用的，发现了一些自己需要的东东！WINDOWS LIVE WRITER，简称WLW，可以很好地支持WORDPRESS 2.3的TAG功能，不过需要手动加个文件！</p>
<p>文章来自：<a href="http://trac.wordpress.org/ticket/5023">这里哦</a></p>
<p>使用方法：上传<a href="http://www.buayacorp.com/wp-content/uploads/2007/09/wlwmanifest.xml">wlwmanifest</a>到wordpress根目录<br />
XML文件，CODE如下：</p>
<pre class="brush:xml">
<manifest xmlns="http://schemas.microsoft.com/wlw/manifest/weblog">
<options>
<supportskeywords>Yes</supportskeywords>
<supportsfileupload>Yes</supportsfileupload>
<supportsextendedentries>Yes</supportsextendedentries>
<supportscustomdate>Yes</supportscustomdate>
<supportscategories>Yes</supportscategories>
<supportscategoriesinline>Yes</supportscategoriesinline>
<supportsmultiplecategories>Yes</supportsmultiplecategories>
<supportshierarchicalcategories>Yes</supportshierarchicalcategories>
<supportsnewcategories>Yes</supportsnewcategories>
<supportsnewcategoriesinline>Yes</supportsnewcategoriesinline>
<supportscommentpolicy>Yes</supportscommentpolicy>
<supportspingpolicy>Yes</supportspingpolicy>
<supportsauthor>Yes</supportsauthor>
<supportsslug>Yes</supportsslug>
<supportspassword>Yes</supportspassword>
<supportsexcerpt>Yes</supportsexcerpt>
<supportstrackbacks>Yes</supportstrackbacks>
<supportspages>Yes</supportspages>
<supportspageparent>Yes</supportspageparent>
<supportspageorder>Yes</supportspageorder>
<requiresxhtml>True</requiresxhtml>
<supportsautoupdate>No</supportsautoupdate>
</options>
<weblog>
<homepagelinktext>View your blog</homepagelinktext>
<adminlinktext>Administer your blog</adminlinktext>
<adminurl><!--[CDATA[
{blog-homepage-url}wp-admin
]]--></adminurl></weblog></manifest>
<posteditingurl><!--[CDATA[
{blog-homepage-url}wp-admin/edit.php
]]--></posteditingurl>
</pre>
<p>效果如图：<br />
<img src='http://hi.ghsky.cn/wp-content/uploads/2007/10/wlw-tag.png' alt='' /></p>
]]></content:encoded>
			<wfw:commentRss>http://ghsky.com/2007/10/enable-support-windows-live-writer-wordpress23-tag.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>从UTW完美过渡到wordpress 2.3 Tag</title>
		<link>http://ghsky.com/2007/10/from-utw-to-wordpress-23.html</link>
		<comments>http://ghsky.com/2007/10/from-utw-to-wordpress-23.html#comments</comments>
		<pubDate>Mon, 01 Oct 2007 14:07:12 +0000</pubDate>
		<dc:creator>ghSky</dc:creator>
				<category><![CDATA[Site]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://hi.ghsky.cn/2007/10/from-utw-to-wordpress-23.html</guid>
		<description><![CDATA[从WordPress 2.3发布以来， Tagging 功能为广大博主带来了很大的方便，但同时，很多主题也出现了不支持这一特性的情况。在网上找到了这两篇文章，其一“修改当前主题使之支持 WordPress 2.3 的 Tags 功能”，其二“让UTW用wordpress 2.3来实现tag功能”，希望对刚刚升级到WordPress2.3的同学有些帮助。WordPress 2.3已经于9月24日发布。许多 Blogger 将会很快升级到这个版本，因为新版程序提供了一个非常热门的 SEO 工具– Tagging。WordPress 2.3 使用内建的 Tagging 和 TagCloud 功能，已经没有了设置很困难的插件。 WordPress 2.3 提供了两个易于使用的 API 调用，可以插入到任何主题中。在以后的主题中将会被普遍的增加。 很遗憾，这意味着您如果想使用这个功能，就需要更新您的主题。如果您是在 WordPress 主题站下载的主题，您无法知道主题的作者是否或愿意更新自己的主题。毕竟，还有很多主题连 Widget 支持都没有提供呢。 很幸运，您可以自己更新主题 并且这并不难。修改之前，要做好备份。只需要复制“WordPress\wp-contents\theme\themename”目录。读到这里，我将假设您还不了解您使用的主题的内部流程。我将简单写一下函数，然后我将讲解一下如何把 Tags 加入到您的主题中。 循环引用 PHP 代码来在 Blog 上显示信息。这里提供了一个无样式表的 WordPress 主题框架。如果您想看看如何让 WordPress 工作的代码，可以看一下。如果您打开“index.php ”文件，您会发现 WordPress 使用了一串 PHP 命令来读取和显示相关的信息和内容，比如：标题、作者、日期或评论的数量。主题的作者以这个循环为起始然后在其基础上设计出布局和样式信息，这样，纯文本信息就显示成了多样的，丰富格式的 Blog 页面，拥有了色彩、图片和富有创意的布局。 循环的代码在这里： 　　]]></description>
			<content:encoded><![CDATA[<p>从WordPress 2.3发布以来， Tagging 功能为广大博主带来了很大的方便，但同时，很多主题也出现了不支持这一特性的情况。在网上找到了这两篇文章，其一“<a target="_blank" href="http://webeta.cn/index.php?action=show&amp;id=1823&amp;page=1">修改当前主题使之支持 WordPress 2.3 的 Tags 功能</a>”，其二“<a target="_blank" href="http://www.zhaomingliang.com/2007/09/905/utw-wordpress-23-tag/">让UTW用wordpress 2.3来实现tag功能</a>”，希望对刚刚升级到WordPress2.3的同学有些帮助。WordPress 2.3已经于9月24日发布。许多 Blogger 将会很快升级到这个版本，因为新版程序提供了一个非常热门的 SEO 工具– Tagging。WordPress 2.3 使用内建的 Tagging 和 TagCloud 功能，已经没有了设置很困难的插件。 WordPress 2.3 提供了两个易于使用的 API 调用，可以插入到任何主题中。在以后的主题中将会被普遍的增加。<br />
很遗憾，这意味着您如果想使用这个功能，就需要更新您的主题。如果您是在 WordPress 主题站下载的主题，您无法知道主题的作者是否或愿意更新自己的主题。毕竟，还有很多主题连 Widget 支持都没有提供呢。</p>
<p><strong>很幸运，您可以自己更新主题</strong><br />
并且这并不难。修改之前，要做好备份。只需要复制“WordPress\wp-contents\theme\themename”目录。读到这里，我将假设您还不了解您使用的主题的内部流程。我将简单写一下函数，然后我将讲解一下如何把 Tags 加入到您的主题中。</p>
<p>循环引用 PHP 代码来在 Blog 上显示信息。<a target="_blank" href="http://richgilchrest.com/images/WP-Theme-Skeleton.zip" title="Completely un-styled WordPress theme skeleton">这里提供了一个无样式表的 WordPress 主题框架</a>。如果您想看看如何让 WordPress 工作的代码，可以看一下。如果您打开“index.php ”文件，您会发现 WordPress 使用了一串 PHP 命令来读取和显示相关的信息和内容，比如：标题、作者、日期或评论的数量。主题的作者以这个循环为起始然后在其基础上设计出布局和样式信息，这样，纯文本信息就显示成了多样的，丰富格式的 Blog 页面，拥有了色彩、图片和富有创意的布局。<span id="more-98"></span><br />
循环的代码在这里：</p>
<pre class="brush:php">
<?php while( have_posts() ) : the_post(); ?>
　　
<div class="post" id="post-<?php the_ID(); ?>">
　　　　
<h2><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title(); ?>">
　　　　<?php the_title(); ?></a></h2>

　　　　<?php the_category( ', ' ); ?> <?php the_author(); ?> <?php the_time('F jS, Y'); ?>
　　　　<?php edit_post_link('Edit',' ',''); ?> <br/> <?php comments_popup_link('No Comments', '1 Comment', '% Comments'); ?> <?php the_content(); ?>
　　</div>

<?php endwhile; ?>
</pre>
<p><strong>增加 Tags 并没有在循环中增加太多命令</strong><br />
查看您的“ \wordpress\wp-content\themes\themename ”目录您会找到如下两个文件：</p>
<blockquote><p>
index.php<br />
single.php
</p></blockquote>
<p>“ index.php ”文件是 WordPress 页面的主文件。当某人访问您的 Blog 的主页时将要载入的。这个文件将调用页眉、页脚以及侧栏。它也包含此循环。这是我们第一个要加入 Tags 调用的页面。在文章中插入 Tag 显示只需要在函数中添加一条命令：</p>
<pre class="brush:php">
<?php the_tags('前缀', '间隔符', '后缀'); ?>
</pre>
<p>“前缀”，“间隔符”和“后缀”请替换成您希望在 Tag 行中显示的字符。如果您希望在文章内容后面显示 Tags ，并且在“上一页”之前，只要简单的复制这段代码并粘贴在这段代码的后面：</p>
<pre class="brush:php">
<?php the_content(); ?>
</pre>
<p>您可以把代码放到您想要的位置。在下面的截图中，我把 Tag 加在了评论数显示项的下面。 WordPress 的 API 拥有非常明了的名称，所以，你可以知道每个函数片段的真正用途。</p>
<p>添加 Tagging 之前：<br />
<img src="http://dreamcolor.net/wp-content/uploads/2007/09/taglesson1.png" /></p>
<p>添加 Tagging 之后：<br />
<img src="http://dreamcolor.net/wp-content/uploads/2007/09/taglesson2.png" /></p>
<p>“ single.php ”通常和“ index.php ”需要差不多的修改，除了它显示的是特定的文章，并且不进行循环。除非您的主题显示独立文章时显示在和主页面有非常大差别的页面中，您需要把 Tags 精确的放在相同的地方。您需要把 Tags 代码放在和“ index.php ”相同的位置。</p>
<p><strong>TagCloud 云</strong><br />
Tag 云也已经被很好的支持了。这有一个“ Flickr-style ”来列举多个 Tags ，并且某个标签受欢迎将使用大字体显示。 Tag 云显示 Blog 中所有使用中的 Tags ，比单个文章显示的 Tags 要多，所以放在侧栏或页脚比较适合。为了示范，这有个 Tag 云的在单篇文章页的演示：<br />
<img src="http://dreamcolor.net/wp-content/uploads/2007/09/taglesson3.png" /></p>
<p>如果您想创建一个侧栏单元并包含Tag云，您需要先安装<a target="_blank" href="http://ottodestruct.com/blog/2006/04/09/fun-with-widgets/">Executable PHP Widget</a>插件或类似的程序，这将允许您在侧栏单元中运行 PHP 代码。当插件激活后，把相应侧栏单元开启并添加 PHP 代码。命名一个标题，添加如下代码到主窗口里。</p>
<pre class="brush:php">
<?php wp_tag_cloud('smallest=8&#038;largest=36&#038;'); ?>
</pre>
<p>这将会显示所有 Blog 上正在使用的 Tags ，按照名称排列，文章最少的显示为 8pt 的大小，文章最多的显示为 36pt 的大小。<a href="http://codex.wordpress.org/Template_Tags/wp_tag_cloud">更多关于设置显示效果的细节可以在这里找到</a>。</p>
<p>如果您想把 Tag 云放在页脚中，您需要在文本修改器中修改“ wordpress\wp-content\theme\themename\footer.php ”就像在“ index.php ”这个文件中一样，简单的把代码放在合适的位置上。页脚是比较多边的，所有我无法明确的告诉您应该放在哪里。同上， WordPress 的 API 是非常容易理解的，所以，想象一下您喜欢什么样子，那就把它放在哪里了。您也可以回头再次修改它达到您的目的。</p>
<p>不是很难，不是吗？我希望我在您想使用 WordPress 2.3 的这个新功能的时候帮助到了您。 Tagging 是几乎所有 SEO 的专业推荐。把 Tagging 做为了标准功能的 WordPress 2.3 将给各位带来很大的好处，不再是那些安装插件的人的专利。</p>
<p>========================和谐的分割线========================</p>
<p>下面的是继对上文的扩充，主要是对一些问题的解答，基本上属于上一篇文章的FAQ。</p>
<p><strong>WordPress 2.3 有没有导入 Ultimate Tag Warrior 、 Simple Tagging 、 Jerome’s Keywords 数据的功能？</strong><br />
从 WP 2.3 Beta 2 开始，<a target="_blank" href="http://wordpress.org/support/topic/131739">开始支持自动导入这些插件的数据</a>。 Beta 3 是我安装的第一个版本，我记得导入 UTW 的时候并没有什么选项和额外的步骤。在程序的后台有相应的导入功能，并且没有复杂的选项。功能还是相当完善的。</p>
<p><strong>您如何定义 Tag 的显示效果？</strong><br />
这里列举了三种定义显示效果的代码：<br />
<img src="http://dreamcolor.net/wp-content/uploads/2007/09/tagdisplay1.png" /></p>
<pre class="brush:php">
<?php the_tags('Article Tags>> ', ' | ' , ''); ?>
</pre>
<p><img src="http://dreamcolor.net/wp-content/uploads/2007/09/tagdisplay2.png" /></p>
<pre class="brush:php">
<?php the_tags('Tags<LI>', '<BR />' , '</LI>'); ?>
</pre>
<p>配合修改“Style.css”，显示成列表方式比较漂亮。</p>
<p><img src="http://dreamcolor.net/wp-content/uploads/2007/09/tagdisplay3.png" /></p>
<pre class="brush:php">
<?php the_tags('Tags<LI>', '<LI>' , '</LI>'); ?>
</pre>
<p><strong>升级后的主题还能否工作在 WP 2.3 以前的版本上吗？</strong><br />
给主题设计者的重要提示！ <a target="_blank" href="http://www.bloggingpro.com/archives/2007/09/17/adding-wordpress-23-tags-to-a-theme/#comments">Blogging Pro</a> 问到了这个问题，并且 <a target="_blank" href="http://www.nathanrice.net/">Nathan Rice</a> 很快给予了答复。 PHP 允许在使用一个功能之前先检查它是否存在。如果您使用限制语句来限制只有 WP 2.3+ 的用户才能调用 Tag 功能。如果你没有使用限制语句而输入了 Tag 代码，那么使用 WP 2.2 的用户将会出现错误信息。主题设计者也许想像这样限制他们的 Tag 代码：</p>
<pre class="brush:php">
<?php if ( function_exists('wp_tag_cloud') ) : ?>
<?php the_tags('Article Tags>> ', ' | ' , ''); ?>
<?php endif; ?>
</pre>
<p>可以看出，新版程序的 Tag 功能在主题中调用还是挺简单的，各位如果需要在自己的主题中加入 Tag 支持，应该很容易实现的。</p>
<p>========================和谐的分割线========================</p>
<p><strong>从UTW完美过渡到WP2.3 TAG</strong><br />
安装的时候UTW和wp自带的tag功能有冲突,看了一下,其实解决方法还是很简单.<br />
首先移除或者暂停UTW.然后到/wp-admin/import.php里导入UTW数据(导的过程很简单,一路Next即可).</p>
<p>接下来就是页面展现的问题了.可以用the_tags来展示.比如:</p>
<pre class="brush:php">
<?php the_tags('Tags: ', ', ', ''); ?>
</pre>
<p>UTW的用户的Tag搜索结果界面应该是一个page,默认的是tag.php.<br />
然后把tag.php里的utw标签换成wp自带的即可.</p>
<p>比如我的tag.php是这样的.</p>
<pre class="brush:php">
<h2 style="margin: 0 0 0 150px;">当前 Tag: <?php single_tag_title(); ?></h2>
</pre>
<p>接下来是Tag Clouds,UTW一般是以tags.php为模板建立的page,所以我们还是只需用wp_tag_cloud标签改tags.php即可.<br />
例如tags.php可以这样写</p>
<pre class="brush:php">
<?php wp_tag_cloud('smallest=8&#038;largest=22&#038;number=1000&#038;order=DESC'); ?>
</pre>
<p>然后基本就是接近完美的tag了.</p>
<p>最后再次感谢两位作者精彩的文章：<br />
<a target="_blank" href="http://webeta.cn/index.php?action=show&amp;id=1823&amp;page=1">修改当前主题使之支持 WordPress 2.3 的 Tags 功能</a><br />
<a target="_blank" href="http://www.zhaomingliang.com/2007/09/905/utw-wordpress-23-tag/">让UTW用wordpress 2.3来实现tag功能</a></p>
]]></content:encoded>
			<wfw:commentRss>http://ghsky.com/2007/10/from-utw-to-wordpress-23.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>WordPress转移注意事项</title>
		<link>http://ghsky.com/2007/09/how-to-move-wordpress.html</link>
		<comments>http://ghsky.com/2007/09/how-to-move-wordpress.html#comments</comments>
		<pubDate>Sat, 22 Sep 2007 11:47:45 +0000</pubDate>
		<dc:creator>ghSky</dc:creator>
				<category><![CDATA[Site]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://hi.ghsky.cn/?p=95</guid>
		<description><![CDATA[转移WP 貌似一直都都一个不爽的问题：乱码问题。当年自己没遇到这个问题，看到铺天盖地的教程也没有在意，今天终于轮到我转移了，结果问题也出现了。下面说一下网上搜到的方法，供大家参考！ 首先说说数据库的转移。这个方法也许有些麻烦，不过很实用，小弟我也是从网上学到的。 首先我们安装wp-db-backup这个插件，官方地址：http://www.ilfilosofo.com/blog/wp-db-backup 按照说明安装完毕，启动它。然后在manage-->backup里面便可以找到它，上面有各种功能，大家可以自己研究一下。我们现在需要的是它对数据库的备份，我们选择好要备份的表头，然后备份，下载到备份好经过压缩的gz文件，解压缩得到.sql文件。现在用个奇特的方法，用office word打开这个sql，WORD会要求你选择文件的编码，这时我们选择utf-8，然后，哈哈，一个正常的sql就搞定了！现在我们需要做的适当修改一下数据库的内容，然后用文件软件做成sql，保存！这时再用phpmyadmin就可以成功导入了！ 现在说说编码错误。WordPress 2.2 版允许通过配置文件制定数据库编码格式，如果你使用的数据库版本在 4.1 以下，可以不用去管这个参数。如果数据库版本在 4.1 以上，需要正确设置你的数据库编码格式。 define('DB_CHARSET', 'utf8'); define('DB_COLLATE', ''); 其中，前面 DB_CHARSET 用来指定数据库编码格式；后面 DB_COLLATE 用来指定校对集。如果你没有在 wp-config.php 文件中特别指定，则 WordPress 默认前者为 UTF8，后则为 uft8_general_ci 。关于 utf8_unicode_ci 与 utf8_general_ci 区别，感兴趣的网友可以查看这里。 同时，如果用一下这种方法，似乎也可以达到消除乱码的效果： 修改wp-includes/wp-db.php內的资料连线设定。详细的修改方式是这样的： $this->dbh = @mysql_connect($dbhost,$dbuser,$dbpassword); //加上下面这行 $this->query("SET NAMES 'utf8'" ); 最后来谈谈域名问题。这个问题相信也是在转移WP中常常遇到的一个问题吧，一般都可以通过修改数据库来完成，不过WordPress2.2以后的版本都支持了通过硬编码来设置 WordPress 的域名。这个功能对于需要转换域名的网友非常方便。比如我原来使用的域名是 www.ghsky.cn，但如果现在我想使用hi.ghsky.cn了，那么如果使用以前版本，则必须在数据库内修改域名，非常麻烦；现在，你只需要在 wp-config.php 内进行硬设置即可，硬设置的域名比数据库内软设置的域名优先级要高。这样，就可以非常方便地更换你的域名了。 进行域名应设置的办法是，打开 wp-config.php 文件，添加如下两行代码： define('WP_SITEURL', 'http://ghsky.cn'); define('WP_HOME', [...]]]></description>
			<content:encoded><![CDATA[<p>转移WP 貌似一直都都一个不爽的问题：乱码问题。当年自己没遇到这个问题，看到铺天盖地的教程也没有在意，今天终于轮到我转移了，结果问题也出现了。下面说一下网上搜到的方法，供大家参考！</p>
<p>首先说说数据库的转移。这个方法也许有些麻烦，不过很实用，小弟我也是从网上学到的。<br />
首先我们安装wp-db-backup这个插件，官方地址：<a href="http://www.ilfilosofo.com/blog/wp-db-backup">http://www.ilfilosofo.com/blog/wp-db-backup</a><br />
按照说明安装完毕，启动它。然后在manage-->backup里面便可以找到它，上面有各种功能，大家可以自己研究一下。我们现在需要的是它对数据库的备份，我们选择好要备份的表头，然后备份，下载到备份好经过压缩的gz文件，解压缩得到.sql文件。现在用个奇特的方法，用office word打开这个sql，WORD会要求你选择文件的编码，这时我们选择utf-8，然后，哈哈，一个正常的sql就搞定了！现在我们需要做的适当修改一下数据库的内容，然后用文件软件做成sql，保存！这时再用phpmyadmin就可以成功导入了！</p>
<p>现在说说编码错误。WordPress 2.2 版允许通过配置文件制定数据库编码格式，如果你使用的数据库版本在 4.1 以下，可以不用去管这个参数。如果数据库版本在 4.1 以上，需要正确设置你的数据库编码格式。</p>
<pre class="brush:php">
define('DB_CHARSET', 'utf8');
define('DB_COLLATE', '');
</pre>
<p>其中，前面 DB_CHARSET 用来指定数据库编码格式；后面 DB_COLLATE 用来指定校对集。如果你没有在 wp-config.php 文件中特别指定，则 WordPress 默认前者为 UTF8，后则为 uft8_general_ci 。关于 utf8_unicode_ci 与 utf8_general_ci 区别，感兴趣的网友可以<a href="http://www.phpchina.com/182/viewspace_1403.html">查看这里</a>。</p>
<p>同时，如果用一下这种方法，似乎也可以达到消除乱码的效果：<br />
修改wp-includes/wp-db.php內的资料连线设定。详细的修改方式是这样的：</p>
<pre class="brush:php">
$this->dbh = @mysql_connect($dbhost,$dbuser,$dbpassword);
//加上下面这行
$this->query("SET NAMES 'utf8'" );
</pre>
<p>最后来谈谈域名问题。这个问题相信也是在转移WP中常常遇到的一个问题吧，一般都可以通过修改数据库来完成，不过WordPress2.2以后的版本都支持了通过硬编码来设置 WordPress 的域名。这个功能对于需要转换域名的网友非常方便。比如我原来使用的域名是 www.ghsky.cn，但如果现在我想使用hi.ghsky.cn了，那么如果使用以前版本，则必须在数据库内修改域名，非常麻烦；现在，你只需要在 wp-config.php 内进行硬设置即可，硬设置的域名比数据库内软设置的域名优先级要高。这样，就可以非常方便地更换你的域名了。</p>
<p>进行域名应设置的办法是，打开 wp-config.php 文件，添加如下两行代码：</p>
<pre class="brush:php">
define('WP_SITEURL', 'http://ghsky.cn');
define('WP_HOME', 'http://hi.ghsky.cn');
</pre>
<p>其中，WP_SITEURL 是设置 WordPress 程序所在位置，WP_HOME 是设置博客输出的位置。</p>
]]></content:encoded>
			<wfw:commentRss>http://ghsky.com/2007/09/how-to-move-wordpress.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>被垃圾评论淹了……</title>
		<link>http://ghsky.com/2007/09/spam-comments-defender.html</link>
		<comments>http://ghsky.com/2007/09/spam-comments-defender.html#comments</comments>
		<pubDate>Sun, 02 Sep 2007 03:28:39 +0000</pubDate>
		<dc:creator>ghSky</dc:creator>
				<category><![CDATA[Site]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://hi.ghsky.cn/?p=84</guid>
		<description><![CDATA[倒霉啊，几天没管BLOG，就被755条垃圾评论给淹了……审核页面刷新慢的要死，CPU 100%，造什么孽了啊……晕啊！！！总算在偶姐姐的帮忙下，搞定了所有垃圾评论……而且迫不得已得装上了验证码插件……被迫啊！ WP-ImgCode，一个简单的插件，功能一般般，不过搭配我的AJAX-COMMENTS就不是那么完美了……估计被破解的可能性很大……大家需要的话自己去找找咯，或者给我留言，地址懒得找了……HOHO，真懒 :laugh: 来看一下安装方法： 下载后解压缩到 WordPress 的 /wp-content/plugins/ 目录中。然后在 WordPress 后台启用该插件。 接下来修改当前使用主题的评论模版（comments.php），将]]></description>
			<content:encoded><![CDATA[<p>倒霉啊，几天没管BLOG，就被755条垃圾评论给淹了……审核页面刷新慢的要死，CPU 100%，造什么孽了啊……晕啊！！！总算在偶姐姐的帮忙下，搞定了所有垃圾评论……而且迫不得已得装上了验证码插件……被迫啊！</p>
<p>WP-ImgCode，一个简单的插件，功能一般般，不过搭配我的AJAX-COMMENTS就不是那么完美了……估计被破解的可能性很大……大家需要的话自己去找找咯，或者给我留言，地址懒得找了……HOHO，真懒 :laugh:</p>
<p>来看一下安装方法：</p>
<p>下载后解压缩到 WordPress 的 /wp-content/plugins/ 目录中。然后在 WordPress 后台启用该插件。</p>
<p>接下来修改当前使用主题的评论模版（comments.php），将</p>
<pre class="brush:php">

<textarea name="comment" id="comment" cols="100%" rows="10" tabindex="5"></textarea>
<input name="submit" type="submit" id="submit" tabindex="5" value="Submit Comment" />
<input type="hidden" name="comment_post_ID" value="<?php echo $id; ?>" />


&lt;?php do_action('comment_form', $post->ID); ?&gt;
</pre>
<p><span id="more-84"></span><br />
改为</p>
<pre class="brush:css">

<textarea name="comment" id="comment" cols="100%" rows="10" tabindex="5"></textarea>

&lt;?php do_action('comment_form', $post->ID); ?&gt;
<input name="submit" type="submit" id="submit" tabindex="5" value="Submit Comment" />
<input type="hidden" name="comment_post_ID" value="<?php echo $id; ?>" />

</form>
</pre>
<p>也就是修改 do_action 代码的位置。</p>
<p>保存模版后，刷新页面就能看到验证码了。</p>
<p>我的模版部分新添加&#038;修改代码备份</p>
<pre class="brush:css">
#imgcode {
  border:1px #3e88d2 dotted;
	background: #003366;
	height:1.4em;
	font-size:1em;
	padding-top:0.3em;
	padding-left:2px;
	color: #AECCEB;
  }
#url:hover,
#email:hover,
#author:hover,
#imgcode:hover {
	border:1px #3e88d2 solid;
  }
</pre>
]]></content:encoded>
			<wfw:commentRss>http://ghsky.com/2007/09/spam-comments-defender.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>手动给WP添加表情</title>
		<link>http://ghsky.com/2007/08/add-smilies-to-wp.html</link>
		<comments>http://ghsky.com/2007/08/add-smilies-to-wp.html#comments</comments>
		<pubDate>Sat, 18 Aug 2007 17:52:25 +0000</pubDate>
		<dc:creator>ghSky</dc:creator>
				<category><![CDATA[Site]]></category>
		<category><![CDATA[Other]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://hi.ghsky.cn/?p=80</guid>
		<description><![CDATA[一直认为IPB那套小脸的表情比WP自带的 好看些……所以…… 自己用TOTAL COMMANDER搜了一下PHP，发现是它：\wp-includes\functions.php function smilies_init() { global $wpsmiliestrans, $wp_smiliessearch, $wp_smiliesreplace; // don't bother setting up smilies if they are disabled if ( !get_option('use_smilies') ) return; if (!isset($wpsmiliestrans)) { $wpsmiliestrans = array( ':angry:' => 'angry.gif', ':biggrin:' => 'biggrin.gif', ':blink:' => 'blink.gif', ':blush:' => 'blush.gif', ':closedeyes:' => 'closedeyes.gif', ':cool:' => 'cool.gif', ':dry:' => 'dry.gif', ':excl:' => [...]]]></description>
			<content:encoded><![CDATA[<p>一直认为IPB那套小脸的表情比WP自带的 好看些……所以……<br />
自己用TOTAL COMMANDER搜了一下PHP，发现是它：\wp-includes\functions.php</p>
<pre class="brush:php">
function smilies_init() {
	global $wpsmiliestrans, $wp_smiliessearch, $wp_smiliesreplace;

	// don't bother setting up smilies if they are disabled
	if ( !get_option('use_smilies') )
		return;

	if (!isset($wpsmiliestrans)) {
		$wpsmiliestrans = array(
		':angry:' => 'angry.gif',
		':biggrin:' => 'biggrin.gif',
		':blink:' => 'blink.gif',
		  ':blush:' => 'blush.gif',
		  ':closedeyes:' => 'closedeyes.gif',
		  ':cool:' => 'cool.gif',
		    ':dry:' => 'dry.gif',
		   ':excl:' => 'excl.gif',
		   ':glare:' => 'glare.gif',
		   ':happy:' => 'happy.gif',
		   ':huh:' => 'huh.gif',
		   ':laugh:' => 'laugh.gif',
		   ':mad:' => 'mad.gif',
		   ':mellow:' => 'mellow.gif',
		   ':ninja:' => 'ninja.gif',
		    ':ohmy:' => 'ohmy.gif',
		    ':ph34r:' => 'ph34r.gif',
		    ':rolleyes:' => 'rolleyes.gif',
		    ':sad:' => 'sad.gif',
		    ':sleep:' => 'sleep.gif',
		      ':smile:' => 'smile.gif',
		      ':tongue:' => 'tongue.gif',
		      ':unsure:' => 'unsure.gif',
		      ':wacko:)' => 'wacko.gif',
		      ':wink:' => 'wink.gif',
		      ':wub:' => 'wub.gif',
		);
	}

	$siteurl = get_option('siteurl');
	foreach ( (array) $wpsmiliestrans as $smiley => $img ) {
		$wp_smiliessearch[] = '/(\s|^)'.preg_quote($smiley, '/').'(\s|$)/';
		$smiley_masked = htmlspecialchars(trim($smiley), ENT_QUOTES);
		$wp_smiliesreplace[] = " <img src='$siteurl/wp-includes/images/smilies/$img' alt='$smiley_masked' class='wp-smiley' /> ";
	}
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://ghsky.com/2007/08/add-smilies-to-wp.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>mo2po转换器</title>
		<link>http://ghsky.com/2007/08/po-to-mo.html</link>
		<comments>http://ghsky.com/2007/08/po-to-mo.html#comments</comments>
		<pubDate>Sat, 11 Aug 2007 06:31:10 +0000</pubDate>
		<dc:creator>ghSky</dc:creator>
				<category><![CDATA[Site]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://hi.ghsky.cn/?p=76</guid>
		<description><![CDATA[想要自己修改一下中文包文件，发现只能编辑PO文件，但是实际上WP认的是MO文件……这可就麻烦了，还算好，找到个工具…… 原文来自：http://www.wpsite.com/archives/200706/poedi-mo-po_123.html 我们平时下到的wordpress的中文包都是以.mo结尾的，似乎在windows下没有什么可以打开编辑的（反正我是没发现），可.po在windows下可以用软件打开编辑，那就是：poEdit，我引用别人的话简要说明一下.po和.mo是什么东西！ .po是GNU gettext项目的一套应用规范。是一种比较规范的l10n方案。.po是: Portable Object(可跨平台对象)的缩写，而创建/编辑.po文件过程中会生成相应的机器码binary的格式文件：.mo MO是Machine Object。 poEdit下载地址：poedit 别高兴太早，我们下到的都是.mo文件，不是.po文件，还是不能编辑啊，我现在就再给你介绍一个.mo和.po之间能互相转换的工具！ po_mo： 简要说一下使用方法： 1.解压缩以后把.mo或.po文件放在文件目录下。 2.用文本编辑器打开mo2po转换器.bat或po2mo转换器.bat把里面的default.po或default.mo改成你的.mo或.po的文件名 3.保存，双击后在目录下就可以生成一个.mo或.po文件 4.用poEdit打开.po文件就可以编辑了]]></description>
			<content:encoded><![CDATA[<p>想要自己修改一下中文包文件，发现只能编辑PO文件，但是实际上WP认的是MO文件……这可就麻烦了，还算好，找到个工具……<br />
原文来自：<a href="http://www.wpsite.com/archives/200706/poedi-mo-po_123.html/trackback">http://www.wpsite.com/archives/200706/poedi-mo-po_123.html</a></p>
<p>我们平时下到的wordpress的中文包都是以.mo结尾的，似乎在windows下没有什么可以打开编辑的（反正我是没发现），可.po在windows下可以用软件打开编辑，那就是：poEdit，我引用别人的话简要说明一下.po和.mo是什么东西！</p>
<blockquote><p>.po是GNU gettext项目的一套应用规范。是一种比较规范的l10n方案。.po是: Portable Object(可跨平台对象)的缩写，而创建/编辑.po文件过程中会生成相应的机器码binary的格式文件：.mo MO是Machine Object。</p></blockquote>
<p>poEdit下载地址：<a href="http://www.wpsite.com/wp-content/uploads/2007/06/poedit-1.3.5-setup.rar">poedit</a></p>
<p>别高兴太早，我们下到的都是.mo文件，不是.po文件，还是不能编辑啊，我现在就再给你介绍一个.mo和.po之间能互相转换的工具！</p>
<p><a href="http://www.wpsite.com/wp-content/uploads/2007/06/po_mo.zip">po_mo</a>：<br />
简要说一下使用方法：<br />
1.解压缩以后把.mo或.po文件放在文件目录下。<br />
2.用文本编辑器打开mo2po转换器.bat或po2mo转换器.bat把里面的default.po或default.mo改成你的.mo或.po的文件名<br />
3.保存，双击后在目录下就可以生成一个.mo或.po文件<br />
4.用poEdit打开.po文件就可以编辑了</p>
]]></content:encoded>
			<wfw:commentRss>http://ghsky.com/2007/08/po-to-mo.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>新修改版ajax-comment今天晚些时候会正式released</title>
		<link>http://ghsky.com/2007/07/new-ajaxcmt-come.html</link>
		<comments>http://ghsky.com/2007/07/new-ajaxcmt-come.html#comments</comments>
		<pubDate>Tue, 03 Jul 2007 17:11:52 +0000</pubDate>
		<dc:creator>ghSky</dc:creator>
				<category><![CDATA[Site]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://hi.ghsky.cn/?p=54</guid>
		<description><![CDATA[经过“多年”研究！终于在mYYu.net老大的文件夹诚服……收下了他的文件，加以CSS整合利用，终于基本完整，睡一会儿起来完成细节部分的修改。整体来说AJAX是相当的不错，可是……毕竟是个插件，修改地方太多了！昨天用ZB的，感觉那个AJAX回复是相当的梦幻哦！！ 本机测试那是相当快哦，危险系数低，哈哈！ 现在放一个beta版看看效果如何，晚些时候全部搞定再来放完整版]]></description>
			<content:encoded><![CDATA[<p>经过“多年”研究！终于在mYYu.net老大的文件夹诚服……收下了他的文件，加以CSS整合利用，终于基本完整，睡一会儿起来完成细节部分的修改。整体来说AJAX是相当的不错，可是……毕竟是个插件，修改地方太多了！昨天用ZB的，感觉那个AJAX回复是相当的梦幻哦！！</p>
<p>本机测试那是相当快哦，危险系数低，哈哈！</p>
<p>现在放一个beta版看看效果如何，晚些时候全部搞定再来放完整版</p>
]]></content:encoded>
			<wfw:commentRss>http://ghsky.com/2007/07/new-ajaxcmt-come.html/feed</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>WordPress 限制IP访问及相关</title>
		<link>http://ghsky.com/2007/06/wp-ban-ip.html</link>
		<comments>http://ghsky.com/2007/06/wp-ban-ip.html#comments</comments>
		<pubDate>Thu, 21 Jun 2007 13:44:54 +0000</pubDate>
		<dc:creator>ghSky</dc:creator>
				<category><![CDATA[Site]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://hi.ghsky.cn/?p=51</guid>
		<description><![CDATA[禁止某个IP访问网站可以修改.htaccess文件吧。 如果是禁止几个IP发送评论，后台-&#62;选项-&#62;评论-&#62;评论黑名单，把你要禁止的ip地址填上，一个一行。 如果评论内容经常出现某些词，也可以在这里填上，比如我就填了一个"色情"。还有评论者的名称、email、url、评论内容、UA，都会和黑名单进行比较的。 如果你填上"firefox"，还可以禁止所有使用firefox浏览器的人发送留言，这一招对于那些恨firefox入骨的人有点用处，嘿嘿。 .htaccess相关 1.URL静态操作 # 将 RewriteEngine 模式打开 RewriteEngine On # 修改以下语句中的 /discuz 为你的论坛目录地址，如果程序放在根目录中，请将 /discuz 修改为 / RewriteBase /bbs # Rewrite 系统规则请勿修改 RewriteRule ^archiver/([a-z0-9\-]+\.html)$ archiver/index.php?$1 RewriteRule ^forum-([0-9]+)-([0-9]+)\.html$ forumdisplay.php?fid=$1&#38;page=$2 RewriteRule ^thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$ viewthread.php?tid=$1&#38;extra=page\%3D$3&#38;page=$2 RewriteRule ^profile-(username&#124;uid)-(.+)\.html$ viewpro.php?$1=$2 之后，就发现域名导向又出问题了 www.ghsky.cn/bbs 会变成 ghsky.cn/bbs 这个时候只要再添加下面的代码就可以了 RewriteCond %{HTTP_HOST} !^www.ghsky.cn$ [NC] RewriteRule ^(.*)$ http://www.ghsky.cn/bbs/$1 [R,L] 2.使用PHP或.htaccess限制IP访问(来自http://www.lenoza.com/seo/php-htaccess-ban-ip/) 我在很多网站实战过程中都经历过这样的事情：有些人使用各种IP来进行spam或者利用程序来进行网站内容抓取。这样的不道德行为为我们网站带来了很大的负担。另外，由于一些搜索引擎爬虫不遵守固定协议，对网站大量的抓取和重复爬行，给网站服务器造成重大压力。这些情况都需要我们及时处理，否则给网站带来的伤害是很大的。通过使用PHP或.htaccess对固定IP进行限制访问在做网站优化以及网站基础部署中都是有用的，可以有效防止采集和Spam来源。 如果你能获取捣乱来源的IP，那么可以利用网站程序自带的IP禁止将其IP ban掉，或者如果你的服务器支持PHp，那么可以使用以下代码实现对固定IP的限制访问。 &#60;?php if($_SERVER['REMOTE_ADDR'] [...]]]></description>
			<content:encoded><![CDATA[<p>禁止某个IP访问网站可以修改.htaccess文件吧。<br />
如果是禁止几个IP发送评论，后台-&gt;选项-&gt;评论-&gt;评论黑名单，把你要禁止的ip地址填上，一个一行。</p>
<p>如果评论内容经常出现某些词，也可以在这里填上，比如我就填了一个"色情"。还有评论者的名称、email、url、评论内容、UA，都会和黑名单进行比较的。</p>
<p>如果你填上"firefox"，还可以禁止所有使用firefox浏览器的人发送留言，这一招对于那些恨firefox入骨的人有点用处，嘿嘿。</p>
<p><em><strong>.htaccess相关</strong></em><br />
1.URL静态操作</p>
<pre># 将 RewriteEngine 模式打开
RewriteEngine On

# 修改以下语句中的 /discuz 为你的论坛目录地址，如果程序放在根目录中，请将 /discuz 修改为 /
RewriteBase /bbs

# Rewrite 系统规则请勿修改
RewriteRule ^archiver/([a-z0-9\-]+\.html)$ archiver/index.php?$1
RewriteRule ^forum-([0-9]+)-([0-9]+)\.html$ forumdisplay.php?fid=$1&amp;page=$2
RewriteRule ^thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$ viewthread.php?tid=$1&amp;extra=page\%3D$3&amp;page=$2
RewriteRule ^profile-(username|uid)-(.+)\.html$ viewpro.php?$1=$2
</pre>
<p>之后，就发现域名导向又出问题了<br />
www.ghsky.cn/bbs 会变成 ghsky.cn/bbs<br />
这个时候只要再添加下面的代码就可以了</p>
<pre>RewriteCond %{HTTP_HOST} !^www.ghsky.cn$ [NC]
RewriteRule ^(.*)$ http://www.ghsky.cn/bbs/$1 [R,L]
</pre>
<p><span id="more-51"></span><br />
2.使用PHP或.htaccess限制IP访问(来自http://www.lenoza.com/seo/php-htaccess-ban-ip/)<br />
我在很多网站实战过程中都经历过这样的事情：有些人使用各种IP来进行spam或者利用程序来进行网站内容抓取。这样的不道德行为为我们网站带来了很大的负担。另外，由于一些搜索引擎爬虫不遵守固定协议，对网站大量的抓取和重复爬行，给网站服务器造成重大压力。这些情况都需要我们及时处理，否则给网站带来的伤害是很大的。通过使用PHP或.htaccess对固定IP进行限制访问在做网站优化以及网站基础部署中都是有用的，可以有效防止采集和Spam来源。</p>
<p>如果你能获取捣乱来源的IP，那么可以利用网站程序自带的IP禁止将其IP ban掉，或者如果你的服务器支持PHp，那么可以使用以下代码实现对固定IP的限制访问。</p>
<pre class="brush:php">
&lt;?php
if($_SERVER['REMOTE_ADDR'] == "192.168.1.123"){
exit();
}
?&gt;
</pre>
<p>这个代码有个缺陷，就是每次都需要在网页上添加IP，对于要限制的IP地址比较多的时候，就比较繁琐。那么可以使用以下代码减轻你的网站负担。</p>
<pre class="brush:php">
&lt;?php
$banned = file("ban_ip_list.dat");
if(in_array($_SERVER['REMOTE_ADDR'], $banned)){
echo "你的IP属于被禁止访问列表。如果问题请与站长联系。";
exit();
}
?&gt;
</pre>
<p>这样只需要在ban_ip_list.dat里面每行添加一个IP就可以实现IP禁止了。</p>
<p>如果网站不支持PHP或者需要禁止的IP特别多，那么我们可以利用.htaccess来实现限制效果。</p>
<pre>
Order Deny,Allow
Deny from xxx.xxx.xxx.xxx
Deny from xxx.xxx.xxx
</pre>
]]></content:encoded>
			<wfw:commentRss>http://ghsky.com/2007/06/wp-ban-ip.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>WordPress 2.2.1 发布及中文版下载</title>
		<link>http://ghsky.com/2007/06/wordpress-221-released.html</link>
		<comments>http://ghsky.com/2007/06/wordpress-221-released.html#comments</comments>
		<pubDate>Thu, 21 Jun 2007 11:59:03 +0000</pubDate>
		<dc:creator>ghSky</dc:creator>
				<category><![CDATA[Site]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://hi.ghsky.cn/?p=49</guid>
		<description><![CDATA[WordPress 2.2.1 发布！2.2.1 是 2.2 系列的一个 Bug 修正版本。自从一个月前发布 2.2 以来，WordPress 社区一直致力于修正发现的 Bug，并调整了一些细节。在人们不懈的努力下，终于发布了 2.2.1 版本。2.2.1 修正 Bug 的完整列表在这里。以下是重点： Atom feed 验证修正 (#4274, #4307, #4381, #4382) XML-RPC 修正 (#4314, #4329, #4315, #4469) Widget 向后兼容修正 (#4275) Widget 在 IE7 下的布局修正 (#4264, #4268) 页面和文本 Widget 增强 (#4302, #4259) 不幸的是，2.2.1 不只是 Bug 修正版本。在 2.2.1 开发过程中一些安全问题也逐渐浮出水面，强烈建议大家升级。2.2.1 修正了如下危险： PHPMailer 的远程 Shell 注入 [...]]]></description>
			<content:encoded><![CDATA[<p>WordPress 2.2.1 发布！2.2.1 是 2.2 系列的一个 Bug 修正版本。自从一个月前发布 2.2 以来，WordPress 社区一直致力于修正发现的 Bug，并调整了一些细节。在人们不懈的努力下，终于发布了 2.2.1 版本。2.2.1 修正 Bug 的完整列表在<a href="http://trac.wordpress.org/query?status=closed&amp;amp;amp;milestone=2.2.1&amp;amp;amp;resolution=fixed&amp;amp;amp;order=priority">这里</a>。以下是重点：</p>
<p class="entry">
<li>Atom feed 验证修正 (<a href="http://trac.wordpress.org/ticket/4274">#4274</a>, <a href="http://trac.wordpress.org/ticket/4307">#4307</a>, <a href="http://trac.wordpress.org/ticket/4381">#4381</a>, <a href="http://trac.wordpress.org/ticket/4382">#4382</a>)</li>
<li>XML-RPC 修正 (<a href="http://trac.wordpress.org/ticket/4314">#4314</a>, <a href="http://trac.wordpress.org/ticket/4329">#4329</a>, <a href="http://trac.wordpress.org/ticket/4315">#4315</a>, <a href="http://trac.wordpress.org/ticket/4469">#4469</a>)</li>
<li>Widget 向后兼容修正 (<a href="http://trac.wordpress.org/ticket/4275">#4275</a>)</li>
<li>Widget 在 IE7 下的布局修正 (<a href="http://trac.wordpress.org/ticket/4264">#4264</a>, <a href="http://trac.wordpress.org/ticket/4268">#4268</a>)</li>
<li>页面和文本 Widget 增强 (<a href="http://trac.wordpress.org/ticket/4302">#4302</a>, <a href="http://trac.wordpress.org/ticket/4259">#4259</a>)<br />
不幸的是，2.2.1 不只是 Bug 修正版本。在 2.2.1 开发过程中一些安全问题也逐渐浮出水面，强烈建议大家升级。2.2.1 修正了如下危险：</li>
<li><a href="http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2007-3215">PHPMailer 的远程 Shell 注入<br />
</a></li>
<li><a href="http://www.milw0rm.com/exploits/4039">XML-RPC 的远程 SQL 注入<br />
</a></li>
<li><a href="http://archives.neohapsis.com/archives/fulldisclosure/2007-06/0180.html">默认主题中未转义的属性</a><br />
这个版本只要覆盖文件即可升级，没有数据库结构的改动。</p>
<p>中文版下载地址：<br />
<a href="http://ghsky.cn/download/wordpress_2.2.1_zh_CN.rar" title="WordPress2.2.1_zh_CN">本站下载</a></li>
<p>新闻来源:点点游</p>
]]></content:encoded>
			<wfw:commentRss>http://ghsky.com/2007/06/wordpress-221-released.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>升级到WordPress2.2Final了</title>
		<link>http://ghsky.com/2007/05/wp-22-released.html</link>
		<comments>http://ghsky.com/2007/05/wp-22-released.html#comments</comments>
		<pubDate>Sat, 19 May 2007 12:12:15 +0000</pubDate>
		<dc:creator>ghSky</dc:creator>
				<category><![CDATA[Site]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://hi.ghsky.cn/?p=23</guid>
		<description><![CDATA[成功升级到WordPress2.2Final，上传文件，wp-config不上传就OK，上传中文语言包.mo，进入网站管理自动提示升级，然后…… 哈哈，升级成功！祝贺一下！ 联系到了MYYU的老大了，询问有关ajax comments plugins的相关问题，希望老大帮忙搞定！]]></description>
			<content:encoded><![CDATA[<p>成功升级到WordPress2.2Final，上传文件，wp-config不上传就OK，上传中文语言包.mo，进入网站管理自动提示升级，然后……<br />
哈哈，升级成功！祝贺一下！</p>
<p>联系到了MYYU的老大了，询问有关ajax comments plugins的相关问题，希望老大帮忙搞定！</p>
]]></content:encoded>
			<wfw:commentRss>http://ghsky.com/2007/05/wp-22-released.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hello world!</title>
		<link>http://ghsky.com/2007/05/hello-world-2.html</link>
		<comments>http://ghsky.com/2007/05/hello-world-2.html#comments</comments>
		<pubDate>Thu, 03 May 2007 13:16:29 +0000</pubDate>
		<dc:creator>ghSky</dc:creator>
				<category><![CDATA[Other]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://hi.ghsky.cn/?p=4</guid>
		<description><![CDATA[欢迎使用 WordPress。这是您的第一篇文章。您可以编辑它或是删除它，然后开始写您自己的 blog。]]></description>
			<content:encoded><![CDATA[<p>欢迎使用 WordPress。这是您的第一篇文章。您可以编辑它或是删除它，然后开始写您自己的 blog。</p>
]]></content:encoded>
			<wfw:commentRss>http://ghsky.com/2007/05/hello-world-2.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
