Ich versuche, einen Mechanismus zu finden, mit dem Plugins je nach Seiten-URL bei Bedarf geladen werden können, um die Leistung zu verbessern.
Mein Hauptanliegen ist, dass ich einige admin-ajax.php-Aufrufe habe, die wiederholt werden, während der Benutzer auf der Seite aktiv ist. Ich habe versucht, diese Aufrufe zu profilieren, und festgestellt, dass die meisten für den Ajax-Aufruf geladenen Plugins nicht erforderlich waren.
Während ich is_admin()
einen Ajax-Anruf identifizieren könnte , möchte ich WordPress und den Plugin-Code intakt lassen. Außerdem is_admin()
wird nicht zwischen einem Ajax-Anruf und einem Admin-Panel unterschieden.
Ich habe mich mit dem Laden des Plugins befasst. Ich sah nur 'muplugins_loaded'
, 'plugins_loaded'
Aktionen, keine Filter zu tippen in den Ladeprozess. Ich habe es überprüft wp_get_active_and_valid_plugins
und es scheint, dass die einzige Möglichkeit, das Laden von Plugins zu ändern, update_option('active_plugins')
explizit ist, was keine praktikable Option ist. Andere Dinge sind fest codiert.
(Ich möchte erwähnen, dass dieses Plugin http://wordpress.org/extend/plugins/selective-loading/ die update_option
Methode verwendet, die meiner Meinung nach nur in einer Nicht-Ajax-Umgebung geeignet ist, sonst würde sich die Option nicht ändern sei nicht atomar.)
Ich frage mich, ob es noch eine Möglichkeit gab, das selektive Laden von Plugins zu implementieren.
quelle
Antworten:
Filter
option_active_plugins
. Sie können das Ergebnis vonget_option()
hier ändern , ohne die Datenbank tatsächlich zu ändern.Hintergrund
wp_get_active_and_valid_plugins()
ruftget_option( 'active_plugins', array() )
auf, um die aktiven Plugins zu erhalten. Inget_option( $option, $default = false )
finden wir diesen Filter:Der resultierende Name für unseren Filter lautet also
option_active_plugins
.quelle
Ich bin nicht sicher, ob dies Ihnen bei Ihrem Ajax-Aufruf helfen wird, aber Plugin Organizer ist ein gut unterstütztes Plugin, das das selektive Laden anderer Plugins basierend auf der URL ermöglicht. Es funktioniert gut auf meiner Website.
quelle