Поскольку Haibor имеет некоторую концепцию управления идентификаторами и любит простые и понятные вещи, меня очень расстраивает функция автоматического сохранения черновиков в новой версии WordPress. Это приводит к большому количеству ненужной траты идентификаторов журналов и делает идентификаторы журналов прерывистыми. избавьтесь от этой функции! !
Позвольте мне сначала объяснить ситуацию: разрыв идентификатора в основном вызван тремя функциями: одна — это функция автоматического сохранения Auto-Save, вторая — историческая версия Post Revisions, а третья — функция автоматического черновика Auto-Draft! В зависимости от разных версий WordPress решения разные! Пожалуйста, выберите соответствующее решение!
Версии до WordPress 3.1 (исключая 3.1):
1. Откройте файл wp-config.php и добавьте следующий код перед «$table_prefix = 'wp_';»:
define('WP_POST_REVISIONS', ложь);
define('AUTOSAVE_INTERVAL', ложь);
2. Найдите и откройте два файла wp-adminpost-new.php и wp-adminpost.php и прокомментируйте или удалите «wp_enqueue_script('autosave');».
//wp_enqueue_script('автосохранение');
3. Найдите и откройте файл wp-adminincludespost.php, найдите «if ($create_in_db) {» и добавьте перед ним следующую строку:
$create_in_db = ложь;
WordPress 3.1 и более поздние версии (включая 3.1):
Начиная с версии 3.1, в программу внесены изменения в функцию автоматического черновика. На третьем этапе описанного выше метода появится сообщение об отсутствии разрешения на операцию при публикации статей в фоновом режиме!
Прежде всего, нам следует выполнить шаги 1 и 2 описанного выше метода, чтобы реализовать отключение функции автосохранения и функции публикации исторических версий. Далее давайте попробуем разобраться с отключением функции авточерновика!
Поскольку третий шаг в приведенном выше методе недействителен, вы больше не можете добавлять код $create_in_db = false. В настоящее время функция публикации статьи работает нормально, но пока вы нажимаете «Добавить новую статью», независимо от того, работает ли она. редактируете ли вы статью или нет, если вы не нажмете «Сохранить» в конце или не нажмете «Сохранить как черновик» (например, напрямую закрыв страницу редактирования), программа по умолчанию автоматически добавит невидимый автоматический журнал черновиков с заголовком. «Авто-черновик» и статус «авто-черновик», и можно использовать только phpmyadmin для извлечения данных из базы данных. Удалить! Поэтому, если у вас нет хорошей идеи для блога, не нажимайте кнопку, чтобы легко добавить новую статью!
Ниже приведены два довольно идеальных решения. Основной код взят из папки «Ожидание» на компьютере. Источник не найден. Спасибо партии, Интернету и оригинальному автору. Здесь я организую и улучшу его и поделюсь со всеми. На этом этапе пользователи, не имеющие удостоверения личности, могут сразу перейти к комментариям ниже, ха-ха! !
Примечание. Количество строк, указанное ниже, основано на версии WordPress 3.2.
Вариант 1. Измените невидимый автоматический черновик на видимый черновик журнала черновиков.
Обращаясь к шагу 3 выше, найдите и откройте файл wp-adminincludespost.php, найдите «if ($create_in_db) {» и найдите примерно 423 строки:
$post_id = wp_insert_post( array( 'post_title' => __( 'Авточерновик'), 'post_type' => $post_type, 'post_status' => 'авточерновик'));
Измените приведенный выше код на:
$post_id = wp_insert_post( array( 'post_title' => __( 'Автоматический черновик'), 'post_type' => $post_type, 'post_status' => 'черновик'));
Совет: это решение не предотвращает автоматическое создание черновиков при нажатии «Добавить новую статью», но в этот момент создается журнал черновиков, который можно увидеть в списке статей, и вы можете нажать его, чтобы отредактировать! Конечно, если вы нажмете кнопку «Добавить новую статью» несколько раз, будет создано несколько черновиков журналов, что не очень приятно, ха-ха!
Вариант 2. Принцип состоит в том, чтобы получить самый ранний автоматический черновик и использовать его в качестве текущей статьи. Это позволяет сохранить непрерывность идентификаторов статей на основе исходной функции автоматического черновика и удалить функцию автоматического удаления черновиков 7 дней назад.
По-прежнему найдите и откройте файл wp-adminincludespost.php, найдите «if ($create_in_db) {» и найдите строки с 418 по 427:
если ($create_in_db) {
// Очистка старых автоматических черновиков старше 7 дней назад
$old_posts = $wpdb->get_col( "ВЫБЕРИТЕ ID ИЗ $wpdb->posts WHERE post_status = 'auto-draft' AND DATE_SUB( NOW(), INTERVAL 7 DAY ) > post_date" );//Удалить автоматические черновики 7 дней назад
foreach ((массив) $old_posts как $delete)
wp_delete_post($delete, true); // Принудительное удаление;
$post_id = wp_insert_post( array( 'post_title' => __( 'Авточерновик'), 'post_type' => $post_type, 'post_status' => 'авточерновик'));
$post = get_post($post_id);
if ( current_theme_supports('post-formats') && post_type_supports($post->post_type, 'post-formats') && get_option('default_post_format') )
set_post_format($post, get_option('default_post_format'));
} еще {
Заменить на
если ($create_in_db) {
global $current_user;//Получить текущего пользователя управления входом в систему
$post = $wpdb->get_row( "SELECT * FROM $wpdb->posts WHERE post_status = 'auto-draft' AND post_type = '$post_type' AND post_author = $current_user->ID ORDER BY ID ASC LIMIT 1" ); //Получаем самый ранний автоматический черновик
если ( !$пост ) {
$post_id = wp_insert_post( array( 'post_title' => __( 'Авточерновик'), 'post_type' => $post_type, 'post_status' => 'авточерновик'));
$post = get_post($post_id);
}
if ( current_theme_supports('post-formats') && post_type_supports($post->post_type, 'post-formats') && get_option('default_post_format') )
set_post_format($post, get_option('default_post_format'));
} еще {
Принцип второго варианта был объяснен выше. Пожалуйста, прочитайте его с комментариями к коду, если он вам нужен. Решение второго варианта заключается в том, что если в базе данных уже есть невидимый автоматический журнал черновиков, то при нажатии кнопки «Добавить новую статью» новые статьи не будут генерироваться автоматически. Вместо невидимых автоматических черновиков непосредственно вызывается самый ранний невидимый черновик как запись базы данных, необходимая для текущей статьи. В то же время, чтобы избежать разрыва идентификатора, оператор кода «удалить автоматические черновики». старше 7 дней» удаляется. !
Хорошо, присаживайтесь, если вам нужна детская обувь. Если у вас есть предложения или вопросы получше, оставьте сообщение для обмена.
Оригинал этой статьи принадлежит Nuodou. Не удаляйте ссылку на эту статью при ее перепечатке: http://www.nuodou.com/item/622.html .
Спасибо Хайбору за ваш вклад