王国伟

2013年7月31日 来自 王国伟.com

如果你的WordPress固定链接使用的是%post_id%,那么你应该会为乱七八糟不连续的ID发过愁。当然我看大多数人的固定链接不是拼音就是翻译的一长串字母,这样有利于SEO,但是给人看着总觉得不怎么简洁。不得不承认,很多人都有这样的“洁癖”,包括我也有。

如果你按照以前的方法禁用文章修订版,禁用自动保存什么的,实际上你会发现用的过程中也不是那么完美,而且实现的过程也很复杂。其实换个思路,何必要让ID连续呢,访客又看不见真实的ID,访客看见的是固定链接啊。况且自动保存,修订版本什么的也并不是完全无用的鸡肋,例如写博时停个电,或者不小心改错了什么的,它们就派上大用场了啊。

那么也就是说,直接让固定链接连续就可以了。方法就简单多了,固定链接设置为%postname%,然后一篇篇文章慢慢改去吧,哈哈……

好吧好吧,送上自用的自动连续固定链接的代码。

2016-02-29 update:

2016-03-11 update:Bug修复

  1. function fun_Permalink($slug){  
  2. if ($slugreturn $slug;  
  3. global $wpdb,$post_ID;   
  4. $fun_postdb = $wpdb->get_row(“SELECT post_name,ID FROM {$wpdb->posts} WHERE  post_type = ‘post’ AND post_status <> ‘auto-draft’ ORDER BY ID DESC”);  
  5. $fun_postname = $fun_postdb ->post_name;  
  6. if ($post_ID == $fun_postdb ->ID) return $fun_postname;  
  7. elseif (preg_match(“/^\d+$/”,$fun_postname)) return $fun_postname + 1;  
  8. else return $slug;  
  9. };  
  10. add_filter(‘name_save_pre’, ‘fun_Permalink’,0);  

2016-02-29 update:

使用方法:

1.先把全部文章的post_name手动改为正整数,至少最后一篇必须改,确保最后一篇的post_name是最大的。

2.然后把上面的代码放进functions.php就可以了。

原理是在写新文章时,查找上一篇已发布文章的post_name,加1,然后返回给图中黄色字的位置,就是这么简单。

20130730152522

当然了,最新文章的post_name一定要是数字才能开始用。至于使用这个方法之前已发布的文章,那就只能自己想办法改咯,不在本文讨论范围内,哈哈。

ps:本人php渣,如有bug希望及时反馈。