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 固定链接如何设置比较理想?
最重要一点:自己的博客自己做主,喜欢怎么样就怎么样设置!
这算强迫症+处女座?
@土木坛子 强迫症吧,不是处女座呢。
从来都没有注意过文章cid不连贯的问题,懒得去改了。
@Fatears 哈哈,其实这个真的无所谓,我有点强迫症了吧。
@老头 严重强迫症,哈哈
@Page 原谅我吧…
1,
我嫌页面里的评论杂七杂八太乱,是干脆删掉评论显示(就是看不到,也无法再留言,但是原有的评论也还是会在)
2,
至于日记编号连贯与否……我觉得不连贯挺好,就当是随机数。
@Betty
1、我是嫌以前刚开始的评论太乱了,又懒得一个一个清理,干脆以前的评论全部清空了。至于不想有评论的页面直接关掉评论功能或者在模板就把它去掉了。
2、连不连贯这个纯属强迫症了。
原来强迫症是这么折腾的。请教老头:折腾博客的前提是不是得懂像HTML5,CSS,JS之类的计算机语言?
@博文公爵 得有点计算机语言基础吧,像我折腾博客前就只有点大学时候学的 C 语言基础,不懂的问度娘问 Google,Firebug 调试……折腾多了,有些东西就会了。当然,要想精通那是得认真学了。
@老头 哦!我现在高中刚毕业,还不懂这个,看来真得下工夫啊!感觉老头人很好,我会常来逛的,多交流,希望做朋友哈!谢谢老头!
@博文公爵 不客气,有空常来。才高中毕业就会折腾博客了,年轻有为啊,我们那时候高中毕业都还没摸几次电脑呢。慢慢学吧,不过博客最重要的还是内容。
说不定某个宫是处女座
@蠢蛋小丑魚 谁?好像没有呢。
@老头 说不定你的某个宫(譬如月亮宫)是处女座
@蠢蛋小丑魚 好深奥的样子…
我手动调成从70000开始了。。
@bigfa 不早说呢,要是我想到这个,说不定也会跳到某个数字开始呢,现在不折腾了,下午人肉修改了好多文章引用的链接了。
居然要修改所有文章的ID,这真不是一般的强迫症!其实ID不连续也有好处的
@随望淡思 确实强迫症了,有好有坏吧。另外因为页面和菜单关系,现在也只是基本连续而已。
长也不介意了,用ID虽然简洁但不明
@Dzing 曾经我就是因为 ID 看起来呆呆的,不能知道大概内容才换成了 postname 形式的,现在又倒回来了!
挺能折腾的,据阿钧说ID间隔大是因为修订版本太多造成的,是这样吗?
@方室网志 嗯,自动保存的修订版本是造成 ID 不连续的一个原因,另外页面、菜单、多媒体图片附件也会占用 ID。
绝对是强迫症哈哈……
我绝对不会删comments的,多少年的回忆啊!从MSN时代就有的
@老虎 文章删了,评论也是能删除的,就是有点可惜了。其实可以人工删除的,就是太费时费力了,懒得折腾,一清了之…
@老头 博客的生命变幻莫测,好歹给它过生日的时候搞一下年终总结吧(整理归档)!
@方室网志 说起这个,还真得给它定个官方的生日呢。
@老头 看你归档里最早的一篇是12年8月3日的。我博客的生日就是第一篇文章发布的时间!哈哈
@方室网志 看归档的不准的,最开始的文章被我删除掉了。
@方室网志
博客的生日活生生的终于被我定下来了,欢迎围观:http://cyhour.com/1
这是疯了吗???
@World 哈哈,愧不如你啊…
一个数字就行,好直接了。
@wys.me 嗯,postname 虽能传义,但是好多时候都会整得老长,直接几个数字短短的也挺好的。
数字不连续对于一个处女座的来说这就如屏幕上的坏点
@leyaep 不是处女座的飘过…
真能折腾,我还是用postname吧,不习惯数字ID了。
@灵尘子 嗯,这个真的不重要。强迫症发作而已。
我能不能说你也是能折腾的,哈哈
@安满 哈哈,生命不息,折腾不止…
太折腾了,其实我更喜欢那种%postname%形式,在我打开页面之前差不多就知道写的是什么内容了。
@zhiwei 我以前也是这么想的,所以从 id 转为 name 了,但是每次发文章都得翻译,很多时候翻译得又不准确,有时候还老长老长的……然后就又转回 id 了,省事!
长了有点不习惯 另外 版权声明:本站原创文章,于1个月前,由老头发表,共 3555字。 这个好棒
@晨曦 棒啥?忽略那些蛋疼的统计吧。