天天看點

php 文章id連續,WordPress完美解決文章ID不連續的方法

php 文章id連續,WordPress完美解決文章ID不連續的方法

WordPress有個比較讨厭的功能,就是預設情況下釋出的文章ID不是連續的,使用ID做為Permalink結構的使用者将會看到一個位址越來越混亂的WordPress,之前很多方法都是要修改WordPress代碼,導緻一更新WordPress,修改就會失效,現在我給一個解決WordPress的ID不連續的完美方法,即使WordPress更新,也不會導緻該方法失效。

找到目前主題目錄,在主題目錄下到檔案functions.php,将下述代碼添加到檔案裡面。

這樣如果你隻是單純發文章,不發頁面,不添加菜單,不上傳媒體的話,基本上此後的文章ID是連續的,而且不改變之前已經釋出的文章ID,不影響SEO。

// WordPress連續ID,禁用草稿功能函數開始

function keep_id_continuous(){

global $wpdb;

$lastID = $wpdb->get_var("SELECT ID FROM $wpdb->posts WHERE post_status = 'publish' OR post_status = 'draft' OR post_status = 'private' OR ( post_status = 'inherit' AND post_type = 'attachment' ) ORDER BY ID DESC LIMIT 1");

$wpdb->query("DELETE FROM $wpdb->posts WHERE ( post_status = 'auto-draft' OR ( post_status = 'inherit' AND post_type = 'revision' ) ) AND ID > $lastID");

$lastID++;

$wpdb->query("ALTER TABLE $wpdb->posts AUTO_INCREMENT = $lastID");

}

// 将函數鈎在建立文章、上傳媒體和自定義菜單之前。

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');" ) );

// 禁用修訂版本

remove_action( 'pre_post_update' , 'wp_save_post_revision' );

// WordPress連續ID,禁用草稿功能函數結束

// 使WordPress在原生編輯器(tiny)下發表文章時,不去除空格

add_filter('tiny_mce_before_init', 'preserve_nbsp_chars');

function preserve_nbsp_chars($initArray) {

$initArray['entities'] = '160,nbsp,'.$initArray['entities'];

return $initArray;

}

php 文章id連續,WordPress完美解決文章ID不連續的方法