Sidebar
ein-/ausblenden

WordPress Autosave beeinflussen

Plugin für WordPress SEO

Anzeige

Autosave in WP 2.5

WordPress bietet seit der Version 2.2 die automatische Sicherung des Editorbereiches. Dabei speichert WordPress alle 120s/60s (< Version 2.3/ ≥ Version 2.5) den Inhalt. Dieser Wert wird in einer Konstanten übergeben und kann mittels Plugin oder anderen Funktionen genutzt werden; ebenfalls kann der Wert beeinflusst werden.

Bis Version 2.3* war diese Funktion, die mittels Ajax-Technologie realisiert wird, nicht immer das, was der Name verspricht und es gab den einen oder anderen Fehler. Ab Version 2.5 von WordPress wurde auch hier gefeilt und die Funktion macht in den Tests eine recht guten Eindruck; mal sehen was der Livebetrieb vieler User bringen wird.

Wert beeinflussen

Hinterlegt man in einem Plugin oder in der wp-config.php die Definition des Intervalls, dann kann man die Zeit einfach und konsequent beeinflussen. Das Speichern findet trotzdem nur statt, wenn Aktivitäten im Editor stattfinden, somit könnte man auch den Intervall auf 1 Sekunde setzen - für alle besonders ängstlichen Autoren.

define( 'AUTOSAVE_INTERVAL', 120 ); // Autosave interval

Autosave in WP 2.3

Der Wert wird dann in der Funktion wp_just_in_time_script_localization() genutzt, zu finden in wp-includes/script-loader.php.

Autosave abschalten

Der folgenden kleine Snippet schaltet das Script für die Aufgabe des Autosave ab, damit gibt es in WordPress keinerlei Autosave mehr. Der Code gehört in ein Plugin oder weniger gut, in die functions.php des Themes.


function fb_disable_autosave() {
    wp_deregister_script( 'autosave' );
}
add_action( 'wp_print_scripts', 'fb_disable_autosave' );

Weitere Anpassungen

Natürlich lassen sich ebenfalls die Texte verändern, allerdings ist hier ein Eingreifen nicht zu empfehlen und wem die Ausgabe nicht gefällt, der sollte lieber mit Hilfe der Sprachdatei auf die Begriffe eingreifen oder via Plugin den String ändern.

Für Coder sind folgende Syntax interessant.
wp-includes/script-loader.php

'savingText' => __('Saving Draft…')

wp-admin/admin-ajax.php

$message = sprintf( __('Draft Saved at %s.'), date( __('g:i:s a'), current_time( 'timestamp', true ) ) );

Weitere Links zum Thema

7 Kommentare zu „WordPress Autosave beeinflussen“

  1. 1
    Kommentar von Paul

    Das ist doch mal ne tolle Sache, da freu ich mich dann doch auf 2.5

  2. 2
    Pingback von 5-Finger-Blog von Hollii » WordPress Autosave beeinflussen
  3. 3
    Kommentar von Sebastian

    Ich beobachte derzeit in sehr merkwürdiges Phänomen bei mir lokal in einer WordPress-Installation. Der Button 'Artikel aktualisieren' flackert voll merkwürdig und die CPU-Last meiner Rechners steig dramatisch an, wenn ich die Seite zum Bearbeiten eines Artikels lade. Ich habe alle Plugins ausgelagert und auch den TinyMCE abgeschaltet und dennoch besteht das Problem weiter.

    Ich habe Autosave eigentlich deaktivert:
    define('AUTOSAVE_INTERVAL', false);
    und in der functions.php:
    // Toete Autosave
    function disableAutoSave(){
    wp_deregister_script('autosave');
    }
    dennoch erscheint in der Artikel-Ansicht:

    Es existiert eine automatische Speicherung dieses Artikels, die aktueller ist als die Version unten. Automatische Speicherung ansehen.

    Ich blicke das nicht und ich denke dieser Flackern des Buttons könnte mit Autosave zusammenhängen.

    @Frank:
    Vielleicht hast du einen Tipp für mich.

    @the rest:
    Any ideas?

  4. 4
    Kommentar von Frank Bültge

    @Sebastian: define('AUTOSAVE_INTERVAL', false); ist nicht möglich; es wird ein Integer-Wert erwartet. Um den Autosave wirklich inaktiv zu schalten, muss das JS inaktiv sein, was du ja schon versucht hast; allerdings sehe ich nicht, wo du die Funktion aufrufst. Mache es mal so, in die functions.php des Themes:

    function disableAutosave() {
    wp_deregister_script('autosave');
    }
    add_action( 'wp_print_scripts', 'disableAutosave' );

  5. 5
    Kommentar von Sebastian

    Vielen Dank für den Hinweis.
    Ich hatte auch erneut gegoogelt und gesehen, dass mein Aufruf in der functions.php nicht vollständig war.
    Ich habs eingebaut aber auch das brachte es nicht. Erst nachdem ich CMS Post Control installiert habe und dort in den Optionen 'Autosave' deaktiviert habe, ging es. Vielleicht war es auch ein Cache-Problem, dass es nach der Ergänzung in der functions.php nicht auf Anhieb geklappt hat, nun ist es auf jeden Fall aus und der Button flackert nicht mehr. Mal sehen, ob das Problem damit wirklich behoben ist.

    Ich melde mich wieder :)

  6. 6
    Kommentar von Rasso

    Hi Sebastian,

    scheinbar kennst Du Dich mit dem autosave aus? Ich würde gerne eine Javascript-Funktion aufrufen, wenn Autosave erfolgreich war. Weisst Du zufällig, wie so was geht? Ich habe versucht, das in die admin-ajax.php reinzuschreiben, bekomme aber dabei leider einen Error: header already sent...

  7. 7
    Kommentar von Sebastian

    Hi Rasso,

    grundsätzlich möchte ich dir empfehlen nicht mit den Core-Dateien von WordPress zu arbeiten, denn das ist riskant und wenn du ein Update machst, sind die Änderungen möglicherweise pfutsch - sehr wahrscheinlich sogar.

    Du solltest mit der functions.php arbeiten!

    Ich habe gerade mal nach autosave gegoggelt und geschaut, ob es da etwas gibt, mit dem man arbeiten könnte.
    Es gibt da eine WordPress-Funktion, die dieses Autosave steuert und mit der könntest du wahrscheinlich auch arbeiten.

    Mehr kann ich dir bis dato nicht sagen! Jetzt bist du wahrscheinlich nur wenig schlauer als vorher.

    Es gibt ein Plugin, welches ich mir mal näher anschauen wollte: revision control
    vielleicht ist das auch interessant für dich.

  8. 8
    Kommentar von Rasso

    Hi Sebastian,

    Wie Du schon sagst, ich bin jetzt nur wenig schlauer. Bin halt eher ein Grafikfuzzie... ;)
    Trotzdem danke für die Antwort. Wenn Du noch was dazu rausbekommst, freue ich mich immer über Updates!

Kommentare sind geschlossen.