• 歡迎訪問奇跡の海網站,本站不上傳任何資源,所有資源均來自于網絡,歡迎加入奇跡の海~!奇跡の海-WordPress QQ群
  • 本站下載資源為網絡上收集整理而來,并且以計算機技術研究交流為目的,版權歸原作者所有,僅供大家參考,學習,不存在任何商業目的與商業用途.
  • 本站系統鏡像均來自于官方原版,ed2k可視為P2P下載鏈接。所有操作系統默認均為試用版,如有正版密鑰可以有效激活,本站不提供任何激活和相關服務。

WordPress 最終完美解決文章 固定鏈接ID 不連續的問題方案

WP其他 奇跡の海 2年前 (2017-12-05) 971次瀏覽 已收錄 0個評論 掃描二維碼

方法簡介

文章 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' );

然后訪問下邊的地址,注意替換成你的域名(訪問時需以管理員身份登錄):

http://example.com?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 改成別名,也就是把固定連接里的 post_id 改成postname
WordPress 最終完美解決文章 固定鏈接ID 不連續的問題方案
WordPress 最終完美解決文章 固定鏈接ID 不連續的問題方案
如果因為刪除、更新或者其它原因導致文章的 “ID” 不連續了,可以使用上邊的那個批量設置的代碼重新歸位。
只有2000多篇文章但是ID卻破萬了,太恐怖了!必需得終止了。不過逍遙樂為了SEO考慮沒有將ID重新排列,直接將文章ID設置為文章別名。

方法如下:

首先把下邊的代碼放到主題的 functions.php里:

function Bing_post_name_id(){
	query_posts( 'posts_per_page=-1' );
	while( have_posts() ){
		the_post();
		$post_id = $GLOBALS['post']->ID;
		wp_update_post( array(
			'ID' => $post_id,
			'post_name' => $post_id
		) );
	}
	wp_reset_query();
}
if( $_GET['post_name_id'] == 'yes' ) add_action( 'init', 'Bing_post_name_id' );

放置好代碼后,訪問一下下邊的網站,訪問前注意一定要備份數據,以免出錯。
文章多的話網頁加載會比較慢,因為正在一篇文章一篇文章的修改別名,要耐心等到網頁完全加載好才可以。
加載好后,刪除之前添加的代碼,修改完成,所有文章的別名都會變成自身的 ID.


版權聲明:本站所有文章和資源使用CC BY-NC-SA 4.0協議授權發布 , 轉載應當以相同方式注明文章來自“SeaOMC.COM->WordPress 最終完美解決文章 固定鏈接ID 不連續的問題方案!在下邊可以分享本文哦!
喜歡 (0)
[]
分享 (0)
奇跡の海
關于作者:
一個WordPress菜鳥!
發表我的評論
取消評論

表情 貼圖 加粗 刪除線 居中 斜體 簽到

Hi,您需要填寫昵稱和郵箱!

  • 昵稱 (必填)
  • 郵箱 (必填)
  • 網址
中国福利彩票36选7开奖结果