Entleert das mehrfache Einbinden in dieselbe Aktion den Speicher?


7

Derzeit habe ich drei Funktionen, die ausgeführt werden pre_get_posts. Ich nenne sie so:

add_action( 'pre_get_posts', 'private_groups' );
add_action( 'pre_get_posts', 'search_results' );
add_action( 'pre_get_posts', 'name_profiles' );

Dies ermöglicht es mir, die Funktionen sauber und getrennt zu halten, aber ist das dreimalige Aufrufen derselben Aktion im Vergleich zum einmaligen Aufrufen einer kombinierten Funktion ein Ressourcenverbrauch?


1
Es gibt keinen Grund, dass das dreimalige Einhängen in denselben Aktionshaken, um drei Dinge getrennt zu erledigen, erheblich mehr Speicher verbrauchen würde, als die drei Dinge in einem Haken zu erledigen. Organisieren Sie den Code auf die beste Art und Weise für Sie und Ihre Partner, indem Sie nicht nur mehrmals denselben Hook einbinden, sondern auch das Aufteilen dieser Hooks in verschiedene Plugins ein sehr guter Ansatz sein, um die Arbeit zu vereinfachen.
Cybmeta

Antworten:


5

Ich denke du meinst

add_action( 'pre_get_posts', 'private_groups' );
add_action( 'pre_get_posts', 'search_results' );
add_action( 'pre_get_posts', 'name_profiles' );

gegen

add_action( 'pre_get_posts', 'combined_into_single_callback' );

Sie können den Unterschied einfach mit zB memory_get_usage()und überprüfen timer_stop(). Viele gute Plugins helfen dabei.

Ich würde sagen, gehen Sie mit dem ersten, da es sich um nicht verwandte Rückrufe handelt und wahrscheinlich einfacher zu warten ist.

Ich würde erwarten , dass meist abhängig sein auf den Callback - Funktionen führen Sie es: private_groups(), search_results()und im name_profiles()Vergleich combined_into_single_callback().

Das Hook-Setup selbst sollte keine Ressourcen verbrauchen, da es sich nur um drei neue zusätzliche Elemente in einem globalen Array handelt.

Wenn Sie das verwenden, sollten Sie darauf achten, pre_get_postsnur auf die entsprechende WP_QueryInstanz abzuzielen und zu vermeiden, dass teure Codeblöcke für alle Instanzen ausgeführt werden.


Ja, ich meinte, was ich jetzt habe, gegen eine kombinierte Funktion, wie Sie vorschlagen.
SinisterBeard
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.