WordPress修改文章ID不连续的方法

WordPress有个比较讨厌的功能,就是默认情况下发布的文章ID不是连续的,使用ID做为Permalink结构的用户将会看到一个地址越来越混乱的WordPress,之前很多方法都是要修改WordPress代码,导致一升级WordPress,修改就会失效,现在我给一个解决WordPress的ID不连续的完美方法,即使WordPress升级,也不会导致该方法失效。

找到当前主题目录,在主题目录下到文件functions.php,将下述代码添加到文件里面。

这样如果你只是单纯发文章,不发页面,不添加菜单,不上传媒体的话,基本上此后的文章ID是连续的,而且不改变之前已经发布的文章ID,不影响SEO。

// WordPress连续ID,禁用草稿功能函数开始

function keep_id_continuous(){
global $wpdb;
$lastID = $wpdb->get_var("SELECT ID FROM $wpdb->posts WHERE post_status = 'publish' OR post_status = 'draft' OR post_status = 'private' OR ( post_status = 'inherit' AND post_type = 'attachment' ) ORDER BY ID DESC LIMIT 1");
$wpdb->query("DELETE FROM $wpdb->posts WHERE ( post_status = 'auto-draft' OR ( post_status = 'inherit' AND post_type = 'revision' ) ) AND ID > $lastID");
$lastID++;
$wpdb->query("ALTER TABLE $wpdb->posts AUTO_INCREMENT = $lastID");
}
// 将函数钩在新建文章、上传媒体和自定义菜单之前。
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' );
// 禁用自动保存,所以编辑长文章前请注意手动保存。
add_action( 'admin_print_scripts', create_function( '$a', "wp_deregister_script('autosave');" ) );
// 禁用修订版本
remove_action( 'pre_post_update' , 'wp_save_post_revision' );

// WordPress连续ID,禁用草稿功能函数结束

// 使WordPress在原生编辑器(tiny)下发表文章时,不去除空格
add_filter('tiny_mce_before_init', 'preserve_nbsp_chars');
function preserve_nbsp_chars($initArray) {
$initArray['entities'] = '160,nbsp,'.$initArray['entities'];
return $initArray;
}

时间: 2024-07-31 05:24:34

WordPress修改文章ID不连续的方法的相关文章

wordpress中修改文章ID sql语句

UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值 将ID为3368的文章修改为189  代码如下 复制代码 update wp_posts set id = 3368 where id = 189; update wp_term_relationships set object_id = 3368 where object_id = 189; update wp_postmeta set post_id = 3368 where post_id = 189; upda

WordPress文章ID不连续和关闭自动保存关闭解决办法

第一步:找到并打开 wp-config.php 文件,在 $table_prefix  = 'wp_';  前面添加如下代码:  代码如下 复制代码 define('AUTOSAVE_INTERVAL', false ); //自动保存时间 define('WP_POST_REVISIONS', false); //修定版本开启/关闭 第二步:找到并打开 wp-adminpost-new.php 和 wp-adminpost.php 这两个文件,将其 "wp_enqueue_script('au

WordPress获取当前文章ID的方法

方法一 直接输出文章ID  代码如下 复制代码 1.<?php the_ID(); ?>  获取文章ID不输出  代码如下 复制代码 1.<?php  get_the_ID(); ?>  方法二 直接获取当前文章ID  代码如下 复制代码 1.$post->ID  需要输出则echo一下  代码如下 复制代码 1.<?php echo $post->ID; ?>  话说谷歌的确好使,就是GFW老作怪而已. 单个页面适用  代码如下 复制代码 <?php

完美实现wordpress禁止文章修订和自动保存的方法_php实例

使用Wordpress这么久一直很讨厌wordpress的文章修订和自动保存功能,也使用过超级开关插件可以禁止wordpress文章修订和自动保存功能,但是自己博客的插件已经够多的了,只好通过修改wordpress主程序来实现禁止文章修订和自动保存功能.但是这种方法有个不好的地方就是,每次wordpress升级,就得再改动一次wordpress源码,实在是很麻烦的.今天无意中撞到了ZWW博客上发现这个非插件免修改源码实现wordpress禁止文章修订和自动保存的方法,分享给大家吧! 使用方法很简

WordPress年度月度文章排行的显示方法

月度文章排行的显示方法 1.把以下代码添加到你主题文件的 functions.php 里面.  代码如下 复制代码 function most_comm_posts($days=7, $nums=10) { //$days参数限制时间值,单位为'天',默认是7天:$nums是要显示文章数量  global $wpdb;  $today = date("Y-m-d H:i:s"); //获取今天日期时间  $daysago = date( "Y-m-d H:i:s",

WordPress 实现文章或面页内容太长分页的方法

WordPress系统是内置分页功能的,要实现它极其简单,只需要在你想要分页的地方加入下面的代码即可(注意,是在文本编辑模式下): <!?nextpage?> 但还有一个问题.要让这个代码真正能够实现其分页功能,还需要你所使用的Wordpress主题支持,Wordpress的默认主题是支持的,如果你的主题不支持,那解决方法也很简单,找到你主题文件内的 single.php 里的下面这行代码: <?php the_content(); ?> 在这段代码下面加上: <?php w

有朋友问了数据库ID不连续,怎么获取上一篇和下一篇的文章?(不是所有情况都适用)

呃 (⊙o⊙)-,逆天好久没写SQL了,EF用的时间长了,SQL都不怎么熟悉了......[SQL水平比较菜,大牛勿喷] 方法很多种,说个最常见的处理   因为id是自增长的,所以一般情况下下一篇文章的ID都是大于当前文章ID的(guid的主键不适合这种方法,不根据创建时间排序的不适合[博客园文章都是根据创建时间]) EF的写法:(参考) 有其他约束的可以往上加(比如文章不能被标记为删除等) var articleOne = ArticleService.PageLoad(a => a.Id <

wordpress rest api 漏洞又来了CVE-2017-5487 上次是修改文章内容这次可是泄露用户数据

在2月份的时候, wordpress rest api 曾经爆出过越权漏洞 ,结果是黑客可以修改文章内容.3月3日,REST API又出现了越权漏洞,成功的利用这个漏洞,可以绕过管理员权限泄露用户数据. CVE-2017-5487影响范围 影响版本WordPress 4.7.0,目前poc已经在exploitdb上公开 https://www.exploit-db.com/exploits/41497/ POC看起来比较简单,就是调用了wordpress的rest api接口进行users查询

WordPress实现文章关键词自动内链的方法 插件/非插件

关于 WordPress 网站内链的优化的实现方法,有一款很著名的Auto Tags Link插件就可以解决这个问题,但是WordPress不适合过多的使用插件,所以这里才提供了一个代码版的,大家将以下代码添加到当前主题的functions.php文件中就可以了. // WordPress文章关键词自动内链 $match_num_from = 3;    //一个标签少于几次不链接 $match_num_to = 1;    //一个标签最多链接几次 function tag_sort($a,