it-swarm.com.de

Ersetzen Sie ein Menü programmgesteuert durch ein Widget oder eine benutzerdefinierte Vorlagendatei

Ich verwende das untergeordnete Design zum Anpassen und möchte jetzt das Hauptmenü durch ein benutzerdefiniertes Widget oder ein ersetzen. Datei mit benutzerdefiniertem Inhalt , das Design unterstützt jedoch keine Hooks, Filter und Aktionen. Wie ersetze ich sie, ohne den Core-Code header.php zu ändern?

So wird das Hauptmenü gerade aufgerufen:

<?php $main_top = array('theme_location' => 'Top_Menu', 'container' => '', 'menu_class' => 'sf-top-menu', 'menu_id' => 'menu-top', 'fallback_cb' => false);?>

<?php if(!of_get_option('disable_top_menu')==1){?>

<div class="mainmenu"> 
    <?php wp_nav_menu($main_top);?>
    <div class="clearfix"></div>
</div>
    <?php }?>
1
Kevin S

Sie können die an wp_nav_menu übergebenen Argumente mit einem Filter namens wp_nav_menu_args ändern. Mit diesem Filter können Sie eine Walker-Klasse hinzufügen, die das Verhalten von wp_nav_menu ändert.

Dieser Ansatz ist etwas hackisch, da die Walker-Klasse immer noch alle Menüelemente „durchläuft“, aber Sie können sie steuern. Entscheiden Sie sich daher, keine Elemente auszugeben. Hier ist ein nettes Tutorial über die Walker-Klasse.

In Ihrer Walker-Klasse können Sie Ihre benutzerdefinierten Inhalte einfügen. Beachten Sie, dass Sie html hinzufügen müssen, da der PHP-Code nicht mehr ausgewertet wird.

0
cjbj