Gibt es eine Möglichkeit, eine bestimmte function add_filter
, wenn eine bestimmte Walker_Nav_Menu
class ausgeführt wird? Die function muss immer ausgeführt werden, wenn der Walker geht, und ich möchte, dass sie Variablen teilen, insbesondere $column_limit
. Die function sollte vor allen anderen Dingen im Walker ausgeführt werden, um den Li-classn classn hinzuzufügen, bevor sie generiert werden.
Der Zweck dieser ganzen Reihe von PHP ist die Aktivierung von Mega-Menü-functionalität in WordPress. Im Wesentlichen, wenn ich Markup wie folgt habe:
Wenn break
und widget
classn sind, die vom Benutzer im WordPress-Menü-Editor hinzugefügt wurden, geben der walker und die function Folgendes aus:
Die function fügt mega-menu-columns-#
dem
theme_location
in der function theme_location
zu müssen. Wenn ich ein Menü für den Walker einstelle, möchte ich, dass mein gesamtes PHP automatisch ausgeführt wird. Wenn dies nicht klar genug ist, bitten Sie um weitere Erläuterungen.
Hier ist mein aktueller Code:
// mega menu walker class megaMenuWalker extends Walker_Nav_Menu { private $column_limit = 3; // used to how many columns can be generated (
Wenn alles Ihr eigener Code ist, wäre es vernünftig, dies nur als Teil von Walker zu implementieren.
Wenn Sie einen Filter hinzufügen müssen, während ein anderer Walker läuft, könnten Sie wahrscheinlich:
Fügen Sie es unter wp_nav_menu_args
und überprüfen Sie, ob wp_nav_menu_args
auf wp_nav_menu_args
eingestellt ist:
add_filter( 'wp_nav_menu_args', function( $args ) { if ( $args['walker'] instanceof megaMenuWalker ) { add_filter( 'wp_nav_menu_objects', 'callback_name_here' ); } return $args; } );
Entfernen Sie es im wp_nav_menu
Hook, nachdem das Menü-Markup vollständig generiert wurde:
add_filter( 'wp_nav_menu', function( $nav_menu ) { remove_filter( 'wp_nav_menu_objects', 'callback_name_here' ); return $nav_menu; } );