In meiner WordPress-Installation verwende ich sowohl die standard WordPress Gallery als auch die NGG. Bilder aus der Standard WordPress Gallery werden durch ein Lightbox-Plugin in einem Pop-Up-Fenster vergrößert. a ich das Layout der Lightbox-Komponente angepasst habe, möchte ich auf die NGG-eigenen Lightbox-Effekt verzichten und stattdessen immer mein Plugin verwenden. Leider funktioniert dies nicht wie geplant. Die Ursache dafür liegt in der Ausführungsreihenfolge der Plugins.

In Version 2.0.17 der NGG finden sich folgende Code-Zeilen:

  nextgen-gallery\non_pope\class.nextgen_shortcode_manager.php (2 hits)
    47:         add_filter('the_content', array(&$this, 'deactivate_all'), 1);
    48:         add_filter('the_content', array(&$this, 'parse_content'), PHP_INT_MAX-1);
  nextgen-gallery\products\photocrati_nextgen\modules\attach_to_post\module.attach_to_post.php (1 hits)
    117:         add_filter('the_content', array(&$this, 'substitute_placeholder_imgs'), PHP_INT_MAX, 1);

Der dritte Parameter  der add_filter()-Funktion legt dabei die Priorität fest, mit der ein Filter angewendet wird (siehe hier). Je größer die Nummer, umso später wird der Filter angewendet. Bei genauer Betrrachtung fällt auf, dass NGG mit der Verwendung von PHP_INT_MAX die Ausführung am Ende der Verarbeitungskette erzwingt.

Da das von mir verwendete Lightbox-Plugin leider nur eine Priorität von 99 für die Filterausführung verwendet, wird dieses Plugin zu früh angewendet und die Filter werden für Galelrien nicht korrekt angewendet.

Durch den folgenden Eintrag in der functions.php in meinem template erreiche ich eine Umpriorisierung, so dass das Lightbox-Plugin zum Schluss ausgeführt wird und so wie gewünscht funktioniert:

// Sicherstellen, dass Lightbox-Plugin als leztes geladen wird
// So wird sichergestellt, dass immer dieses Plugin für die Lightbox 
// verwendet wird.
remove_filter('the_content', '<name_des_LB_handlers>', 99);
add_filter('the_content', '<name_des_LB_handlers>', PHP_INT_MAX);

Der String ‘<name_des_LB_handlers>’ muss natürlich mit dem Namen des verwendeten Lightbox-Plugins ersetzt werden.