Ich möchte dies nur für einen Beitragstyp deaktivieren, da es nicht wirklich wichtig ist, ob es einen anderen Benutzer gibt, der ihn bearbeitet.
Ich habe mir die Kernfunktionen angesehen, aber keinen Einstiegspunkt gefunden. Aus der Funktion wp_set_post_lock
schätze ich, dass ich das abfangen müsste get_post_meta
, aber gibt es eine offizielle Möglichkeit, dies zu tun?
Und es gibt eine zweite Sperre , die von dem Filter nicht betroffen zu sein scheint wp_check_post_lock_window
( wie von birgire hier in einer Antwort gezeigt). Ich habe es remove_filter( 'heartbeat_received', 'wp_refresh_post_lock', 10, 3 );
an verschiedenen Stellen versucht, aber es schlägt weiter, ohne es zu respektieren remove_filter
.
wp-admin
heartbeat-api
Brasofilo
quelle
quelle
post_lock
.Antworten:
Als Ergänzung zu @birgire Antwort ...
Ergebnisse
register_post_type()
Ermöglicht die Registrierung eines Beitragstyp-Supports, der auch später über ausgeführt werden kannadd_post_type_support()
. Und das lässt sich auch später noch mit den Allmächtigen überprüfenpost_type_supports( $cpt, $feat )
.Ein allgemeines Mini-Plugin, das eine neue Funktion hinzufügt
Das folgende (Mu-) Plugin sucht nun nach einer neuen Art von Post-Type-Unterstützung, die die Post-Lock-Funktion deaktiviert. Es heißt
disabled_post_lock
.Ein Plugin pro CPT
Dann können wir ganz einfach Mini-Plugins hinzufügen, um die Post-Type-Unterstützung für unsere eigenen Plugins oder für Plugins von Drittanbietern zu deaktivieren (was uns Bandbreite und DB-Größe in der Benutzer-Metatabelle spart):
Sobald das zweite Plugin aktiviert ist, hat unser Bierposttyp keine Post-Sperre mehr. Dies sollte gut funktionieren und kann über den Admin-Bildschirm des Plugins leicht rückgängig gemacht werden.
Deaktivieren der Heartbeat-API
Das Plugin erweitern, um die Hearbeat-API ebenfalls zu deaktivieren:
quelle
admin-ajax.php
Teil umgehen (Q aktualisiert und A hinzugefügt)?wp.heartbeat.start();
JavaScript ausführen .post_type_supports
dies für jeden benutzerdefinierten Post-Typ zu handhaben. Ich wünschte, ich könnte Ihnen mehr Upvotes geben ;-)Versuchen Sie Folgendes, um das Popup-Fenster mit der Bearbeitungssperre zu entfernen :
Ich bin mir nicht sicher, ob dies der richtige Weg ist, aber ich habe die Quelle von überprüft
wp_check_post_lock()
und dort haben wir die folgenden Zeilen:Die Idee ist also, sich
$time_window
so zu ändern, wie es derif
Zustand istfalse
.Aktualisieren:
So wenden Sie dies auf dem
edit.php
Bildschirm an,beer
z. B. mit dem benutzerdefinierten Beitragstyp :Und dann können wir hinzufügen:
um es auch für den
post.php
Bildschirm zu entfernen .Mehr Graben ...
Die Funktion
_admin_notice_post_locked()
wird definiert knapp unterhalb derwp_set_post_lock()
Funktion. Es enthält folgende Zeilen:so kann man auch den
show_post_locked_dialog
filter ausprobieren :quelle
__return_false()
stattdessen nur den ersten Check zu verwenden, um die$time
Summe als zu betrachtenbool TRUE
?$time
,false
also habe ich mich für$time_window
... entschiedenDie letzte Kombination, mit der ich aufgehört habe, ist
aber wenn jemand eine andere Einstellung hat, würde ich gerne hören, da ich nicht wirklich das ganze Bild der verfügbaren Filter verstehe.
quelle
get_current_screen()->post_type
stattdessen. Hier ist ein nettes Plugin namens Current Admin Info , das Sie beim Abrufen solcher Informationen unterstützt.DOING_AJAX
Checks hinzufügen ... Und wie ich es verstehe, hat Ajax keineglobal $current_screen
(zurückgegeben vonget_current_screen()
).wp_is_autosave()
- ich bin mir nicht sicher, ob das für eine dieser Aktionen verantwortlich ist.add_filter( 'show_post_locked_dialog', '__return_false' );
von der Funktion_admin_notice_post_locked()
eine Hilfe ist?wp_ajax_heartbeat()
(wp-admin / includes / ajax-actions.php) mit der Kette zu stoppenload-$hook
->get_current_something()
. . . . . Es gibt auch 3 Hooks in dieser Funktion, aber ich bin nicht in der Lage, den Beat zu stoppen, indem ich sie benutze (und sie haben$screen_id
, was dem Post-Typ entspricht.Hier ist die endgültige Lösung, die für mich funktioniert. :
quelle