WordPress 固定链接设置 & 文章ID 完美连续

2015年删删删……删了不少垃圾,把固定链接也修改了,改成 /%post_id% 形式,虽然用 /%postname%.html 形式虽然更直观,理论上更有利于 SEO,但是费劲,并且文章 URL 可能很长……

折腾 WordPress 文章ID 完美连续

其实没必要折腾,如果确实需要折腾,可以参考一下露兜的教程「WordPress完美解决文章ID不连续问题」。

题外话,2015折腾的时候还进入 phpMyAdmin 把 wp_comments 给清空了。不过这样只是把评论全部清空了,文章/页面虽然一条评论都没有了,但是评论总数没有清空,运行一下下面的 SQL 语句就可以了。(操作数据库前记得先备份!!!)

UPDATE wp_posts SET comment_count = 0;

附上露兜解决文章 ID 不连续的方法,以备不时之需。

WordPress 禁用文章修订版

wp-config.php 文件中添加代码:

define('WP_POST_REVISIONS', false);

WordPress 禁用自动保存

在当前主题 functions.php 中添加以下代码:

// 禁用自动保存,编辑长文章前请注意手动保存。
add_action( 'admin_print_scripts', create_function( '$a', "wp_deregister_script('autosave');" ) );

WordPress 删除文章修订版

在 phpMyAdmin 中执行以下 SQL 语句(会影响置顶文章,慎用!执行前做好备份)即可。

DELETE a,b,c
FROM wp_posts a
LEFT JOIN wp_term_relationships b ON (a.ID = b.object_id)
LEFT JOIN wp_postmeta c ON (a.ID = c.post_id)
WHERE a.post_type = 'revision';

WordPress 让旧文章 ID 重新排序

注意:如果你使用了置顶文章、菜单或者父子页面等功能,下面方法失效。

把下面的代码保存为 ID_Update.php,根据实际修改数据库信息「如数据表前缀不是 wp_ ,请根据实际修改好」,然后将该 PHP 文件上传至博客根目录,打开一下 https://cyhour.com/ID_Update.php,看到 OK 就可以了。

特别提醒:开始之前请先备份你的数据库。如果改使用 post id 作为固定链接,会改变所有文章链接,会影响搜索引擎收录(SEO);如果你用的插件建立了新的数据库表,如投票插件等,也将会出现问题;如果你的博客中创建了父子关系的页面,运行了以下脚本将会失去此关系。请慎用!

<?php
/**
* WordPress重新排列不连续的文章ID
* 作者 :Ludou
* 相关文章:http://www.ludou.org/wordpress-post-id-continuous.html
* 最后修改:2010年10月01日
*/

$hostname_blog = "localhost";
$database_blog = "数据库名称";
$username_blog = "数据库用户名";
$password_blog = "数据库密码";
$blog = mysql_pconnect($hostname_blog, $username_blog, $password_blog) or trigger_error(mysql_error(),E_USER_ERROR);

$no = 1;

function change_id($id)
{
global $no;
// 修改post id,并修改分类、标签、自定义字段、评论的对应关系
$sql = 'update wp_posts set ID = '.$no.' where ID = '.$id;
mysql_query($sql);
$sql = 'update wp_term_relationships set object_id = '.$no.' where object_id = '.$id;
mysql_query($sql);
$sql = 'update wp_postmeta set post_id = '.$no.' where post_id = '.$id;
mysql_query($sql);
$sql = 'update wp_comments set comment_post_ID = '.$no.' where comment_post_ID = '.$id;
mysql_query($sql);
$no = $no + 1;
}

mysql_select_db($database_blog, $blog);
$query_postRecord = "SELECT ID FROM wp_posts ORDER BY ID ASC";
$all_postRecord = mysql_query($query_postRecord);
$row_postRecord = mysql_fetch_assoc($all_postRecord);

do {
change_id( $row_postRecord['ID'] );
} while ($row_postRecord = mysql_fetch_assoc($all_postRecord));

// 重新设置post id自增起点
mysql_query('alter table wp_posts AUTO_INCREMENT = '.$no);
echo 'ok';
?>

WordPress 调整文章/页面 guid 和 postname

因为文章、页面链接变了,根据实际情况调整文章/页面 guid 和文章 postname。老头是让文章/页面的 guid 和文章的 postname 与其 ID 一致,执行下面的 SQL 语句即可。

update wp_posts set guid = concat('http://cyhour.com/?p=',ID) where post_status = 'publish'and post_type = 'post';
update wp_posts set guid = concat('http://cyhour.com/?page_id=',ID) where post_status = 'publish'and post_type = 'page';
update wp_posts SET post_name = REPLACE( post_name, post_name, ID ) WHERE post_type = 'post';

另一个方法:批量修改老文章的别名为 ID

温馨提示:操作前先备份!!!

将下面的代码添加到网站根目录 wp-config.php 最底部,保存后访问一次网站首页(你将看到浏览器一直都在努力打开网页,不要急,耐心等待,直到网页真正打开,所需时间看文章数和网络情况而定),网页打开后,删除刚刚添加到 wp-config.php 的代码!

// 添加一个变量来包容文章标题数组,防止重复操作
$slug_done = array();
// 查询所有文章
$posts = $wpdb->get_results("SELECT ID, post_title FROM ". $wpdb->posts ." WHERE post_type = 'post' ");
// 输出文章
foreach( $posts AS $single ) {
$this_slug = $single->ID;
$slug_done[] = $this_slug;
// 使用文章ID替换文章原来的别名
$wpdb->query("UPDATE " . $wpdb->posts . " SET post_name = '". $this_slug ."' WHERE ID = '" . $single->ID . "' LIMIT 1 ");
}

WordPress 让新发布文章 ID 基本连续

在当前主题的 functions.php 中加入以下 PHP 代码,这样如果只是单纯发文章,不发页面,不添加菜单,不上传媒体的话,此后发布的文章 ID 基本上是连续的,而且不改变之前已经发布的文章ID。

// WordPress 4.2.3 目测有效
function keep_id_continuous(){
global $wpdb;

// 删掉自动草稿和修订版
$wpdb->query("DELETE FROM `$wpdb->posts` WHERE `post_status` = 'auto-draft' OR `post_type` = 'revision'");

// 自增值小于现有最大ID,MySQL会自动设置正确的自增值
$wpdb->query("ALTER TABLE `$wpdb->posts` AUTO_INCREMENT = 1");
}

add_filter( 'load-post-new.php', 'keep_id_continuous' );
add_filter( 'load-media-new.php', 'keep_id_continuous' );
add_filter( 'load-nav-menus.php', 'keep_id_continuous' );

新文章自动使用 ID 作为别名 postname

来源:WordPress 大学

/**
* 新文章自动使用ID作为别名postname
* 作用:即使你设置固定连接结构为 %postname% ,仍旧自动生成 ID 结构的链接
*/
add_action( 'save_post', 'using_id_as_slug', 10, 3 );
function using_id_as_slug($post_id, $post, $update){
if( $post->post_type !='post' || wp_is_post_revision($post_id) ) return;
// 取消挂载该函数,防止无限循环
remove_action('save_post', 'using_id_as_slug' );
// 使用文章ID作为文章的别名
wp_update_post(array('ID' => $post_id, 'post_name' => $post_id ));
// 重新挂载该函数
add_action('save_post', 'using_id_as_slug', 10, 3 );
}

WordPress 文章ID 完美连续

前面的方法并不能保证 WordPress 文章ID 完美连续,强迫症可以用张戈博客障眼大法来实现 WordPress 文章 ID 看起来完美连续,缺点是每次发布文章需手工设置 ID

思路:固定链接设置为 /%postname% 形式;然后写文章时,将文章别名设置为阿拉伯数字形式,并且和上下文保持连续即可

至于以前文章的链接,根据个人实际情况处理,如果不纠结旧文章 ID 是否连续和要考虑 SEO 的话,旧文章 ID 不作处理。如果纠结,可以用前面的方法先把旧文章 ID 处理为连续。然后运行下面的 SQL 语句,将旧文章 postname 更改为文章 ID 即可。

update wp_posts SET post_name = REPLACE( post_name, post_name, ID ) WHERE post_type = 'post';

WordPress 固定链接如何设置比较理想?

最重要一点:自己的博客自己做主,喜欢怎么样就怎么样设置!

除非注明,垃圾站文章均为网络收集,本文地址 https://cyhour.com/198/,转载时烦请以链接形式注明原始出处。
声明:我们不销售主机,任何VPS主机均有跑路风险且需定期备份,防止数据丢失。信息以实际为准,评测仅供参考不代表权威!
🍄:Netflix 奈飞 YouTube 合租

WordPress 数据库常用 SQL 语句

WordPress 数据库存储了站点所有信息,数据库对站点来说至关重要,一般情况下不要折腾数据库。但是很多情况下,使用 SQL 语句批量修改站点内容,大大提高效率。下面 SQL 语句均收集自网络,操作需谨慎。所有的SQL语句都是假定你的数据库的前缀是"wp_" ,如果你使用不同的表前缀,请自行修改。 温馨…
浏览: 44 标签:  ,  , 

Bitcron 初体验

去年看 UNEE 博主 Bitcron 体验文 的时候就申请过邀请码,不过发了两次邮件都没要到邀请码。反正也只是体验一下,也就作罢了。 Farbox 很久以前开始用 Farbox,当然了,一直只是试用状态程度的试用。比如现在还在用:参观一下。Bitcron 很像 Farbox,前者可以看作是后者的升级版? 从 FarBox…
浏览: 112 标签:  ,  , 

WordPress 文章 tag 标签使用 ID 形式固定链接

WordPress 设置中可以设定使用 post_id 作为文章/页面「固定链接」形式,但是无法设置文章 tag 标签也使用 ID 形式固定链接。 WordPress 文章 tag 标签的固定链接默认使用标签的别名,如果标签没有设置别名,并且标签名字带中文,那么固定链接就会带有中文,然后被 urlencode 转义成类似下面的…
浏览: 25 标签:  ,  ,  , 

希捷 西数 东芝 SMR 叠瓦式硬盘完整列表 硬盘购买指南

CMR(Conventional Magnetic Recording)又称作 PMR(Perpendicular Magnetic Recording)垂直写入技术,这是传统硬盘技术。SMR(Shingled Magneting Recording),叠瓦式记录技术,可以提高储存数据资料密度,从而提高硬盘储存容量。 SMR 叠瓦式硬盘优势在于大容量、低价格(性价比更高),缺点是…
浏览: 150 标签:  ,  , 

Comments:45

  1. 这算强迫症+处女座?

    2015.07.29 05:59 # 回复
    1楼
  2. 从来都没有注意过文章cid不连贯的问题,懒得去改了。

    2015.07.29 06:44 # 回复
    2楼
  3. 1,
    我嫌页面里的评论杂七杂八太乱,是干脆删掉评论显示(就是看不到,也无法再留言,但是原有的评论也还是会在)

    2,
    至于日记编号连贯与否……我觉得不连贯挺好,就当是随机数。

    2015.07.29 12:06 # 回复
    3楼
    • @Betty
      1、我是嫌以前刚开始的评论太乱了,又懒得一个一个清理,干脆以前的评论全部清空了。至于不想有评论的页面直接关掉评论功能或者在模板就把它去掉了。

      2、连不连贯这个纯属强迫症了。

      2015.07.29 13:18 # 回复
  4. 垃圾站-博文公爵
    博文公爵

    原来强迫症是这么折腾的。请教老杨:折腾博客的前提是不是得懂像HTML5,CSS,JS之类的计算机语言?

    2015.07.29 15:18 # 回复
    4楼
    • @博文公爵 得有点计算机语言基础吧,像我折腾博客前就只有点大学时候学的 C 语言基础,不懂的问度娘问 Google,Firebug 调试……折腾多了,有些东西就会了。当然,要想精通那是得认真学了。

      2015.07.29 15:28 # 回复
      • 博文公爵

        @老杨 哦!我现在高中刚毕业,还不懂这个,看来真得下工夫啊!感觉老杨人很好,我会常来逛的,多交流,希望做朋友哈!谢谢老杨!

        2015.07.29 15:38 # 回复
        • @博文公爵 不客气,有空常来。才高中毕业就会折腾博客了,年轻有为啊,我们那时候高中毕业都还没摸几次电脑呢。慢慢学吧,不过博客最重要的还是内容。

          2015.07.29 15:44 # 回复
  5. 说不定某个宫是处女座

    2015.07.29 19:40 # 回复
    5楼
  6. 垃圾站-bigfa
    bigfa

    我手动调成从70000开始了。。

    2015.07.29 20:35 # 回复
    6楼
    • @bigfa 不早说呢,要是我想到这个,说不定也会跳到某个数字开始呢,现在不折腾了,下午人肉修改了好多文章引用的链接了。

      2015.07.29 22:19 # 回复
  7. 居然要修改所有文章的ID,这真不是一般的强迫症!其实ID不连续也有好处的

    2015.07.29 22:06 # 回复
    7楼
    • @随望淡思 确实强迫症了,有好有坏吧。另外因为页面和菜单关系,现在也只是基本连续而已。

      2015.07.29 22:16 # 回复
  8. 长也不介意了,用ID虽然简洁但不明

    2015.07.30 13:39 # 回复
    8楼
    • @Dzing 曾经我就是因为 ID 看起来呆呆的,不能知道大概内容才换成了 postname 形式的,现在又倒回来了!

      2015.07.30 14:43 # 回复
  9. 挺能折腾的,据阿钧说ID间隔大是因为修订版本太多造成的,是这样吗?

    2015.07.30 18:55 # 回复
    9楼
    • @方室网志 嗯,自动保存的修订版本是造成 ID 不连续的一个原因,另外页面、菜单、多媒体图片附件也会占用 ID。

      2015.07.30 19:40 # 回复
  10. 绝对是强迫症哈哈……
    我绝对不会删comments的,多少年的回忆啊!从MSN时代就有的

    2015.07.31 00:23 # 回复
    10楼
    • @老虎 文章删了,评论也是能删除的,就是有点可惜了。其实可以人工删除的,就是太费时费力了,懒得折腾,一清了之…

      2015.07.31 00:40 # 回复
  11. 这是疯了吗???

    2015.07.31 11:56 # 回复
    11楼
  12. 一个数字就行,好直接了。

    2015.08.02 17:03 # 回复
    12楼
    • @wys.me 嗯,postname 虽能传义,但是好多时候都会整得老长,直接几个数字短短的也挺好的。

      2015.08.02 17:06 # 回复
  13. 数字不连续对于一个处女座的来说这就如屏幕上的坏点

    2015.08.04 11:09 # 回复
    13楼
  14. 真能折腾,我还是用postname吧,不习惯数字ID了。

    2015.08.11 23:26 # 回复
    14楼
  15. 我能不能说你也是能折腾的,哈哈

    2015.08.24 21:00 # 回复
    15楼
  16. 太折腾了,其实我更喜欢那种%postname%形式,在我打开页面之前差不多就知道写的是什么内容了。

    2015.09.01 23:14 # 回复
    16楼
    • @zhiwei 我以前也是这么想的,所以从 id 转为 name 了,但是每次发文章都得翻译,很多时候翻译得又不准确,有时候还老长老长的……然后就又转回 id 了,省事!

      2015.09.02 00:16 # 回复
  17. 长了有点不习惯 另外 版权声明:本站原创文章,于1个月前,由老杨发表,共 3555字。 这个好棒

    2015.09.02 12:26 # 回复
    17楼

发表留言

Vultr 送$100,搬瓦工年付最低$49,优惠码 BWH3HYATVBJW,更多推荐VPS信息