it-swarm.com.de

Wie entferne ich UL im wp_nav_menu?

Ich habe auf dieser Site gesucht und viele Antworten für diese Frage gefunden. Die meisten von ihnen arbeiten nicht an meinem Thema.

Hier ist eine Lösung, die ich gefunden habe und die nach meinen Bedürfnissen funktioniert.

function wp_nav_menu_no_ul()
{
    $options = array(
        'echo' => false,
        'container' => false,
        'theme_location' => 'primary'
    );

    $menu = wp_nav_menu($options);
    echo preg_replace(array(
        '#^<ul[^>]*>#',
        '#</ul>$#'
    ), '', $menu);

}

Dieser Code entfernt ul zu Beginn und am Ende von wp_nav_menu(). Also schreibe ich einfach in mein Thema

<ul class="primary-nav">
<?php  wp_nav_menu_no_ul(); ?>
</ul>

Aber das Problem tritt erneut auf, wenn ich kein Menü über den Administrator hinzufüge oder aktiviere. http://domain.com/wp-admin/nav-menus.php

Frage:

Wie entferne ich den <div><ul>**</ul></div>, ob das Menü aktiv ist oder nicht? Gib mir Bescheid


Endlich habe ich es geschafft :) functions.php

function wp_nav_menu_no_ul()
{
    $options = array(
        'echo' => false,
        'container' => false,
        'theme_location' => 'primary',
        'fallback_cb'=> 'default_page_menu'
    );

    $menu = wp_nav_menu($options);
    echo preg_replace(array(
        '#^<ul[^>]*>#',
        '#</ul>$#'
    ), '', $menu);

}

function default_page_menu() {
   wp_list_pages('title_li=');
} 

header.php

<ul class="primary-nav">
<?php  wp_nav_menu_no_ul(); ?>
</ul>
17
haha

Die Funktion wp_nav_menu akzeptiert ein Argument von fallback_cb. Dies ist der Name der Funktion, die ausgeführt werden soll, wenn das Menü nicht vorhanden ist. Also ändere deinen Code in so etwas wie:

function wp_nav_menu_no_ul()
{
    $options = array(
        'echo' => false,
        'container' => false,
        'theme_location' => 'primary',
        'fallback_cb'=> 'fall_back_menu'
    );

    $menu = wp_nav_menu($options);
    echo preg_replace(array(
        '#^<ul[^>]*>#',
        '#</ul>$#'
    ), '', $menu);

}

function fall_back_menu(){
    return;
}

sie können den Container sogar aus dem Menü entfernen und andere Aufgaben mit weiteren Argumenten ausführen, die an die Funktion wp_nav_menu gesendet wurden.

Hoffe das hilft.

11
Bainternet

Eigentlich unterstützt WordPress dies standardmäßig:

wp_nav_menu(array(
    'items_wrap' => '%3$s'
));

Die Standardeinstellung für items_wrap ist <ul id=\"%1$s\" class=\"%2$s\">%3$s</ul>.

56
Martti Laine

Der folgende Code sollte es einfach machen.

<?php 

  $my_menu = array( 
  'menu' => 'main-menu',
  'container' => '',
  'items_wrap' => '%3$s' 
  );

  wp_nav_menu( $my_menu );

?>

Verweisen Sie auf diesen Link für die Funktion wp_nav_menu http://codex.wordpress.org/Function_Reference/wp_nav_menu

4
Dannamite

Wenn Sie nur <a> Tags drucken möchten, können Sie folgendermaßen vorgehen:

$primaryMenu = array(
    'theme_location'  => 'primary',
    'menu'            => '',
    'container'       => '',
    'container_class' => false,
    'container_id'    => '',
    'menu_class'      => 'menu',
    'menu_id'         => 'primary-menu',
    'echo'            => false,
    'fallback_cb'     => 'wp_page_menu',
    'before'          => '',
    'after'           => '',
    'link_before'     => '',
    'link_after'      => '',
    'depth'           => 0,
    'walker'          => ''
);
echo strip_tags( wp_nav_menu( $primaryMenu ), '<a>' );
2
Pavlo Zamoroka

Für mich funktionierte Folgendes:

<?php wp_nav_menu( array(
       'container' => '',
       'items_wrap' => '%3$s' 
) ); ?>

Ich hoffe es hilft.

2
Orbital Pixel