快好知 kuaihz

WordPress 最终完美解决文章 固定链接ID 不连续的问题方案

(转自久伴博客)文章 ID 不连续是很多 “强迫症” 博主的烦恼,尤其是使用了文章 ID 作为固定连接之后,每篇文章的 ID 并不连续,非常不好。

从原因来看,文章 ID 不连续主要是因为自动保存的文章、媒体、页面和其它文章类型占用了 ID 导致的,网上的解决方法一般是强制的禁止自动草稿、不在媒体库上传媒体、不建立页面等等,但这种方法会导致使用上的不便利,而且很有局限性。

解决方案

本文说的方法也是治标不治本,但却能比较好的解决链接上的 ID 不连续这个问题。这个方法就是利用别名,自动给文章设置一个别名别名按顺序递增,然后把固定连接设置成别名

批量设置

首先,如果你之前已经有文章了,需要根据顺序重新排列,设置一下别名,从 1 开始递增。批量设置别名可以把下边的代码添加到 functions.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" );

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

https://jiub.ren/?post_id_continuous_query=yes

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

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

文章自动设置

文章设置好了,接下来就要给新文章自动设置别名了,只需要把下边的代码添加到主题的 functions.php 即可:

function Bing_post_id_continuous( $id, $post, $update ){

if( $update || $post->post_status != "publish" ) return;

$action = "save_post_post";

$func = "Bing_post_id_continuous";

remove_action( $action, $func, 10 );

wp_update_post( array(

"ID" => $id,

"post_name" => wp_count_posts()->publish + 1

));

add_action( $action, $func, 10, 3 );

}

add_action( "save_post_post", "Bing_post_id_continuous", 10, 3 );

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

提示

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

 

WordPress文章ID连续及ID重新排列的方法

本站资源来自互联网,仅供学习,如有侵权,请通知删除,敬请谅解!
搜索建议:WordPress  WordPress词条  固定  固定词条  最终  最终词条  连续  连续词条  完美  完美词条