Étant donné que Haibor a une certaine notion de contrôle des identifiants et aime les choses claires et simples, je suis très frustré par la fonction de sauvegarde automatique des brouillons de la nouvelle version de WordPress. Elle entraîne beaucoup de gaspillage d'identifiants de journal et rend les identifiants de journal discontinus. débarrassez-vous de cette fonction! !
Laissez-moi d'abord vous expliquer la situation : la discontinuité de l'ID est principalement causée par trois fonctions. L'une est la fonction de sauvegarde automatique Auto-Save, la seconde est la version historique après les révisions et la troisième est la fonction de brouillon automatique Auto-Draft ! Basées sur différentes versions de wordpress, les solutions sont différentes ! Veuillez sélectionner la solution correspondante !
Versions antérieures à wordpress 3.1 (hors 3.1) :
1. Ouvrez le fichier wp-config.php et ajoutez le code suivant devant "$table_prefix = 'wp_';" :
définir('WP_POST_REVISIONS', false);
définir('AUTOSAVE_INTERVAL', false);
2. Recherchez et ouvrez les deux fichiers wp-adminpost-new.php et wp-adminpost.php, et commentez ou supprimez "wp_enqueue_script('autosave');".
//wp_enqueue_script('autosave');
3. Recherchez et ouvrez le fichier wp-adminincludespost.php, recherchez « if ($create_in_db) { » et ajoutez la ligne suivante avant :
$create_in_db = faux ;
WordPress 3.1 et versions ultérieures (dont 3.1) :
Depuis la version 3.1, le programme a apporté des modifications à la fonction de brouillon automatique. La troisième étape de la méthode ci-dessus entraînera un message indiquant qu'il n'y a aucune autorisation d'opération lors de la publication d'articles en arrière-plan !
Tout d'abord, nous devons suivre les étapes 1 et 2 de la méthode ci-dessus pour réaliser la désactivation de la fonction de sauvegarde automatique et de la fonction de révision de la version historique. Ensuite, essayons de gérer la désactivation de la fonction de rédaction automatique !
Étant donné que la troisième étape de la méthode ci-dessus n'est pas valide, vous ne pouvez plus ajouter le code $create_in_db = false Pour le moment, la fonction de publication d'article est normale, mais tant que vous cliquez sur "Ajouter un nouvel article", peu importe. que vous modifiez l'article ou non, tant que vous ne cliquez pas sur Enregistrer à la fin ou sur Enregistrer comme brouillon (par exemple en fermant directement la page d'édition), le programme ajoutera automatiquement un journal de brouillon automatique invisible par défaut, avec le titre. "Auto-Draft" et le statut "auto-draft", et ne peut utiliser que phpmyadmin pour extraire les données de la base de données Supprimer ! Par conséquent, si vous n’avez pas une bonne idée de blog, ne cliquez pas pour ajouter un nouvel article facilement !
Deux solutions assez parfaites sont proposées ci-dessous. Le code de base provient d'un dossier nommé "En attente" sur l'ordinateur. Merci à la partie, à Internet et à l'auteur original ! Ici, je vais l'organiser, l'améliorer et le partager avec tout le monde. À ce stade, les utilisateurs non-contrôleurs d'identité peuvent accéder directement aux commentaires ci-dessous haha ! !
Remarque : Le nombre de lignes mentionné ci-dessous est basé sur la version WordPress 3.2.
Option 1 : remplacez le brouillon automatique invisible par un brouillon de journal visible.
En vous référant à l'étape 3 ci-dessus, recherchez et ouvrez le fichier wp-adminincludespost.php, recherchez "if ($create_in_db) {" et recherchez environ 423 lignes :
$post_id = wp_insert_post( array( 'post_title' => __( 'Auto Draft' ), 'post_type' => $post_type, 'post_status' => 'auto-draft' ) );
Remplacez le code ci-dessus par :
$post_id = wp_insert_post( array( 'post_title' => __( 'Auto Draft' ), 'post_type' => $post_type, 'post_status' => 'draft' ) );
Astuce : Cette solution n'empêche pas la création automatique de brouillons lorsque vous cliquez sur « Ajouter un nouvel article », mais ce qui est créé à ce moment est un journal des brouillons qui peut être vu dans la liste des articles, et vous pouvez cliquer pour le modifier ! Bien sûr, si vous cliquez plusieurs fois pour ajouter un nouvel article, plusieurs brouillons de journaux seront générés, ce qui n'est pas très agréable, haha !
Option 2 : Le principe est d'obtenir le brouillon automatique le plus ancien et de l'utiliser comme article actuel. Cela peut maintenir la continuité des identifiants d'article sur la base de la fonction de brouillon automatique d'origine et supprimer la fonction de suppression des brouillons automatiques il y a 7 jours.
Recherchez et ouvrez toujours le fichier wp-adminincludespost.php, recherchez "if ($create_in_db) {" et recherchez les lignes 418 à 427 :
si ( $create_in_db ) {
// Nettoyage des anciens brouillons automatiques datant de plus de 7 jours
$old_posts = $wpdb->get_col( "SELECT ID FROM $wpdb->posts WHERE post_status = 'auto-draft' AND DATE_SUB( NOW(), INTERVAL 7 DAY ) > post_date" );//Supprimer les brouillons automatiques il y a 7 jours
foreach ( (tableau) $old_posts comme $delete )
wp_delete_post( $delete, true ); // Forcer la suppression
$post_id = wp_insert_post( array( 'post_title' => __( 'Auto Draft' ), 'post_type' => $post_type, 'post_status' => 'auto-draft' ) );
$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' ) );
} autre {
Remplacer par
si ( $create_in_db ) {
global $current_user;//Obtenir l'utilisateur actuel de gestion des connexions
$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" ); //Obtenir le premier brouillon automatique
si ( !$post ) {
$post_id = wp_insert_post( array( 'post_title' => __( 'Auto Draft' ), 'post_type' => $post_type, 'post_status' => 'auto-draft' ) );
$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' ) );
} autre {
Le principe de la deuxième option a été expliqué ci-dessus. Veuillez le lire avec les commentaires du code si vous en avez besoin. La solution pour la deuxième option est que si la base de données dispose déjà d'un brouillon automatique invisible, alors lorsque vous cliquez pour ajouter un nouvel article, les nouveaux articles ne seront pas générés automatiquement. Au lieu des brouillons automatiques invisibles, le premier brouillon invisible est directement appelé comme enregistrement de base de données requis pour l'article actuel. En même temps, afin d'éviter la discontinuité de l'ID, l'instruction de code « supprimer les brouillons automatiques ». datant de plus de 7 jours" est supprimé. !
D'accord, veuillez vous asseoir si vous avez besoin de chaussures pour enfants. Si vous avez de meilleures suggestions ou questions, veuillez laisser un message pour échanger !
Cet article est original de Nuodou. Veuillez ne pas supprimer le lien vers cet article lors de sa réimpression : http://www.nuodou.com/item/622.html .
Merci à Haibor pour votre contribution