<?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>WilliamGates Blog &#187; php</title>
	<atom:link href="http://blog.williamgates.biz/tag/php/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.williamgates.biz</link>
	<description>四片叶子的三叶草</description>
	<lastBuildDate>Fri, 11 Nov 2011 14:32:46 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>让WordPress的私有文章（private post）所属的tags和categories显示出来</title>
		<link>http://blog.williamgates.biz/2008/12/show-tags-and-categories-only-have-private-post-in-wordpress/</link>
		<comments>http://blog.williamgates.biz/2008/12/show-tags-and-categories-only-have-private-post-in-wordpress/#comments</comments>
		<pubDate>Wed, 17 Dec 2008 08:23:21 +0000</pubDate>
		<dc:creator>WG</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[技术心得]]></category>
		<category><![CDATA[Blog]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[技术]]></category>

		<guid isPermaLink="false">http://blog.williamgates.biz/?p=182</guid>
		<description><![CDATA[　　Wordpress有private post的功能，但是一个post一旦作为private被save而不是public，则不会在数据库中进行计数（不算在已发的文章中）。这里讨论了这个问题。 　　现在问题在于，如果一个tag或者category只含有private post，那么它的计数是0，被认为是不含有文章从而不会被显示出来，哪怕是登录以后有权限看private post的情况下也是如此。这里，Wordpress的support forum的一个Moderator建议应该修改wp-includes中的taxonomy.php里的此处 function _update_post_term_count&#40; $terms &#41; &#123; global $wpdb; &#160; foreach &#40; &#40;array&#41; $terms as $term &#41; &#123; $count = $wpdb-&#62;get_var&#40; $wpdb-&#62;prepare&#40; &#34;SELECT COUNT(*) FROM $wpdb-&#62;term_relationships, $wpdb-&#62;posts WHERE $wpdb-&#62;posts.ID = $wpdb-&#62;term_relationships.object_id AND post_status = 'publish' AND post_type = 'post' AND term_taxonomy_id = %d&#34;, $term &#41; &#41;; $wpdb-&#62;update&#40; $wpdb-&#62;term_taxonomy, compact&#40; 'count' &#41;, [...]]]></description>
			<content:encoded><![CDATA[<p>　　Wordpress有private post的功能，但是一个post一旦作为private被save而不是public，则不会在数据库中进行计数（不算在已发的文章中）。<a href="http://trac.wordpress.org/ticket/5270">这里</a>讨论了这个问题。<br />
　　现在问题在于，如果一个tag或者category只含有private post，那么它的计数是0，被认为是不含有文章从而不会被显示出来，哪怕是登录以后有权限看private post的情况下也是如此。<a href="http://wordpress.org/support/topic/221210">这里</a>，Wordpress的support forum的一个Moderator建议应该修改wp-includes中的taxonomy.php里的此处</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">function</span> _update_post_term_count<span style="color: #009900;">&#40;</span> <span style="color: #000088;">$terms</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">global</span> <span style="color: #000088;">$wpdb</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #b1b100;">foreach</span> <span style="color: #009900;">&#40;</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">array</span><span style="color: #009900;">&#41;</span> <span style="color: #000088;">$terms</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$term</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #000088;">$count</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$wpdb</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">get_var</span><span style="color: #009900;">&#40;</span> <span style="color: #000088;">$wpdb</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">prepare</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">&quot;SELECT COUNT(*) FROM <span style="color: #006699; font-weight: bold;">$wpdb-&gt;term_relationships</span>, <span style="color: #006699; font-weight: bold;">$wpdb-&gt;posts</span> WHERE <span style="color: #006699; font-weight: bold;">$wpdb-&gt;posts</span>.ID = <span style="color: #006699; font-weight: bold;">$wpdb-&gt;term_relationships</span>.object_id AND post_status = 'publish' AND post_type = 'post' AND term_taxonomy_id = <span style="color: #009933; font-weight: bold;">%d</span>&quot;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$term</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000088;">$wpdb</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">update</span><span style="color: #009900;">&#40;</span> <span style="color: #000088;">$wpdb</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">term_taxonomy</span><span style="color: #339933;">,</span> <span style="color: #990000;">compact</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'count'</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'term_taxonomy_id'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$term</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>　　看起来似乎在 <code>post_status = 'publish'</code> 后面加一个 <code>OR post_status = 'private'</code> 就行了，但实际上没效果。为什么呢？这是往数据库中写的时候用来计数的，不是用来显示的；当我们已经有private post，修改这里并不会让本来被认为是空着的tag和category变得有数字。<br />
<span id="more-182"></span><br />
　　解决方案在<a href="http://wordpress.org/support/topic/175406">这里</a>，修改wp-includes中的category-template.php，<code>function wp_tag_cloud( $args = '' )</code> 中的</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$tags</span> <span style="color: #339933;">=</span> get_tags<span style="color: #009900;">&#40;</span> <span style="color: #990000;">array_merge</span><span style="color: #009900;">&#40;</span> <span style="color: #000088;">$args</span><span style="color: #339933;">,</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'orderby'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'count'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'order'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'DESC'</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// Always query top tags</span></pre></div></div>

<p>改为</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$tags</span> <span style="color: #339933;">=</span> get_tags<span style="color: #009900;">&#40;</span> <span style="color: #990000;">array_merge</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$args</span><span style="color: #339933;">,</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'hide_empty'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'orderby'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'count'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'order'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'DESC'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// Always query top tags</span></pre></div></div>

<p>　　也就是给 <code>get_tags()</code> （这其实是taxonomy.php里 <code>get_term()</code> 的一个封装，所以参数也一样)加上一个参数 <code>'hide_empty' => 0</code> ，即显示被认为是空的tag。<br />
　　category也一样做就可以了，同样是category-template.php里，修改 <code>function wp_list_categories( $args = '' ) </code> 中的</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$defaults</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span>
		<span style="color: #0000ff;">'show_option_all'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">''</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'orderby'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'name'</span><span style="color: #339933;">,</span>
		<span style="color: #0000ff;">'order'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'ASC'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'show_last_update'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span>
		<span style="color: #0000ff;">'style'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'list'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'show_count'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span>
		<span style="color: #0000ff;">'hide_empty'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #cc66cc;">1</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'use_desc_for_title'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #cc66cc;">1</span><span style="color: #339933;">,</span>
		<span style="color: #0000ff;">'child_of'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'feed'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">''</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'feed_type'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">''</span><span style="color: #339933;">,</span>
		<span style="color: #0000ff;">'feed_image'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">''</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'exclude'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">''</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'current_category'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span>
		<span style="color: #0000ff;">'hierarchical'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #009900; font-weight: bold;">true</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'title_li'</span> <span style="color: #339933;">=&gt;</span> __<span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'Categories'</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
		<span style="color: #0000ff;">'echo'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #cc66cc;">1</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'depth'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #cc66cc;">0</span>
	<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>　　把 <code>'hide_empty' => 1</code> 改成0即可。<br />
　　当然，如果需要只让有权限看private post的用户看到这些变化，只要给前面两处修改加上 <code>if(current_user_can("read_private_posts")) </code> 这样的判断就行了。</p>
<p>Related posts:<ol>
<li><a href='http://blog.williamgates.biz/2011/09/do-not-edit-hosts-of-android-unless-necessary/' rel='bookmark' title='慎改Android的Hosts文件'>慎改Android的Hosts文件</a></li>
<li><a href='http://blog.williamgates.biz/2011/11/do-not-and-do-not-edit-hosts-of-android/' rel='bookmark' title='再谈不要乱改Android的hosts文件'>再谈不要乱改Android的hosts文件</a></li>
<li><a href='http://blog.williamgates.biz/2011/10/how-to-purchase-android-apps-use-i809-at-mainland-china/' rel='bookmark' title='在国行双网机（如i909/i809）上使用Android Market购买app研究小结'>在国行双网机（如i909/i809）上使用Android Market购买app研究小结</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.williamgates.biz/2008/12/show-tags-and-categories-only-have-private-post-in-wordpress/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>WordPress+WP-SuperCache之中文tag的Permalink问题全解析</title>
		<link>http://blog.williamgates.biz/2008/08/url-encoding-problem-in-wordpress-with-wp-super-cache/</link>
		<comments>http://blog.williamgates.biz/2008/08/url-encoding-problem-in-wordpress-with-wp-super-cache/#comments</comments>
		<pubDate>Fri, 15 Aug 2008 04:50:17 +0000</pubDate>
		<dc:creator>WG</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[技术心得]]></category>
		<category><![CDATA[Blog]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[技术]]></category>

		<guid isPermaLink="false">http://blog.williamgates.biz/?p=152</guid>
		<description><![CDATA[　　WordPress的中文支持有问题，特别是在使用Permalink的时候，这个大家都知道。本文将分析其中的原因和网上流传的多种解决方案，并给出一个具体的解决结论。 　　这个问题主要表现为，在默认情况下，Wordpress对于形如这样的链接（链接1）： 　　 www.example.com/tag/中文 　　不能正常访问，会产生404或500错误，或者其他的错误。 　　而对于这样的链接（链接2）： 　　 www.example.com/?tag=中文 　　WordPress就能够正确解析。 　　原因：参见这篇文章和这篇文章，这是URL编码问题造成的。对于上面的链接1，这是一个PathInfo，对于链接2，这是一个QueryString。事实证明，对于UTF-8的页面，IE和FF都会正确发送PathInfo和QueryString（而不像有些文章中说的，他们在不同的设置下会有错误的反应），但服务器端，IIS会将PathInfo转换成GBK编码从而造成错误，于是Windows下的此类问题只需要转回来就行了；但是Linux下，Apache不支持中文PathInfo，要么通过这篇文章中的方法来对Apache进行改造，要么只能像我一样，Linux主机无法使用中文permalink。于是，我们只能寻找绕路的方法。 　　解决方案分析： 　　一、转换编码（参见这篇文章） 　　原理是，IIS会将PathInfo中的UTF-8转换成GBK，而QueryString中就不会转换，故而为了使用Permalink，采用以下方法： 　　打开wp-includesclasses.php文件，找到第44行和第50行： if &#40; isset&#40;$_SERVER&#91;'PATH_INFO'&#93;&#41; &#41; $pathinfo = $_SERVER&#91;'PATH_INFO'&#93;; else $pathinfo = ''; $pathinfo_array = explode&#40;'?', $pathinfo&#41;; $pathinfo = str_replace&#40;&#34;%&#34;, &#34;%25&#34;, $pathinfo_array&#91;0&#93;&#41;; $req_uri = $_SERVER&#91;'REQUEST_URI'&#93;; 改为 if &#40; isset&#40;$_SERVER&#91;'PATH_INFO'&#93;&#41; &#41; $pathinfo = mb_convert_encoding&#40;$_SERVER&#91;'PATH_INFO'&#93;, &#34;UTF-8&#34;, &#34;GBK&#34;&#41;; else $pathinfo = ''; $pathinfo_array = explode&#40;'?', $pathinfo&#41;; [...]]]></description>
			<content:encoded><![CDATA[<p>　　WordPress的中文支持有问题，特别是在使用Permalink的时候，这个大家都知道。本文将分析其中的原因和网上流传的多种解决方案，并给出一个具体的解决结论。<br />
　　这个问题主要表现为，在默认情况下，Wordpress对于形如这样的链接（链接1）：<br />
　　</p>

<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;">www.example.com/tag/中文</pre></div></div>

<p>　　不能正常访问，会产生404或500错误，或者其他的错误。<br />
　　而对于这样的链接（链接2）：<br />
　　</p>

<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;">www.example.com/?tag=中文</pre></div></div>

<p>　　WordPress就能够正确解析。</p>
<p>　　原因：参见<a href="http://akun-007.javaeye.com/blog/222624">这篇文章</a>和这篇文章，这是URL编码问题造成的。对于上面的链接1，这是一个PathInfo，对于链接2，这是一个QueryString。事实证明，对于UTF-8的页面，IE和FF都会正确发送PathInfo和QueryString（而不像有些文章中说的，他们在不同的设置下会有错误的反应），但服务器端，IIS会将PathInfo转换成GBK编码从而造成错误，于是Windows下的此类问题只需要转回来就行了；但是Linux下，Apache不支持中文PathInfo，要么通过<a href="http://www.iceboy.cn/show-15-1.html">这篇文章</a>中的方法来对Apache进行改造，要么只能像我一样，<strong>Linux主机无法使用中文permalink</strong>。于是，我们只能寻找绕路的方法。<br />
<span id="more-152"></span><br />
　　解决方案分析：<br />
　　一、转换编码（参见<a href="http://www.bolarn.com/index.php/2008/01/26/52/">这篇文章</a>）<br />
　　原理是，IIS会将PathInfo中的UTF-8转换成GBK，而QueryString中就不会转换，故而为了使用Permalink，采用以下方法：<br />
　　打开wp-includesclasses.php文件，找到第44行和第50行：</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span> <span style="color: #990000;">isset</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_SERVER</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'PATH_INFO'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span>
  <span style="color: #000088;">$pathinfo</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$_SERVER</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'PATH_INFO'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">else</span>
  <span style="color: #000088;">$pathinfo</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">''</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$pathinfo_array</span> <span style="color: #339933;">=</span> <span style="color: #990000;">explode</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'?'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$pathinfo</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$pathinfo</span> <span style="color: #339933;">=</span> <span style="color: #990000;">str_replace</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;%&quot;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">&quot;%25&quot;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$pathinfo_array</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$req_uri</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$_SERVER</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'REQUEST_URI'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span></pre></div></div>

<p>改为</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span> <span style="color: #990000;">isset</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_SERVER</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'PATH_INFO'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span>
  <span style="color: #000088;">$pathinfo</span> <span style="color: #339933;">=</span> <span style="color: #990000;">mb_convert_encoding</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_SERVER</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'PATH_INFO'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">&quot;UTF-8&quot;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">&quot;GBK&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">else</span>
  <span style="color: #000088;">$pathinfo</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">''</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$pathinfo_array</span> <span style="color: #339933;">=</span> <span style="color: #990000;">explode</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'?'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$pathinfo</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$pathinfo</span> <span style="color: #339933;">=</span> <span style="color: #990000;">str_replace</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;%&quot;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">&quot;%25&quot;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$pathinfo_array</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$req_uri</span> <span style="color: #339933;">=</span> <span style="color: #990000;">mb_convert_encoding</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_SERVER</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'REQUEST_URI'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">&quot;UTF-8&quot;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">&quot;GBK&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>　　局限：只对Windows主机、且必须是Windows下的IIS主机有效。</p>
<p>　　二、修改rewrite.php（参见<a href="http://www.allove.org/index.php/archives/wordpress-tags.html">这篇文章</a>）<br />
　　这是网上最常见的方法，原理是，让WordPress在对其他内容使用Permalink的时候，对tag不使用，而使用链接2的QueryString模式发送中文编码：</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">function</span> get_tag_permastruct<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">isset</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">tag_structure</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
<span style="color: #b1b100;">return</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">tag_structure</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">empty</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">permalink_structure</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <span style="color: #666666; font-style: italic;">//-----this line need change------</span>
<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">tag_structure</span> <span style="color: #339933;">=</span> ”<span style="color: #339933;">;</span>
<span style="color: #b1b100;">return</span> <span style="color: #009900; font-weight: bold;">false</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>把第5行改为</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #990000;">empty</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">permalink_structure</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span></pre></div></div>

<p>　　局限：没有起到Permalink的“漂亮”作用，如果不能自己修改WP的文件就没办法了。</p>
<p>　　三、修改tag base（参见<a href="http://www.myfcys.cn/blog/index.php/2008.05/15">这篇文章</a>，经过我研究改造）<br />
　　原理同上，只要让WordPress在打开了Permalink功能后继续对tag不理不问就行了。那么，欺骗WordPress，让它用链接2的格式来显示Permalink，可行么？可行，因为WordPress可以自定义Permalink的形式：<br />
　　在WordPress的 Settings &#8211; Permalinks &#8211; Tag base 中填上<br />
　　</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">/</span>?tag<span style="color: #339933;">=</span></pre></div></div>

<p>　　注意&#8221;"不能少，引用原文中的写法不对。另外要注意每次输入&#8221;"，WP都会再次转义为&#8221;\&#8221;，所以每次点提交都会把&#8221;"翻一倍，点两次就是&#8221;\\&#8221;，所以不要多点，一次就对了。<br />
　　这个方法的结果是使得链接变成这个样子<br />
 　　</p>

<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;">www.example.com/?tag=/中文/</pre></div></div>

<p>　　多出来的斜杠对于服务器丝毫没有影响，还是被视为QueryString，效果同上。<br />
　　局限是链接变得更加不好看了，更为致命的是插件生成的Sitemap中，tag链接会变成错误的形式，如果你很在乎Sitemap，请不要使用这个方法，除非你真的无法修改自己的rewrite.php文件。</p>
<p>　　但是当你使用WP-SuperCache或者类似的缓存插件时，它会加入自己的rewrite规则，所有请求先由自己判断，不在缓存中或者不符合缓存规则才交由WordPress处理。但问题在于，它不支持中文URL的解析，哪怕是QueryString也不行。于是我们必须绕过它。<br />
　　这是WP-SuperCache在.htaccess文件里所添加的rewrite规则</p>

<div class="wp_syntax"><div class="code"><pre class="xorg_conf" style="font-family:monospace;">RewriteEngine On
RewriteBase /
&nbsp;
RewriteCond %<span class="br0">&#123;</span>REQUEST_METHOD<span class="br0">&#125;</span> !=POST
RewriteCond %<span class="br0">&#123;</span>QUERY_STRING<span class="br0">&#125;</span> !.*s=.*
RewriteCond %<span class="br0">&#123;</span>QUERY_STRING<span class="br0">&#125;</span> !.*p=.*
RewriteCond %<span class="br0">&#123;</span>QUERY_STRING<span class="br0">&#125;</span> !.*attachment_id=.*
RewriteCond %<span class="br0">&#123;</span>QUERY_STRING<span class="br0">&#125;</span> !.*wp-subscription-manager=.*
RewriteCond %<span class="br0">&#123;</span>HTTP_COOKIE<span class="br0">&#125;</span> !^.*<span class="br0">&#40;</span>comment_author_|wordpress|wp-postpass_<span class="br0">&#41;</span>.*$
RewriteCond %<span class="br0">&#123;</span>HTTP:Accept-Encoding<span class="br0">&#125;</span> gzip
RewriteCond %<span class="br0">&#123;</span>DOCUMENT_ROOT<span class="br0">&#125;</span>/wp-content/cache/supercache/%<span class="br0">&#123;</span>HTTP_HOST<span class="br0">&#125;</span>/$1/index.html.gz -f
RewriteRule ^<span class="br0">&#40;</span>.*<span class="br0">&#41;</span> /wp-content/cache/supercache/%<span class="br0">&#123;</span>HTTP_HOST<span class="br0">&#125;</span>/$1/index.html.gz <span class="br0">&#91;</span>L<span class="br0">&#93;</span>
&nbsp;
RewriteCond %<span class="br0">&#123;</span>REQUEST_METHOD<span class="br0">&#125;</span> !=POST
RewriteCond %<span class="br0">&#123;</span>QUERY_STRING<span class="br0">&#125;</span> !.*s=.*
RewriteCond %<span class="br0">&#123;</span>QUERY_STRING<span class="br0">&#125;</span> !.*p=.*
RewriteCond %<span class="br0">&#123;</span>QUERY_STRING<span class="br0">&#125;</span> !.*wp-subscription-manager=.*
RewriteCond %<span class="br0">&#123;</span>QUERY_STRING<span class="br0">&#125;</span> !.*attachment_id=.*
RewriteCond %<span class="br0">&#123;</span>HTTP_COOKIE<span class="br0">&#125;</span> !^.*<span class="br0">&#40;</span>comment_author_|wordpress|wp-postpass_<span class="br0">&#41;</span>.*$
RewriteCond %<span class="br0">&#123;</span>DOCUMENT_ROOT<span class="br0">&#125;</span>/wp-content/cache/supercache/%<span class="br0">&#123;</span>HTTP_HOST<span class="br0">&#125;</span>/$1/index.html -f
RewriteRule ^<span class="br0">&#40;</span>.*<span class="br0">&#41;</span> /wp-content/cache/supercache/%<span class="br0">&#123;</span>HTTP_HOST<span class="br0">&#125;</span>/$1/index.html <span class="br0">&#91;</span>L<span class="br0">&#93;</span></pre></div></div>

<p>　　我们要做的就是不让它去判断中文tag链接，在两个 RewriteCond %{REQUEST_METHOD} !=POST 后面分别加入这样一句：</p>

<div class="wp_syntax"><div class="code"><pre class="xorg_conf" style="font-family:monospace;">RewriteCond %<span class="br0">&#123;</span>QUERY_STRING<span class="br0">&#125;</span> !.*tag=.*</pre></div></div>

<p>　　含义是如果QueryString中含有tag字样，请不要解析（交给下一条规则，一般来说就是WordPress的index.php了）。</p>
<p>　　结论：<br />
　　Windows+IIS主机下，通过方案一可以完美解决中文tag问题<br />
　　Linux+Apache主机下，<strong>不能使用中文Permalink</strong>，除非修改Apache，否则只有用方案二和方案三绕行。<br />
　　方案二是较为推荐的方法，但是搭配WP-SuperCache使用的时候，需要自己在.htaccess文件中加入一条不处理tag链接的规则。</p>
<p>Related posts:<ol>
<li><a href='http://blog.williamgates.biz/2011/10/how-to-purchase-android-apps-use-i809-at-mainland-china/' rel='bookmark' title='在国行双网机（如i909/i809）上使用Android Market购买app研究小结'>在国行双网机（如i909/i809）上使用Android Market购买app研究小结</a></li>
<li><a href='http://blog.williamgates.biz/2011/09/do-not-edit-hosts-of-android-unless-necessary/' rel='bookmark' title='慎改Android的Hosts文件'>慎改Android的Hosts文件</a></li>
<li><a href='http://blog.williamgates.biz/2011/11/do-not-and-do-not-edit-hosts-of-android/' rel='bookmark' title='再谈不要乱改Android的hosts文件'>再谈不要乱改Android的hosts文件</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.williamgates.biz/2008/08/url-encoding-problem-in-wordpress-with-wp-super-cache/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>一个优秀的php相册系统——Coppermine Photo Gallery(三)日常使用</title>
		<link>http://blog.williamgates.biz/2008/04/coppermine-photo-gallery-03/</link>
		<comments>http://blog.williamgates.biz/2008/04/coppermine-photo-gallery-03/#comments</comments>
		<pubDate>Tue, 08 Apr 2008 06:45:29 +0000</pubDate>
		<dc:creator>WG</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[技术心得]]></category>
		<category><![CDATA[CPG]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[技术]]></category>

		<guid isPermaLink="false">http://blog.williamgates.biz/?p=132</guid>
		<description><![CDATA[　　第一眼看到CPG的界面，会觉得像一个论坛，这也是它的多层分类的结构决定的。与一些相册网站不同，CPG可以有无限级的分类，这样就如同与一个论坛有诸多版面，版面还有子版面，等等。理解了这个概念，我们才能开始日常的管理和使用。 　　作为管理员登录CPG的时候，有两种模式，一种是让你观看普通会员的界面的会员模式，另一种则是默认的管理模式，只有在管理模式才可以看到类别、相册、会员等管理按钮。下面主要就来讲讲这些管理功能。 　　一、类别 　　要上传图片，要选择所传到的相册；要建立相册，首先要建立类别。在“类别”菜单中，我们可以建立、修改类别，还可以修改类别在页面中显示的顺序，还可以修改类别的详细属性（点击类别后面的“e”图标），其中很重要的一点是类别缩略图，是该类别显示时的标题缩略图，如果不想你的类别是自动的最后一幅上传图作为标题图，就自己修改一下吧。 　　二、相册 　　在此界面建立和修改相册。先选择一个类别，会显示出其下现有的相册。点新增，然后在下面的文本框输入相册名，把所有的相册都建立和修改好，再点修改，这样比较方便。注意，普通会员不能建立相册更不能建立分类，只能上传到管理员预先建好的相册（须打开群设置中的“允许公用相册上传”，并且该特定的相册必须在属性中“允许访客上传图片”）或者会员自己所有的相册中。 　　三、用户管理 　　群、会员、限制会员这三项都是用来进行用户管理的，第一个“群”应该译作“用户组”更为合适。在这里你可以修改各个用户组的设置，其中默认的四个组是不能被删除的；空间配额可以决定该组可以上传的所有图片总容量；上传方法中的字段数量表示一次可以上传多少个文件。会员界面也是大概的用法，把组和会员的关系刚好理解为分类与相册的关系就好了。 　　四、批量上传 　　这可能是最常用的功能之一了，因为除非你拥有很快的网络速度，并且要传的图片不太多，否则用普通的上传功能是非常麻烦的。在这里首先要说一说CPG的文件管理结构，CPG的数据库记录加入其中的图片的路径，而具体图片怎样存放是用户管理的。默认所有的相册都在CPG自己目录下的albums目录下，其中userpics目录是默认的用户个人相册的目录，而我在albums目录下又自己建了一个albums目录，用来存放公用相册。个人建议严格地按照你的类型、相册的结构来布置文件夹结构，另外注意尽量不要使用双字节目录名（中文、日文都不可以）。 　　建好目录结构之后，向欲存放某相册的目录上传这个相册的所有文件，然后到CPG中点击批量上传（只有管理员才有此功能），会出现你CPG目录下的目录结构，一层层找到你刚刚上传的目录（不用选择任何文件），点击OK，就开始自动建立图片的缩略图和中型图（这两者的设置请见上一篇文章）缩略图和中型图都保存在原图同样的目录下，有设置项里规定的名字。要提醒的是，如果你的主机支持使用ImageMagicK，会大幅度提高生成缩略图的速度，而且还能突破GD2的内存极限（GD2在我的主机上对付4096*4096的图就常常生成不了，另外有传闻说php5+Zend对GD2支持不好）。等表格的右边一栏中所有图片都显示完，在右上角选择你要加入这些图片的相册，点击确定，则开始写入数据库的工作。每一个图片成功加入后，表格右边会显示OK，这与上一步是速度差不多的过程，我一般添加100多幅漫画要2-3分钟不等。等全部都显示出OK的图样后，就完成了批量上传，去相册目录看看吧。 　　五、管理功能 　　这里是进行批量的数据库处理的界面，可以批量更新图片的信息、批量重新生成缩略图，这对于更改过缩略图设置的人来说非常有用，所有旧的图片的缩略图也将按照你的新设置重新生成一遍。其他功能也都写得很清楚，就不详述了。 　　六、会员模式 　　普通会员的功能，大致包括向自己的相册上传图片，向允许上传的功用相册上传图片等。这些上传方式与普通的相册系统、论坛系统都差别不大，而普通会员的相册管理功能其实就是简化了的管理员的管理界面，就不再介绍了。 　　还是做个广告，大家可以到photo.williamgates.biz去看这样经过多层分类的相册系统，如果在使用中有什么不懂的可以给我留言，我发现CPG的中文材料实在是太少了，只有一两个中文论坛以及官方论坛中的中文版面，内容都不太多。 　　下次将真正进入有技术含量的部分，介绍mod和plugin以及我使用并且修改过的几个Mod。 Related posts: 慎改Android的Hosts文件 在国行双网机（如i909/i809）上使用Android Market购买app研究小结 再谈不要乱改Android的hosts文件]]></description>
			<content:encoded><![CDATA[<p>　　第一眼看到CPG的界面，会觉得像一个论坛，这也是它的多层分类的结构决定的。与一些相册网站不同，CPG可以有无限级的分类，这样就如同与一个论坛有诸多版面，版面还有子版面，等等。理解了这个概念，我们才能开始日常的管理和使用。<br />
　　作为管理员登录CPG的时候，有两种模式，一种是让你观看普通会员的界面的会员模式，另一种则是默认的管理模式，只有在管理模式才可以看到类别、相册、会员等管理按钮。下面主要就来讲讲这些管理功能。<br />
<span id="more-132"></span><br />
　　一、类别<br />
　　要上传图片，要选择所传到的相册；要建立相册，首先要建立类别。在“类别”菜单中，我们可以建立、修改类别，还可以修改类别在页面中显示的顺序，还可以修改类别的详细属性（点击类别后面的“e”图标），其中很重要的一点是类别缩略图，是该类别显示时的标题缩略图，如果不想你的类别是自动的最后一幅上传图作为标题图，就自己修改一下吧。</p>
<p>　　二、相册<br />
　　在此界面建立和修改相册。先选择一个类别，会显示出其下现有的相册。点新增，然后在下面的文本框输入相册名，把所有的相册都建立和修改好，再点修改，这样比较方便。注意，普通会员不能建立相册更不能建立分类，只能上传到管理员预先建好的相册（须打开群设置中的“允许公用相册上传”，并且该特定的相册必须在属性中“允许访客上传图片”）或者会员自己所有的相册中。</p>
<p>　　三、用户管理<br />
　　群、会员、限制会员这三项都是用来进行用户管理的，第一个“群”应该译作“用户组”更为合适。在这里你可以修改各个用户组的设置，其中默认的四个组是不能被删除的；空间配额可以决定该组可以上传的所有图片总容量；上传方法中的字段数量表示一次可以上传多少个文件。会员界面也是大概的用法，把组和会员的关系刚好理解为分类与相册的关系就好了。</p>
<p>　　四、批量上传<br />
　　这可能是最常用的功能之一了，因为除非你拥有很快的网络速度，并且要传的图片不太多，否则用普通的上传功能是非常麻烦的。在这里首先要说一说CPG的文件管理结构，CPG的数据库记录加入其中的图片的路径，而具体图片怎样存放是用户管理的。默认所有的相册都在CPG自己目录下的albums目录下，其中userpics目录是默认的用户个人相册的目录，而我在albums目录下又自己建了一个albums目录，用来存放公用相册。个人建议严格地按照你的类型、相册的结构来布置文件夹结构，另外注意尽量不要使用双字节目录名（中文、日文都不可以）。<br />
　　建好目录结构之后，向欲存放某相册的目录上传这个相册的所有文件，然后到CPG中点击批量上传（只有管理员才有此功能），会出现你CPG目录下的目录结构，一层层找到你刚刚上传的目录（不用选择任何文件），点击OK，就开始自动建立图片的缩略图和中型图（这两者的设置请见<a href="http://blog.williamgates.biz/2008/03/coppermine-photo-gallery-02/">上一篇文章</a>）缩略图和中型图都保存在原图同样的目录下，有设置项里规定的名字。要提醒的是，如果你的主机支持使用ImageMagicK，会大幅度提高生成缩略图的速度，而且还能突破<a href="http://www.boutell.com/gd/">GD2</a>的内存极限（GD2在我的主机上对付4096*4096的图就常常生成不了，另外有传闻说php5+Zend对GD2支持不好）。等表格的右边一栏中所有图片都显示完，在右上角选择你要加入这些图片的相册，点击确定，则开始写入数据库的工作。每一个图片成功加入后，表格右边会显示OK，这与上一步是速度差不多的过程，我一般添加100多幅漫画要2-3分钟不等。等全部都显示出OK的图样后，就完成了批量上传，去相册目录看看吧。</p>
<p>　　五、管理功能<br />
　　这里是进行批量的数据库处理的界面，可以批量更新图片的信息、批量重新生成缩略图，这对于更改过缩略图设置的人来说非常有用，所有旧的图片的缩略图也将按照你的新设置重新生成一遍。其他功能也都写得很清楚，就不详述了。</p>
<p>　　六、会员模式<br />
　　普通会员的功能，大致包括向自己的相册上传图片，向允许上传的功用相册上传图片等。这些上传方式与普通的相册系统、论坛系统都差别不大，而普通会员的相册管理功能其实就是简化了的管理员的管理界面，就不再介绍了。</p>
<p>　　还是做个广告，大家可以到<a href="http://photo.williamgates.biz">photo.williamgates.biz</a>去看这样经过多层分类的相册系统，如果在使用中有什么不懂的可以给我留言，我发现CPG的中文材料实在是太少了，只有一两个中文论坛以及官方论坛中的中文版面，内容都不太多。<br />
　　下次将真正进入有技术含量的部分，介绍mod和plugin以及我使用并且修改过的几个Mod。</p>
<p>Related posts:<ol>
<li><a href='http://blog.williamgates.biz/2011/09/do-not-edit-hosts-of-android-unless-necessary/' rel='bookmark' title='慎改Android的Hosts文件'>慎改Android的Hosts文件</a></li>
<li><a href='http://blog.williamgates.biz/2011/10/how-to-purchase-android-apps-use-i809-at-mainland-china/' rel='bookmark' title='在国行双网机（如i909/i809）上使用Android Market购买app研究小结'>在国行双网机（如i909/i809）上使用Android Market购买app研究小结</a></li>
<li><a href='http://blog.williamgates.biz/2011/11/do-not-and-do-not-edit-hosts-of-android/' rel='bookmark' title='再谈不要乱改Android的hosts文件'>再谈不要乱改Android的hosts文件</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.williamgates.biz/2008/04/coppermine-photo-gallery-03/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>一个优秀的php相册系统——Coppermine Photo Gallery(二)部署与设置</title>
		<link>http://blog.williamgates.biz/2008/03/coppermine-photo-gallery-02/</link>
		<comments>http://blog.williamgates.biz/2008/03/coppermine-photo-gallery-02/#comments</comments>
		<pubDate>Sat, 08 Mar 2008 07:10:03 +0000</pubDate>
		<dc:creator>WG</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[技术心得]]></category>
		<category><![CDATA[CPG]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[技术]]></category>

		<guid isPermaLink="false">http://blog.williamgates.biz/2008/03/08/128</guid>
		<description><![CDATA[　　从今天开始介绍我安装CPG（开发者自己喜欢用这个简称，我也乐得）和配置为己用的整个过程。先说基本的部署与配置（今天不涉及代码修改）。 　　一、部署 　　从sourceforge下载CPG，解压缩，全部上传至你的主机，把albums和include两个目录chmod为777（官方文档说这很重要，但是对于IPower这样脚本执行者权限很高的主机是无所谓的）。建好数据库，最后运行http://your_server/coppermine_dir/install.php这个页面进行安装。都是安装php程序常见的步骤，很简单。 　　二、设置 　　作为管理员登录后，可以看到比普通用户多出来的一层菜单，其中第一项就是“设定”。这个设置菜单异常庞杂（因为不像WordPress有多层设置页面，CPG只有这一个）。下面我们就来讲解一下设置，主要是对一些重要的、可能需要自定义的选项。 基本设定 请根据自己情况修改：相册名称，CPG 的网址，时区跟 GMT 的差别 语言 &#038; 编码设定 语言：Chinese_gb，注意对非IE浏览器可能默认语言无效，用户可能需要自己在页面上选择语言 如果翻译的字句不存在使用英文替回：请务必打开 文字编码：保持UTF-8不要改变 显示语言列表：建议打开，CPG的lang目录下的语言文件不用全部上传，上传你认为需要的即可，上传了的会显示在这个列表里 风格设定 风格：选择所用的theme，上传在CPG的themes目录，可以用前面提到的下载页面下载更多的theme 自定义的菜单连接/自定义菜单的网址：可以在菜单中添加自定义项，前者是显示的名称，后者是实际的URL，既可以是CPG系统内的链接（如链接向插件控制面板，默认这个面板只能手动在浏览器栏输入网址访问），也可以链接到其他的网站，例如其他的附属站点 自定义标头的路径/自定义页尾的路径：可以在页首和页尾插入自定义html内容，最常见的用法应该是放置广告 相册目录显示 类别显示的层次数量：“catalist”也就是”类别“这个table里面显示的分类层次，例如我的相册这个值就是3，显示3层分类级别 缩略图像素：显示缩略图的框子的大小，取长宽中的较大者。这个值推荐跟下面要提到的生成缩略图的像素一样 主页的内容：自定义主体table中的内容，例如类别列表，相册列表，随机图片，热门图片等等。其中“anycontent”可以用于显示你自己所需要的内容（事先保存好的“anycontent.php”文件），最常见的用法仍然是广告，但是不能用于单张图片浏览界面，所以我干脆采用了另一种方法加入广告，在这个系列以后的文章中会提到 图片及缩略图设定 缩略图最大尺寸：生成缩略图时的最大尺寸（长宽中较大者），不同于前面的显示尺寸 建立中级图片：是否生成Normal文件，即中型图（类似于Yupoo等网站的功能），对于像我这样要传大型图片的使用还是很方便的，在其他论坛分享或者在相册中浏览的时候使用中型图，点击进入才能看到原图，这样速度和效果都能达到最好 中级图片/影片的最大尺寸：我把这里设成了1024，这样直接在论坛贴中型图地址就可以了，很方便 　　通过以上的修改，你的CPG应该就可以正常使用了。下一篇将讲解上传、修改和管理图片等日常功能。 Related posts: 慎改Android的Hosts文件 在国行双网机（如i909/i809）上使用Android Market购买app研究小结 再谈不要乱改Android的hosts文件]]></description>
			<content:encoded><![CDATA[<p>　　从今天开始介绍我安装CPG（开发者自己喜欢用这个简称，我也乐得）和配置为己用的整个过程。先说基本的部署与配置（今天不涉及代码修改）。</p>
<p>　　一、部署<br />
　　从<a href="http://sourceforge.net/project/showfiles.php?group_id=89658">sourceforge</a>下载CPG，解压缩，全部上传至你的主机，把albums和include两个目录chmod为777（官方文档说这很重要，但是对于IPower这样脚本执行者权限很高的主机是无所谓的）。建好数据库，最后运行http://your_server/coppermine_dir/install.php这个页面进行安装。都是安装php程序常见的步骤，很简单。</p>
<p>　　二、设置<br />
　　作为管理员登录后，可以看到比普通用户多出来的一层菜单，其中第一项就是“设定”。这个设置菜单异常庞杂（因为不像WordPress有多层设置页面，CPG只有这一个）。下面我们就来讲解一下设置，主要是对一些重要的、可能需要自定义的选项。<br />
<span id="more-128"></span></p>
<ul>基本设定</p>
<li>请根据自己情况修改：相册名称，CPG 的网址，时区跟 GMT 的差别</li>
</ul>
<ul>语言 &#038; 编码设定</p>
<li>语言：Chinese_gb，注意对非IE浏览器可能默认语言无效，用户可能需要自己在页面上选择语言</li>
<li>如果翻译的字句不存在使用英文替回：请务必打开</li>
<li>文字编码：保持UTF-8不要改变</li>
<li>显示语言列表：建议打开，CPG的lang目录下的语言文件不用全部上传，上传你认为需要的即可，上传了的会显示在这个列表里</li>
</ul>
<ul>风格设定</p>
<li>风格：选择所用的theme，上传在CPG的themes目录，可以用前面提到的下载页面下载更多的theme</li>
<li>自定义的菜单连接/自定义菜单的网址：可以在菜单中添加自定义项，前者是显示的名称，后者是实际的URL，既可以是CPG系统内的链接（如链接向插件控制面板，默认这个面板只能手动在浏览器栏输入网址访问），也可以链接到其他的网站，例如其他的附属站点</li>
<li>自定义标头的路径/自定义页尾的路径：可以在页首和页尾插入自定义html内容，最常见的用法应该是放置广告</li>
</ul>
<ul>相册目录显示</p>
<li>类别显示的层次数量：“catalist”也就是”类别“这个table里面显示的分类层次，例如我的相册这个值就是3，显示3层分类级别</li>
<li>缩略图像素：显示缩略图的框子的大小，取长宽中的较大者。这个值推荐跟下面要提到的生成缩略图的像素一样</li>
<li>主页的内容：自定义主体table中的内容，例如类别列表，相册列表，随机图片，热门图片等等。其中“anycontent”可以用于显示你自己所需要的内容（事先保存好的“anycontent.php”文件），最常见的用法仍然是广告，但是不能用于单张图片浏览界面，所以我干脆采用了另一种方法加入广告，在这个系列以后的文章中会提到</li>
</ul>
<ul>图片及缩略图设定</p>
<li>缩略图最大尺寸：生成缩略图时的最大尺寸（长宽中较大者），不同于前面的显示尺寸</li>
<li>建立中级图片：是否生成Normal文件，即中型图（类似于Yupoo等网站的功能），对于像我这样要传大型图片的使用还是很方便的，在其他论坛分享或者在相册中浏览的时候使用中型图，点击进入才能看到原图，这样速度和效果都能达到最好</li>
<li>中级图片/影片的最大尺寸：我把这里设成了1024，这样直接在论坛贴中型图地址就可以了，很方便</li>
</ul>
<p>　　通过以上的修改，你的CPG应该就可以正常使用了。下一篇将讲解上传、修改和管理图片等日常功能。</p>
<p>Related posts:<ol>
<li><a href='http://blog.williamgates.biz/2011/09/do-not-edit-hosts-of-android-unless-necessary/' rel='bookmark' title='慎改Android的Hosts文件'>慎改Android的Hosts文件</a></li>
<li><a href='http://blog.williamgates.biz/2011/10/how-to-purchase-android-apps-use-i809-at-mainland-china/' rel='bookmark' title='在国行双网机（如i909/i809）上使用Android Market购买app研究小结'>在国行双网机（如i909/i809）上使用Android Market购买app研究小结</a></li>
<li><a href='http://blog.williamgates.biz/2011/11/do-not-and-do-not-edit-hosts-of-android/' rel='bookmark' title='再谈不要乱改Android的hosts文件'>再谈不要乱改Android的hosts文件</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.williamgates.biz/2008/03/coppermine-photo-gallery-02/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>一个优秀的php相册系统——Coppermine Photo Gallery(一)基本介绍</title>
		<link>http://blog.williamgates.biz/2008/02/coppermine-photo-gallery-01/</link>
		<comments>http://blog.williamgates.biz/2008/02/coppermine-photo-gallery-01/#comments</comments>
		<pubDate>Sat, 23 Feb 2008 15:32:24 +0000</pubDate>
		<dc:creator>WG</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[技术心得]]></category>
		<category><![CDATA[CPG]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[技术]]></category>

		<guid isPermaLink="false">http://blog.williamgates.biz/2008/02/23/127</guid>
		<description><![CDATA[　　有了限制较少的虚拟主机，就琢磨着搞一个php的相册系统玩玩。经过在SF上查找比对，找到一个符合我要求的：Coppermine Photo Gallery。 基本架构/系统要求： PHP (4.1.0 or better) MySQL (3.23.23 or better; 4.x recommended) either GD or ImageMagick (any version) 基本特性： 自动生成缩略图、缩略图可设置大小、中型图功能（中等大小的预览图，非常有用） 多种上传方式，可以FTP批量上传再用网页导入，也可以上传压缩包 强大的皮肤、模板和自定义显示功能，页面上每个元素都可以轻松用配置文件修改 相册无限层分类 多用户，权限、组功能 公开、私人相册，密码保护相册 多语言，包括中文 支持多种媒体格式，包括视频 留言、投票、评分系统 对收藏的图片批量打包下载 　　还有重要的一点是较为广泛的用户群，产生了较多的mod、plugin，有些非常有用（这个系列的后续文章会介绍）。 　　我最看重的功能包括批量上传、自定义缩略图大小、中型图功能（对于论坛贴图，贴中型图，链接到原图，是非常好的方式，类似于yupoo等网站的分享功能）、中文界面、多用户（包括权限、组、密码保护相册等）。 　　今天就这么简单一说吧，明天再来详细介绍安装部署和一些修改技巧。大家可以到我的相册photo.williamgates.biz来看看效果 Related posts: 慎改Android的Hosts文件 在国行双网机（如i909/i809）上使用Android Market购买app研究小结 再谈不要乱改Android的hosts文件]]></description>
			<content:encoded><![CDATA[<p>　　有了限制较少的虚拟主机，就琢磨着搞一个php的相册系统玩玩。经过在SF上查找比对，找到一个符合我要求的：<a href="http://coppermine-gallery.net/">Coppermine Photo Gallery</a>。
<ul>基本架构/系统要求：</p>
<li>PHP (4.1.0 or better)</li>
<li>MySQL (3.23.23 or better; 4.x recommended)</li>
<li>either GD or ImageMagick (any version)</li>
</ul>
<ul>基本特性：	</p>
<li>自动生成缩略图、缩略图可设置大小、<strong>中型图功能</strong>（中等大小的预览图，非常有用）</li>
<li>多种上传方式，可以<strong>FTP批量上传</strong>再用网页导入，也可以上传压缩包</li>
<li>强大的<strong>皮肤、模板</strong>和自定义显示功能，页面上每个元素都可以轻松用配置文件修改</li>
<li>相册无限层分类</li>
<li>多用户，权限、组功能</li>
<li>公开、<strong>私人相册，密码保护相册</strong></li>
<li>多语言，包括<strong>中文</strong></li>
<li>支持多种媒体格式，包括视频</li>
<li>留言、投票、评分系统</li>
<li>对收藏的图片批量打包下载</li>
</ul>
<p>　　还有重要的一点是较为广泛的用户群，产生了较多的mod、plugin，有些非常有用（这个系列的后续文章会介绍）。<br />
　　我最看重的功能包括批量上传、自定义缩略图大小、中型图功能（对于论坛贴图，贴中型图，链接到原图，是非常好的方式，类似于yupoo等网站的分享功能）、中文界面、多用户（包括权限、组、密码保护相册等）。<br />
　　今天就这么简单一说吧，明天再来详细介绍安装部署和一些修改技巧。大家可以到我的相册<a href="http://photo.williamgates.biz/">photo.williamgates.biz</a>来看看效果</p>
<p>Related posts:<ol>
<li><a href='http://blog.williamgates.biz/2011/09/do-not-edit-hosts-of-android-unless-necessary/' rel='bookmark' title='慎改Android的Hosts文件'>慎改Android的Hosts文件</a></li>
<li><a href='http://blog.williamgates.biz/2011/10/how-to-purchase-android-apps-use-i809-at-mainland-china/' rel='bookmark' title='在国行双网机（如i909/i809）上使用Android Market购买app研究小结'>在国行双网机（如i909/i809）上使用Android Market购买app研究小结</a></li>
<li><a href='http://blog.williamgates.biz/2011/11/do-not-and-do-not-edit-hosts-of-android/' rel='bookmark' title='再谈不要乱改Android的hosts文件'>再谈不要乱改Android的hosts文件</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.williamgates.biz/2008/02/coppermine-photo-gallery-01/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>再见了,ICP备(五)WordPress的优化、修复、备份和其他技巧</title>
		<link>http://blog.williamgates.biz/2008/02/goodbye-icp-records-05/</link>
		<comments>http://blog.williamgates.biz/2008/02/goodbye-icp-records-05/#comments</comments>
		<pubDate>Fri, 01 Feb 2008 05:09:44 +0000</pubDate>
		<dc:creator>WG</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[技术心得]]></category>
		<category><![CDATA[Blog]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[技术]]></category>

		<guid isPermaLink="false">http://blog.williamgates.biz/2008/02/01/120</guid>
		<description><![CDATA[　　经过前几篇的过程，现在的WordPress已经能正常使用了，但是也许我们还需要进一步优化一下，解决一些问题。 　　一、WordPress的非必要插件 　　主要是指对Blog进行美化或者SEO的插件，我用了以下几个： All in One SEO Pack：通过自动修改你的页面title，自动添加meta等功能来实现搜索引擎优化 Google XML Sitemaps：通过自动生成XML Sitemaps（不仅仅针对Google）而对搜索引擎进行优化 WP-DownloadManager：非常强大的下载管理工具，我最喜欢的功能是可以随意添加服务器上存在的文件进行管理（从而不必通过http上传，FTP上传也可）；生成统一的下载页面等等 　　Blog的人气除了来自于朋友的访问，搜索引擎也是很重要的一点，我的Blog就常年有一半左右的访问来自Google的链接，主要关键字是Squid和百合驿站 :) 　　二、WordPress的复杂化 　　什么是复杂化，看到classicning的blog你就明白了……这里指的就是添加各种widgets，在WordPress 2.3中，通过后台管理方便地添加widgets已经是不需要任何技术的事情，但是你想不想让各网站的widgets以及你blog内置的widgets风格统一？请看几点注意事项： 　　1、内置>Javascript>Flash 　　对于web2.0网站，往往提供Flash和Javascript的widgets，但是由于新版本的Flash浏览器插件的安全设置，一般的嵌入方法会导致出现一层虚框，既影响美观又可能导致页面排版问题，而特殊的嵌入方法不仅麻烦，兼容也可能有一点点小问题。所以尽量使用内置的RSS widget达到你要的效果（如饭否就提供消息的RSS，直接用内置RSS widget读取最好），如果rss不能满足你的需要（例如饭否的“好友信息“，我现在用的就是），或者根本不提供rss（例如豆瓣），非要嵌入该网站自己的widget的时候，请尽量使用Javascript的版本。 　　2、注意网站widget的格式 　　很多网站（例如豆瓣）都提供了自定义widget的功能，这里要注意配置好自己的widget，要和sidebar风格协调统一，例如底色、长宽等。我现在的豆瓣插件就设置成尽量长宽和sidebar协调，看起来比classicning那个就要舒服一些…… 　　3、修改代码让text widget显示图标 　　想像我一样让各个网站的图标显示在WordPress内置的text widget的标题中？请打开wp-includes下的widgets.php文件（建议用WordPress自己的编辑工具），修改这个函数 function wp_widget_text_control($number) 的内容，把 $newoptions&#91;$number&#93;&#91;'title'&#93; = strip_tags&#40;stripslashes&#40;$_POST&#91;&#34;text-title-$number&#34;&#93;&#41;&#41;; 改为 $newoptions&#91;$number&#93;&#91;'title'&#93; = stripslashes&#40;$_POST&#91;&#34;text-title-$number&#34;&#93;&#41;; 把 $title = attribute_escape&#40;$options&#91;$number&#93;&#91;'title'&#93;&#41;; 改为 $title = format_to_edit&#40;$options&#91;$number&#93;&#91;'title'&#93;&#41;; 　　试试看，在text widget的标题中，输入 &#60;img src='你的ico文件地址' /&#62; 你需要的标题（例如 ”WilliamGates的豆瓣”） 　　就可以显示图标了。图标可以通过用FireFox打开该网站，右键点击页面，选”查看页面信息“里面的”媒体“来获得。 　　三、WordPress的修复 [...]]]></description>
			<content:encoded><![CDATA[<p>　　经过前几篇的过程，现在的WordPress已经能正常使用了，但是也许我们还需要进一步优化一下，解决一些问题。</p>
<p>　　一、WordPress的非必要插件<br />
　　主要是指对Blog进行美化或者SEO的插件，我用了以下几个：
<ul>
<li><a href="http://wp.uberdose.com/2007/03/24/all-in-one-seo-pack/">All in One SEO Pack</a>：通过自动修改你的页面title，自动添加meta等功能来实现搜索引擎优化</li>
<li><a href="http://www.arnebrachhold.de/redir/sitemap-home/">Google XML Sitemaps</a>：通过自动生成XML Sitemaps（不仅仅针对Google）而对搜索引擎进行优化</li>
<li><a href="http://lesterchan.net/portfolio/programming.php">WP-DownloadManager</a>：非常强大的下载管理工具，我最喜欢的功能是可以随意添加服务器上存在的文件进行管理（从而不必通过http上传，FTP上传也可）；生成统一的下载页面等等</li>
</ul>
<p>　　Blog的人气除了来自于朋友的访问，搜索引擎也是很重要的一点，我的Blog就常年有一半左右的访问来自Google的链接，主要关键字是Squid和百合驿站 :)</p>
<p>　　二、WordPress的复杂化<br />
　　什么是复杂化，看到<a href="http://www.classicning.com/blog/">classicning</a>的blog你就明白了……这里指的就是添加各种widgets，在WordPress 2.3中，通过后台管理方便地添加widgets已经是不需要任何技术的事情，但是你想不想让各网站的widgets以及你blog内置的widgets风格统一？请看几点注意事项：<br />
<span id="more-120"></span><br />
　　1、内置>Javascript>Flash<br />
　　对于web2.0网站，往往提供Flash和Javascript的widgets，但是由于新版本的Flash浏览器插件的安全设置，一般的嵌入方法会导致出现一层虚框，既影响美观又可能导致页面排版问题，而特殊的嵌入方法不仅麻烦，兼容也可能有一点点小问题。所以尽量使用内置的RSS widget达到你要的效果（如饭否就提供消息的RSS，直接用内置RSS widget读取最好），如果rss不能满足你的需要（例如<a href="http://www.fanfou.com">饭否</a>的“好友信息“，我现在用的就是），或者根本不提供rss（例如<a href="http://www.douban.com">豆瓣</a>），非要嵌入该网站自己的widget的时候，请尽量使用Javascript的版本。</p>
<p>　　2、注意网站widget的格式<br />
　　很多网站（例如豆瓣）都提供了自定义widget的功能，这里要注意配置好自己的widget，要和sidebar风格协调统一，例如底色、长宽等。我现在的豆瓣插件就设置成尽量长宽和sidebar协调，看起来比<a href="http://www.classicning.com/blog/">classicning</a>那个就要舒服一些……</p>
<p>　　3、修改代码让text widget显示图标<br />
　　想像我一样让各个网站的图标显示在WordPress内置的text widget的标题中？请打开wp-includes下的widgets.php文件（建议用WordPress自己的编辑工具），修改这个函数 <code>function wp_widget_text_control($number)</code> 的内容，把</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$newoptions</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$number</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'title'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #990000;">strip_tags</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">stripslashes</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_POST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;text-title-<span style="color: #006699; font-weight: bold;">$number</span>&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>改为</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$newoptions</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$number</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'title'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #990000;">stripslashes</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_POST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;text-title-<span style="color: #006699; font-weight: bold;">$number</span>&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>把</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$title</span> <span style="color: #339933;">=</span> attribute_escape<span style="color: #009900;">&#40;</span><span style="color: #000088;">$options</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$number</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'title'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>改为</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$title</span> <span style="color: #339933;">=</span> format_to_edit<span style="color: #009900;">&#40;</span><span style="color: #000088;">$options</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$number</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'title'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>　　试试看，在text widget的标题中，输入</p>

<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">img</span> <span style="color: #000066;">src</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">'你的ico文件地址'</span> <span style="color: #66cc66;">/</span>&gt;</span> 你需要的标题（例如 ”WilliamGates的豆瓣”）</pre></div></div>

<p>　　就可以显示图标了。图标可以通过用FireFox打开该网站，右键点击页面，选”查看页面信息“里面的”媒体“来获得。</p>
<p>　　三、WordPress的修复<br />
　　昨天<a href="http://www.dlzm.net">DlzM</a>突然告诉我他的blog无法登陆了，进入后台管理就一片空白，页面无输出。我一开始怀疑是UTF8标题的问题（网上搜索都这么说），检查了所有的文件，都是WordPress原版，没有修改的痕迹。在数据库里把blog标题改成英文，也没有效果。DlzM坚持说是他的theme的问题，我就抱着试试看的心理，在数据库里把theme改成了default，没想到真的可以了。<br />
　　国外的很多theme对中文的支持都有问题，而且据说现在开始流行在WordPress Theme中放置恶意代码的阴险行为，所以有人建议大家不要随意下载第三方Theme和Plugin……我的建议是，尽量到这个theme或者plugin的作者网站，或者wordpress.org去下载；下载来之后，看一看head.php里面有没有什么特别的代码，以防万一。</p>
<p>　　四、WordPress的备份<br />
　　有了上次丢数据的惨痛经历，以后决定好好备份WordPress。备份方法有很多种，我推荐这几个一起使用：<br />
　　1、WordPress Database Backup<br />
　　这是一个WordPress的插件，主页在<a href="http://www.ilfilosofo.com/blog/wp-db-backup">www.ilfilosofo.com/blog/wp-db-backup</a>，它会自动加入WordPress的原始表，并且询问你是否要加入统一数据库下面的其他表（主要为其他插件自己建立的表，建议一起备份）；利用WordPress内建的Cron模块，可以定时备份（但有传言说这个功能有Bug，会导致莫名其妙的极高的CPU占用率，慎用）；可以选择备份文件是下载到本地、保存在服务器还是发到邮箱。个人建议手动备份，每个月一次就够了。</p>
<p>　　2、WordPress内建导出功能<br />
　　WordPress自己的导出功能可以导出整个数据库中的文章、留言、分类和Blogroll为一个XML文件（WordPress称之为WXR），基本上和备份数据库差不多了；导入的时候是一个全新的干净的数据库，符合我的数据洁癖；一个特殊的应用是，在进行批量帖子修改（例如前面提到过的批量修改帖子内的链接）时，直接对这个文件进行查找替换就可以了，比数据库的修改要方便，也安全。另外就是编码问题上，比数据库容易修改，毕竟对一个文本文件彻底转编码比对一个数据库转编码要方便（数据库导出时如果就是乱码，很可能再也无法正确导入）。这个功能用起来很方便，建议每周备份。</p>
<p>　　3、phpMyAdmin的备份功能<br />
　　这是最传统的方法，当然还有更传统的Dump命令，省省吧（在我<a href="http://blog.williamgates.biz/2006/11/01/38">以前的文章</a>中提到过用命令的方式导出和导入数据库，特殊情况下必须用那样的方法）。我推荐用WP-phpMyAdmin插件来备份，虽然没有什么理论根据，但实践证明它备份出来的数据库是我以前诸次导入中最容易成功的。这个最麻烦，建议每次升级WordPress的时候备份，备份之后一定要在本地导入试试看，确保不是乱码再动手升级。</p>
<p>　　我知道这篇是这个系列中最没什么营养的……下一篇是IPower空间的一些固有问题和解决方案。</p>
<p>Related posts:<ol>
<li><a href='http://blog.williamgates.biz/2011/10/twitter-app-causes-android-process-acore-error/' rel='bookmark' title='twitter官方客户端导致android联系人功能不能访问'>twitter官方客户端导致android联系人功能不能访问</a></li>
<li><a href='http://blog.williamgates.biz/2011/09/do-not-edit-hosts-of-android-unless-necessary/' rel='bookmark' title='慎改Android的Hosts文件'>慎改Android的Hosts文件</a></li>
<li><a href='http://blog.williamgates.biz/2011/10/how-to-purchase-android-apps-use-i809-at-mainland-china/' rel='bookmark' title='在国行双网机（如i909/i809）上使用Android Market购买app研究小结'>在国行双网机（如i909/i809）上使用Android Market购买app研究小结</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.williamgates.biz/2008/02/goodbye-icp-records-05/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

