Dado que Haibor tiene algún concepto de control de ID y le gustan las cosas limpias y simples, estoy muy frustrado con la función de guardado automático de borradores de la nueva versión de WordPress. Causa un gran desperdicio de ID de registro y, por lo tanto, los ID de registro son discontinuos. ¡Deshazte de esta función! !
Permítanme explicar la situación primero: la discontinuidad de ID se debe principalmente a tres funciones. Una es la función de guardado automático Auto-Save, la segunda es la versión histórica de Publicar revisiones y la tercera es la función de borrador automático Auto-Draft. Según diferentes versiones de WordPress, ¡las soluciones son diferentes! ¡Seleccione la solución correspondiente!
Versiones anteriores a wordpress 3.1 (excluyendo 3.1):
1. Abra el archivo wp-config.php y agregue el siguiente código delante de "$table_prefix = 'wp_';":
definir('WP_POST_REVISIONS', falso);
define('AUTOSAVE_INTERVAL', falso);
2. Busque y abra los dos archivos wp-adminpost-new.php y wp-adminpost.php, y comente o elimine "wp_enqueue_script('autosave');".
//wp_enqueue_script('autoguardado');
3. Busque y abra el archivo wp-adminincludespost.php, busque "if ($create_in_db) {" y agregue la siguiente línea antes:
$create_in_db = falso;
WordPress 3.1 y versiones posteriores (incluida la 3.1):
Desde la versión 3.1, el programa ha realizado cambios en la función de borrador automático. El tercer paso del método anterior generará un mensaje de que no hay permiso de operación al publicar artículos en segundo plano.
En primer lugar, debemos seguir los pasos 1 y 2 del método anterior para desactivar la función de guardado automático y la función de revisiones posteriores de la versión histórica. A continuación, intentemos solucionar la desactivación de la función de borrador automático.
Dado que el tercer paso del método anterior no es válido, ya no puede agregar el código $create_in_db = false. En este momento, la función de publicación del artículo es normal, pero siempre que haga clic en "Agregar nuevo artículo", no importa si. Edite el artículo o no, siempre que no haga clic en Guardar al final o haga clic en Guardar como borrador (como cerrar directamente la página de edición), el programa agregará automáticamente un registro de borrador automático invisible de forma predeterminada, con el título. "Borrador automático" y el estado "borrador automático", y solo puede usar phpmyadmin para extraer datos de la base de datos. Por lo tanto, si no tienes una buena idea para un blog, ¡no hagas clic para agregar un nuevo artículo fácilmente!
A continuación se ofrecen dos soluciones bastante perfectas. El código básico proviene de una carpeta llamada "Pendiente" en la computadora. No se puede encontrar la fuente. ¡Gracias a la parte, a Internet y al autor original! Aquí lo organizaré, lo mejoraré y lo compartiré con todos. En este punto, los usuarios que no tienen control de identificación pueden ir directamente a los comentarios a continuación, ¡jaja! !
Nota: La cantidad de líneas que se mencionan a continuación se basa en la versión 3.2 de WordPress.
Opción 1: cambiar el borrador automático invisible a un borrador de registro de borrador visible.
Consultando el paso 3 anterior, busque y abra el archivo wp-adminincludespost.php, busque "if ($create_in_db) {" y busque aproximadamente 423 líneas:
$post_id = wp_insert_post( array( 'post_title' => __( 'Borrador automático' ), 'post_type' => $post_type, 'post_status' => 'borrador automático' ) );
Cambie el código anterior a:
$post_id = wp_insert_post( array( 'post_title' => __( 'Borrador automático' ), 'post_type' => $post_type, 'post_status' => 'borrador' ) );
Consejo: esta solución no impide la creación automática de borradores cuando hace clic en "Agregar nuevo artículo", pero lo que se crea en este momento es un registro de borrador que se puede ver en la lista de artículos y puede hacer clic para editar. Por supuesto, si hace clic para agregar un nuevo artículo varias veces, se generarán varios borradores de registros, lo cual no es muy bueno, ¡jaja!
Opción 2: el principio es obtener el borrador automático más antiguo y usarlo como artículo actual. Esto puede mantener la continuidad de los ID de artículos según la función de borrador automático original y eliminar la función de eliminar borradores automáticos hace 7 días.
Aún así busque y abra el archivo wp-adminincludespost.php, busque "if ($create_in_db) {" y busque las líneas 418 a 427:
si ($create_in_db) {
// Limpiar borradores automáticos antiguos de más de 7 días
$old_posts = $wpdb->get_col( "SELECT ID FROM $wpdb->posts WHERE post_status = 'auto-draft' AND DATE_SUB( NOW(), INTERVAL 7 DAY ) > post_date" );//Eliminar borradores automáticos hace 7 días
foreach ((matriz) $publicaciones_antiguas como $eliminar)
wp_delete_post( $eliminar, verdadero ); // Forzar eliminación
$post_id = wp_insert_post( array( 'post_title' => __( 'Borrador automático' ), 'post_type' => $post_type, 'post_status' => 'borrador automático' ) );
$ publicación = get_post ($ publicación_id);
if ( current_theme_supports( 'post-formatos' ) && post_type_supports( $post->post_type, 'post-formatos' ) && get_option( 'default_post_format' ) )
set_post_format( $publicación, get_option( 'default_post_format' ) );
} demás {
Reemplazar con
si ($create_in_db) {
global $current_user;//Obtener el usuario de administración de inicio de sesión actual
$post = $wpdb->get_row( "SELECCIONAR * DESDE $wpdb->posts DONDE post_status = 'auto-draft' AND post_type = '$post_type' AND post_author = $current_user->ID ORDER BY ID ASC LIMIT 1" ); //Obtener el borrador automático más antiguo
si (! $ publicación) {
$post_id = wp_insert_post( array( 'post_title' => __( 'Borrador automático' ), 'post_type' => $post_type, 'post_status' => 'borrador automático' ) );
$ publicación = get_post ($ publicación_id);
}
if ( current_theme_supports( 'post-formatos' ) && post_type_supports( $post->post_type, 'post-formatos' ) && get_option( 'default_post_format' ) )
set_post_format( $publicación, get_option( 'default_post_format' ) );
} demás {
El principio de la opción dos se explicó anteriormente, léalo con los comentarios del código si lo necesita. La solución a la opción dos es que si la base de datos ya tiene un registro de borrador automático invisible, cuando haga clic para agregar un nuevo artículo, Los nuevos artículos no se generarán automáticamente. En lugar de borradores automáticos invisibles, el primer borrador invisible se llama directamente como el registro de la base de datos requerido para el artículo actual. Al mismo tiempo, para evitar la discontinuidad de ID, la declaración del código "eliminar borradores automáticos". más de 7 días" se elimina. !
Bien, tome asiento si necesita zapatos para niños. Si tiene mejores sugerencias o preguntas, ¡deje un mensaje para intercambiar!
Este artículo es original de Nuodou. No elimine el enlace a este artículo al reimprimirlo: http://www.nuodou.com/item/622.html .
Gracias a haibor por tu aporte.