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

WordPress 自動使用文章ID作為別名(slug)

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

最近有朋友一直在問:我使用固定鏈接結構是 %post_id% (ID),但是 WP User Frontend 這個前端用戶中心插件要求必須設置為 %postname% (slug)才能使用,我不想改變以前的文章鏈接地址,該怎么辦?

WordPress 自動使用文章ID作為別名(slug)

本文就是解決這個問題的,讓 WordPress 自動使用文章ID作為別名(slug),也就是說,即使你設置為 %postname% 結構,仍舊可以自動生成 ID 結構的鏈接。或許你會說,修改固定鏈接結構后,原來的那些文章的鏈接變化了,怎么辦?不用擔心,照樣可以解決!進入正題!

為了安全起見,請先備份網站的數據庫,然后再按照下文操作!

更改固定鏈接結構

假設你原來的固定鏈接結構設置為 /%post_id%,現在你可以將它改為 /%postname% ,這時候你會發現,新建文章和老文章都使用文章標題作為別名

批量修改老文章的別名為ID

將下面的代碼添加到網站根目錄的 wp-config.php 的最底部,保存后訪問一次網站首頁(你將看到瀏覽器一直都在努力打開網頁,不要急,耐心等待,直到網頁真正打開,所需時間看文章數和網絡情況而定)。網頁打開后,刪除剛剛添加到 wp-config.php 的代碼!

/**
 * 批量更改舊文章的別名為ID
 * 使用方法:將代碼添加到網站根目錄的 wp-config.php 的最底部,訪問一次網站首頁,等頁面打開后,再刪除這些代碼
 * https://www.wpdaxue.com/wordpress-using-post-id-as-slug.html
 */
// 添加一個變量來包容文章標題數組,防止重復操作
$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
		" );
}

新文章自動使用ID作為別名

將下面的代碼添加到主題的 functions.php ,新建的文章都會自動使用ID作為別名

/**
 * 新文章自動使用ID作為別名
 * 作用:即使你設置固定連接結構為 %postname% ,仍舊自動生成 ID 結構的鏈接
 * https://www.wpdaxue.com/wordpress-using-post-id-as-slug.html
 */
add_action( 'save_post', 'using_id_as_slug', 10, 2 );
function using_id_as_slug($post_id, $post){
	global $post_type;
	if($post_type=='post'){ //只對文章生效
		// 如果是文章的版本,不生效
		if (wp_is_post_revision($post_id))
			return false;
		// 取消掛載該函數,防止無限循環
		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' );
	}
}

參考資料:
http://www.ryankessen.com/50/how-to-mass-change-article-slug-urls-in-wordpress/
http://wordpress.stackexchange.com/questions/51363/


版權聲明:本站所有文章和資源使用CC BY-NC-SA 4.0協議授權發布 , 轉載應當以相同方式注明文章來自“SeaOMC.COM->WordPress 自動使用文章ID作為別名(slug)!在下邊可以分享本文哦!
喜歡 (0)
[]
分享 (0)
奇跡の海
關于作者:
一個WordPress菜鳥!
發表我的評論
取消評論

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

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

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