WordPress发布文章ID不连续纯代码解决方法

详情
评论
问答
赞助

您可以通过搜索或浏览分类列表来找到您期望下载的资源。随后点击资源介绍页右侧的下载链接按钮,依据提示信息进行操作即可。

大部分资源可积分免费下载,为了维持网站的运行小部分资源须付费才能下载。

本站提供的下载资源均为网络搜集,仅供个人学习和交流使用。对于版权问题,请用户自行判断并承担相应责任。

随着时间的推移,维持网站的运行需要支出高昂的服务器和带宽费用。为了能继续坚持免费做下去,如果觉得文章对您有用,希望您能动动发财的小手免费赞助狐狸,给狐狸加油打气!激励狐狸库继续创作下去!谢谢!

在互联网的浩瀚海洋中,我们的网站就像一座明亮的灯塔,为无数用户照亮前行的道路。它承载着知识的传递、梦想的交流,以及大家共同的回忆与期待。然而,运营和维护这样一个网站需要投入大量的心血与资金。

现在,您只需通过支付宝扫码领红包,就能轻松成为我们的赞助人。这不仅是一次简单的支持,更是您与网站共同成长的见证。操作简单,打开支付宝,扫描专属二维码,您的每一份心意都将化作网站发展的动力。

您的赞助,能让网站不断升级,提供更优质的服务,给大家带来更好的体验。让我们携手共进,让这座灯塔绽放更耀眼的光芒,照亮更多人的网络世界 。

下面是免费赞助的方法和流程

  1. 下面图一是本站的支付宝每日领红包二维码,使用支付宝扫描二维码后会自动显示红包金额,有任意小额金额红包。
  2. 点击“去使用”,再扫描第三张图的二维码进行付款即可。
  3. 上面扫到多少红包就输入多少金额,红包会自动抵扣金额,所以不需要额外费用。
  4. 如需赞助自定义金额请到【赞助狐狸】页面进行赞助。
  5. 这个扫码红包是每天都可以领的哦,支持同账号重复,每天花一分钟时间即可免费支持本站!
扫码红包 红包图 扫码支付

WordPress因为历史修订版本(revision)、自动保存(autosave)和自动草稿(auto-draft)功能会非常讨厌的增加文章ID的数字,会造成连续的两篇文章,ID数值可能会相差很多,所以默认情况下发布的文章ID不是连续的,使用ID做为Permalink结构的用户将会看到一个地址越来越混乱的WordPress。让希望文章ID连续的人感到非常不舒服,尤其是使用了文章 ID 作为固定连接之后,每篇文章的 ID 并不连续,非常不好。

除了上述的这些可能造成文章ID不连续外,WordPress还会在“修改文章/页面、添加导航菜单、添加/新建页面、上传的图片/附件(上传新媒体文件)”等情况下占用ID,是造成文章 ID 不连续的罪魁祸首。这种占用没有太好的方法进行解决。

网上的解决方法一般是“禁止/关闭自动草稿及历史修订版本保持文章ID连续的方法”,这种方法能优化数据库,但并没有完全解决文章ID不连续的问题(有时会出现间隔一个ID不连续的问题)。还有,不在媒体库上传媒体、不建立页面等等,但这种方法会导致使用上的不便利,而且很有局限性。所以,本文将介绍一个完美解决WordPress文章ID不连续问题的两种方法。

方法一:重新排列不连续的文章ID

编辑当前主题目录下 functions.php 文件,在php结束标记 ?> 前添加以下PHP代码,这样如果你只是单纯发文章,不发页面,不添加菜单,不上传媒体的话,基本上此后的文章ID是连续的,而且不改变之前已经发布的文章ID,不影响SEO

// WordPress解决文章ID不连续
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' );
 
//禁用文章自动保存
add_action( 'admin_print_scripts', create_function( '$a', "wp_deregister_script('autosave');" ) );
//禁用文章修订版本
add_filter( 'wp_revisions_to_keep', 'fanly_wp_revisions_to_keep', 10, 2 );
function fanly_wp_revisions_to_keep( $num, $post ) { return 0;}

方法二:利用“别名”保持文章ID连续的方法

解决方案:利用别名,自动给文章设置一个别名,别名按顺序递增,然后把固定连接设置成别名。

一、批量设置别名

1、首先,如果你之前已经有文章了,需要根据顺序重新排列,设置一下别名,从 1 开始递增。批量设置别名:把下边的代码添加到当前主题目录下 functions.php 文件,在php结束标记 ?> 前 即可。

// 批量设置别名,此代码使用完后不需要删除,之后还可能用到
function Bing_post_id_continuous_query(){
set_time_limit( 0 );
remove_action( 'publish_post', 'Bing_post_id_continuous' );
query_posts( 'posts_per_page=-1' );
$arr = array();
while( have_posts() ){
the_post();
$post_id = $GLOBALS['post']->ID;
$arr[] = $post_id;
}
wp_reset_query();
$arr = array_reverse( $arr );
$i = 1;
foreach( $arr as $post_id ){
wp_update_post( array(
'ID' => $post_id,
'post_name' => $i++
) );
}
}
if( $_GET['post_id_continuous_query'] == 'yes' && current_user_can( 'level_10' ) ) add_action( 'init', 'Bing_post_id_continuous_query' );

2、然后,访问下边的地址,注意替换成你的域名(访问时需以管理员身份登录才会执行):

http://www.huliku.com?post_id_continuous_query=yes

文章多的话网页加载会很慢,耐心等待加载完,加载好后,别名也就批量设置好了。

PS:此代码用完之后不用删除,留着之后有可能还需要用。

二、新文章自动设置别名

老文章设置好了,接下来就要给新文章自动设置别名了,只需要把下边的代码添加到到当前主题目录下 functions.php 文件,在php结束标记 ?> 前 即可。

// WordPress新文章自动使用“发布文章的数量”作为别名
function Bing_post_id_continuous( $id, $post, $update ){
if( $update || $post->post_status != 'publish' ) return;
$action = 'save_post';
$func = 'Bing_post_id_continuous';
remove_action( $action, $func, 10 );
wp_update_post( array(
'ID' => $id,
'post_name' => wp_count_posts()->publish
));
add_action( $action, $func, 10, 2 );
}
add_action( 'save_post', 'Bing_post_id_continuous', 10, 2 );

添加好后,每发布一篇文章,别名都会自动设置成当前发布文章的数量加 1.

三、修改固定链接

添加完代码之后,需要在后台的 “设置” → “固定连接” → “自定义结构”选项 里设置一下固定连接,把 ID 改成别名,也就是把固定连接里的 /%post_id%.html 改成/%postname%.html

PS:如果因为删除、更新或者其它原因导致文章的 “ID” 不连续了,可以使用上边的那个批量设置的代码重新归位。

注意事项

第二种设置别名方法慎用,如果你的网站已经大量收录的情况下肯定没有必要用这种方法。因为每篇文章的路径和ID都是固定的且已经被收录。如果修改了文章的路径,那么百度数据库存储的已经收录的文章则全部不能访问,就造成了大量的死链接。为了SEO考虑最好不要将ID重新排列,直接将文章别名设置为文章ID。如果你的网站是新网站或者文章收录量较少的情况下,修改即可。

利用插件实现文章ID连续的方法

安装插件 WP Clean Up (将下载的插件包上传到wp-content/plugins/目录下进行安装并启用),只要不定期的去清除这些相关数据,那么文章ID连续性就不会有非常大的不连续。数值不会很大,最多就间隔几个。同时此插件还可以优化数据库表。

删除或不上传不必要的附件

相信很多博友在发布文章的时候为了增加页面的丰富性都会同时上传插入一些附件,如图像、视频、音乐、下载文件等,(至少会在文章中插入相匹配的一些元素来丰富文章的阅读性)这些附件可以在WordPress管理后台中的媒体库看到,不同媒体对应了不同的文章。而这些媒体也是占据着文章ID造成文章ID不连续的原因之一,它们与文章都保存在同一个数据库表wp_posts中。如果我们特别追求文章的ID一定要完美无缺地连续,那最好的建议就是请不要在发布文章的时候上传/插入这些媒体,并请在WordPress管理后台中的媒体库删除之前上传的媒体(注意这个操作不只是删除记录,而且会删除你上传的文件),需要的话通过 FTP 重新上传这些附件不会占用ID的。尽量不要上传多余的或者用处不大的等不必要的附件即可。


温馨提示:本文最后更新于2023/07/03 21:20:04。若文章内容或图片失效,请留言联系站长反馈!
© 版权声明
THE END
点赞0赞赏 分享
评论 抢沙发

请登录后发表评论

    请登录后查看评论内容