WEB主題公園
WordPress原創(chuàng)主題,高端網(wǎng)站模板建站,網(wǎng)站模板建站資源以及開發(fā)知識分享,盡在WEB主題公園
WEB主題公園致力于開發(fā)適合中國人習慣的中文WordPress網(wǎng)站模板,并提供全程視頻教程,讓您能夠輕松的使用網(wǎng)站模板建立好自己的網(wǎng)站!
WP更新文章使用數(shù)字ID鏈接保持連續(xù)性的方法
wordpress的數(shù)字ID固定連接,以及不連續(xù)性的問題所出現(xiàn)的問題
wordpress的有幾種固定鏈接的方式,而在中文網(wǎng)站中,我們推薦的是使用數(shù)字鏈接的方式,
因為數(shù)字鏈接是比較簡短的url,而在網(wǎng)站的搜索引擎優(yōu)化中,url的長度是不推薦使用超過75個字符的。
wordpress的固定連接是在wordpress后臺--設(shè)置--固定連接里面進行設(shè)置的:

一般來說,我們只做偽靜態(tài)連接,是使用數(shù)字型,并加上html的后綴,因此在自定義結(jié)構(gòu)中填寫/%post_id%.html
這樣顯示出來的url就是數(shù)字型的偽靜態(tài)固定連接了。
但是wordpress的機制有一個特點,那么就是頁面(page)和附件(你在文章中上傳的圖片、壓縮包、以及其他文件統(tǒng)稱為附件)都會占用一個wordpress的文章ID
wordpress還有一個自動保存機制和草稿機制,自動保存機制會在你每次編輯時,保存一個修訂版本,
草稿機制是在你未發(fā)布文章時,也會自動保存草稿,
自動保存機制和草稿機制都會自動的占用一個文章的id。
綜上所述,頁面、附件、修訂版本和草稿都會占用文章的id,這就會導(dǎo)致你的文章id并不會保持連續(xù)性,
比如發(fā)布第一篇文章ID為1,第二篇文章可能ID就是7了。
這樣的不連續(xù)有的用戶覺得會不太完美,希望得到一個連續(xù)性的id文章url。
通過自動保存數(shù)字別名,而使用ID作為wordpress文章的url
上面所說的機制,我們就算將修訂版本和草稿完全禁止,也無法禁止附件所占用的id,因此ID的連續(xù)性如果使用數(shù)字鏈接模式,是無論如何也無法實現(xiàn)的。
除非你的文章不上傳任何圖片和其他附件,而這顯而易見是不太可能的。
因此,在網(wǎng)上找到的最終解決方法,實際上也是一個替代方法,就是使文章別名(每一篇文章和頁面都會有別名,別名只能是英文或者數(shù)字),自動生成連續(xù)性的數(shù)字,
以此來強制達到連續(xù)性id的效果(雖然是一種掩耳盜鈴的替代方案,但是也是可以解決這個問題的,對于完全無法忍受ID不連續(xù)的用戶,可以嘗試使用這個方案)。
將一下代碼放入你的主題function.php中(WEB主題公園的用戶可以放入function/function_z.php中):
function post_id_sulg_lx( $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', 'post_id_sulg_lx', 10, 3 );
放入進去之后,你新產(chǎn)生的文章就會自動將別名作為數(shù)字id存在了
如果你在此之前已經(jīng)產(chǎn)生了很多文章,也需要變成數(shù)字型
特別注意:如果你的文章已經(jīng)被收錄,網(wǎng)站已經(jīng)有了不錯的排名,那么不建議任何改變固定連接的方法!如果你之前的文章時使用英文的別名,那么使用上面的代碼對新產(chǎn)生的文章有效就行了,舊文章就不要進行任何變動了,否則會造成大量404頁面,造成搜索引擎降權(quán)!
代碼如下:
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' );
放入代碼之后,你需要登陸管理員賬戶,并執(zhí)行如下命令:
你的域名/?post_id_continuous_query=yes
這樣就能批量執(zhí)行,將所有的文章別名修改為數(shù)字了,如果文章較多執(zhí)行的時間會比較長。
最后,你需要確保你的固定連接顯示的是別名連接(文章名),在自定義固定連接中填寫/%postname%.html即可:

這樣就能夠完成解決連續(xù)性數(shù)字固定連接的問題了,雖然不是真實的文章ID,但是也是可以連續(xù)性的。
使用這樣的方式也有一定的好處,比如如果你安裝了一些插件進行的拓展功能,
需要使用到文章的ID,(比如將文章變?yōu)樯唐?,那么需要文章的ID進行查詢相關(guān)信息),這樣的方式可以避免文章的id被泄露。
如未標明出處,所有文章均為WEB主題公園原創(chuàng),如需轉(zhuǎn)載,請附上原文地址,感謝您的支持和關(guān)注。
本文地址:http://www.dengyin90.cn/wpgxwzsyszidljbclxxa.html
推薦閱讀
- 2013年5月7日
- 2016年9月3日
- 2017年9月11日
- 2017年1月14日
- 2016年12月14日
- 2015年7月28日
- 2013年12月13日
- 2024年12月25日
- 2013年6月9日




