Da Haibor ein gewisses Konzept zur ID-Kontrolle hat und saubere und einfache Dinge mag, bin ich sehr frustriert über die Funktion zum automatischen Speichern von Entwürfen der neuen Version von WordPress. Sie verursacht eine Menge Verschwendung von Protokoll-IDs und macht die Protokoll-IDs daher diskontinuierlich. Werde diese Funktion los! !
Lassen Sie mich zunächst die Situation erklären: Die ID-Diskontinuität wird hauptsächlich durch drei Funktionen verursacht. Eine ist die automatische Speicherfunktion Auto-Save, die zweite ist die historische Version Post Revisions und die dritte ist die automatische Entwurfsfunktion Auto-Draft! Basierend auf verschiedenen WordPress-Versionen sind die Lösungen unterschiedlich! Bitte wählen Sie die entsprechende Lösung aus!
Versionen vor WordPress 3.1 (außer 3.1):
1. Öffnen Sie die Datei wp-config.php und fügen Sie den folgenden Code vor „$table_prefix = 'wp_';“ ein:
define('WP_POST_REVISIONS', false);
define('AUTOSAVE_INTERVAL', false);
2. Suchen und öffnen Sie die beiden Dateien wp-adminpost-new.php und wp-adminpost.php und kommentieren oder löschen Sie „wp_enqueue_script('autosave');“.
//wp_enqueue_script('autosave');
3. Suchen und öffnen Sie die Datei wp-adminincludespost.php, suchen Sie nach „if ($create_in_db) {“ und fügen Sie die folgende Zeile davor ein:
$create_in_db = false;
WordPress 3.1 und spätere Versionen (einschließlich 3.1):
Seit Version 3.1 hat das Programm Änderungen an der automatischen Entwurfsfunktion vorgenommen. Der dritte Schritt in der obigen Methode führt zu einer Meldung, dass beim Veröffentlichen von Artikeln im Hintergrund keine Betriebserlaubnis vorliegt!
Zunächst sollten wir die Schritte 1 und 2 in der obigen Methode befolgen, um die Deaktivierung der Funktion „Auto-Save“ und der Funktion „Post Revisions“ für historische Versionen zu realisieren. Als nächstes versuchen wir, die Deaktivierung der Funktion „Auto-Draft“ zu bewältigen.
Da der dritte Schritt in der obigen Methode ungültig ist, können Sie den Code $create_in_db = false nicht mehr hinzufügen. Zu diesem Zeitpunkt ist die Artikelveröffentlichungsfunktion normal, solange Sie jedoch auf „Neuen Artikel hinzufügen“ klicken Ob Sie den Artikel bearbeiten oder nicht, solange Sie am Ende nicht auf „Speichern“ klicken oder auf „Als Entwurf speichern“ klicken (z. B. indem Sie die Bearbeitungsseite direkt schließen), fügt das Programm standardmäßig automatisch ein unsichtbares automatisches Entwurfsprotokoll mit dem Titel hinzu „Auto-Draft“ und der Status „Auto-Draft“ und kann phpmyadmin nur zum Extrahieren von Daten aus der Datenbank verwenden. Wenn Sie also keine gute Blog-Idee haben, klicken Sie nicht, um einfach einen neuen Artikel hinzuzufügen!
Nachfolgend finden Sie zwei ziemlich perfekte Lösungen. Der Basiscode stammt aus einem Ordner mit dem Namen „Pending“. Die Quelle kann nicht gefunden werden. Vielen Dank an die Partei, das Internet und den ursprünglichen Autor. Hier werde ich es organisieren und verbessern und mit allen teilen. An dieser Stelle können Benutzer ohne ID-Kontrolle direkt zu den Kommentaren unten springen, haha! !
Hinweis: Die unten genannte Anzahl der Zeilen basiert auf der WordPress-Version 3.2.
Option 1: Ändern Sie den unsichtbaren automatischen Entwurf in einen sichtbaren Entwurfsprotokollentwurf.
Suchen und öffnen Sie unter Bezugnahme auf Schritt 3 oben die Datei wp-adminincludespost.php, suchen Sie nach „if ($create_in_db) {“ und suchen Sie nach etwa 423 Zeilen:
$post_id = wp_insert_post( array( 'post_title' => __( 'Auto Draft' ), 'post_type' => $post_type, 'post_status' => 'auto-draft' ) );
Ändern Sie den obigen Code in:
$post_id = wp_insert_post( array( 'post_title' => __( 'Auto Draft' ), 'post_type' => $post_type, 'post_status' => 'draft' ) );
Tipp: Diese Lösung verhindert nicht die automatische Erstellung von Entwürfen, wenn Sie auf „Neuen Artikel hinzufügen“ klicken. Zu diesem Zeitpunkt wird jedoch ein Entwurfsprotokoll erstellt, das in der Artikelliste angezeigt wird und auf das Sie zum Bearbeiten klicken können! Wenn Sie mehrmals klicken, um einen neuen Artikel hinzuzufügen, werden natürlich mehrere Entwurfsprotokolle generiert, was nicht sehr schön ist, haha!
Option 2: Das Prinzip besteht darin, den frühesten automatischen Entwurf abzurufen und ihn als aktuellen Artikel zu verwenden. Dadurch kann die Kontinuität der Artikel-IDs basierend auf der ursprünglichen automatischen Entwurfsfunktion beibehalten und die Funktion zum Löschen automatischer Entwürfe vor 7 Tagen entfernt werden.
Suchen und öffnen Sie weiterhin die Datei wp-adminincludespost.php, suchen Sie nach „if ($create_in_db) {“ und suchen Sie nach den Zeilen 418 bis 427:
if ( $create_in_db ) {
// Alte automatische Entwürfe bereinigen, die älter als 7 Tage sind
$old_posts = $wpdb->get_col( "SELECT ID FROM $wpdb->posts WHERE post_status = 'auto-draft' AND DATE_SUB( NOW(), INTERVAL 7 DAY ) > post_date" );//Automatische Entwürfe vor 7 Tagen löschen
foreach ( (array) $old_posts as $delete )
wp_delete_post( $delete, true ); // Löschen erzwingen
$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' ) );
} anders {
Ersetzen durch
if ( $create_in_db ) {
global $current_user;//Den aktuellen Login-Verwaltungsbenutzer abrufen
$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" ); //Den frühesten automatischen Entwurf abrufen
if ( !$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' ) );
} anders {
Das Prinzip von Option zwei wurde oben erläutert. Bitte lesen Sie es zusammen mit den Codekommentaren, wenn Sie es benötigen. Wenn die Datenbank bereits über ein unsichtbares automatisches Entwurfsprotokoll verfügt, klicken Sie, um einen neuen Artikel hinzuzufügen. Neue Artikel werden nicht automatisch generiert, sondern der früheste unsichtbare Entwurf wird direkt als der für den aktuellen Artikel erforderliche Datenbankeintrag aufgerufen. Um ID-Diskontinuitäten zu vermeiden, wird gleichzeitig die Codeanweisung „Automatische Entwürfe löschen“ verwendet älter als 7 Tage“ wird gelöscht. !
Okay, nehmen Sie bitte Platz, wenn Sie Kinderschuhe benötigen. Wenn Sie bessere Vorschläge oder Fragen haben, hinterlassen Sie bitte eine Nachricht zum Austausch!
Dieser Artikel stammt ursprünglich von Nuodou. Bitte löschen Sie den Link zu diesem Artikel nicht, wenn Sie ihn erneut drucken: http://www.nuodou.com/item/622.html .
Vielen Dank an Haibor für Ihren Beitrag