让WordPress的私有文章(private post)所属的tags和categories显示出来

PHP, 技术心得 5 Comments »

  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( $terms ) {
	global $wpdb;
 
	foreach ( (array) $terms as $term ) {
		$count = $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(*) FROM $wpdb->term_relationships, $wpdb->posts WHERE $wpdb->posts.ID = $wpdb->term_relationships.object_id AND post_status = 'publish' AND post_type = 'post' AND term_taxonomy_id = %d", $term ) );
		$wpdb->update( $wpdb->term_taxonomy, compact( 'count' ), array( 'term_taxonomy_id' => $term ) );
	}
}

  看起来似乎在 post_status = 'publish' 后面加一个 OR post_status = 'private' 就行了,但实际上没效果。为什么呢?这是往数据库中写的时候用来计数的,不是用来显示的;当我们已经有private post,修改这里并不会让本来被认为是空着的tag和category变得有数字。
Read the rest of this entry »

WordPress+WP-SuperCache之中文tag的Permalink问题全解析

Linux, PHP, 技术心得 2 Comments »

  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。于是,我们只能寻找绕路的方法。
Read the rest of this entry »

修改了Blog的permalink

灌水胡诌 1 Comment »

  正如你所看到的,RSS阅读器里那些过去的按PostID标识的链接已经不起作用;现在的链接全都是年份+月份+PostName的格式。这也是搜索引擎最喜欢的格式。其实我一直都记得修改每一篇文章的PostSlug,然而我一直羞于自己的英文水平,不敢拿出来。经过前几天对于中文tag的折腾,现在我想通了,还是用英文链接最好,那么多米国人用这种链接模式,也都是口语化的,随便几个不能凑成一句话的词也行,比如我这篇的PostName就很口语化。
  至于搜索引擎以前收录的页面可能也不能访问,各位朋友指向我某篇文章的链接可能也不能访问,管我啥事。

LilyStudio & WordPress & N.Design Studio
Entries RSS Comments RSS Log in