web-dev-qa-db-fra.com

Tout marcheur provoque un menu vide?

En utilisant ce qui suit ou tout autre menu personnalisé, Walker_Nav_Menu semble créer un menu de navigation vide, j’essayai de spécifier le paramètre par défaut pour être sûr que je ne devenais pas fou, mais il efface toujours le résultat ... Des idées sur ce qui ne va pas?

<?php wp_nav_menu( array( 'theme_location' => 'primary', 'depth' => 3, 'walker' => new Walker_Nav_Menu() ) ); ?>

Dans le contexte

<?php
/**
 * The Header for our theme.
 *
 * Displays all of the <head> section and everything up till <div id="main">
 *
 * @package Expound
 */
?><!DOCTYPE html>
<html <?php language_attributes(); ?>>
<head>
<meta charset="<?php bloginfo( 'charset' ); ?>" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title><?php wp_title( '|', true, 'right' ); ?></title>
<link rel="profile" href="http://gmpg.org/xfn/11" />
<link rel="pingback" href="<?php bloginfo( 'pingback_url' ); ?>" />
<!--[if lt IE 9]>
<script src="<?php echo get_template_directory_uri(); ?>/js/html5.js" type="text/javascript"></script>
<![endif]-->

<?php wp_head(); ?>
</head>

<body <?php body_class(); ?>>
<div id="page" class="hfeed site">
    <?php do_action( 'expound_header_before' ); ?>
    <header id="masthead" class="site-header" role="banner">
        <div class="site-branding">
            <div class="site-title-group">
                <a href="<?php echo esc_url( home_url( '/' ) ); ?>" title="<?php echo esc_attr( get_bloginfo( 'name', 'display' ) ); ?>" rel="home">
                    <!--div class="site-title"><!--?php bloginfo( 'name' ); ?></div-->
                    <img height="240" width="722" alt="The All Australian Minecraft Community" class="wp-post-image" src="http://taamc.com/wordpress/wp-content/themes/expound-child/images/logo.png">
                    <!--h2 class="site-description"--><!--?php bloginfo( 'description' ); ?--><!--/h2-->
                    <!--div id="sub-title">
                        <div id="sub-title-image"></div>
                    </div-->
                </a>
            </div>
        </div>
        <div class = "site-title-group">
                <?php if ( dynamic_sidebar('header_widget_area') ) : else : endif; ?>
        </div>
        <nav id="site-navigation" class="navigation-main" role="navigation">
            <h1 class="menu-toggle"><?php _e( 'Menu', 'expound' ); ?></h1>
            <div class="screen-reader-text skip-link"><a href="#content" title="<?php esc_attr_e( 'Skip to content', 'expound' ); ?>"><?php _e( 'Skip to content', 'expound' ); ?></a></div>
####################################################################################    
<?php wp_nav_menu( array( 'theme_location' => 'primary', 'depth' => 3, 'walker' => new Walker_Nav_Menu()) ); ?>
####################################################################################
            <div class="site-nav-search"><?php if ( dynamic_sidebar('navigation_widget_area') ) : else : endif; ?></div>
            <?php do_action( 'expound_navigation_after' ); ?>
        </nav><!-- #site-navigation -->
    </header><!-- #masthead -->
    <?php do_action( 'expound_header_after' ); ?>

    <div id="main" class="site-main">

Ce qui précède est actuellement dans mon header.php d’un thème enfant si cela fait une différence, et le thème original utilisait également le lecteur par défaut, mais cela n’a pas été explicitement indiqué.

avec php comme ci-dessus

        <div class="menu">
            <ul class=" nav-menu">
            <li class="current_page_item">
                <a href="http://taamc.com/">Home</a>
            </li>
            <li id="menu-item-21" class="menu-item-21">
                <a></a>
            </li>
            <li id="menu-item-87" class="menu-item-87">
                <a></a>
            </li>
            <li id="menu-item-122" class="menu-item-122">
                <a></a>
            </li>
            <li id="menu-item-28" class="menu-item-28">
                <a></a>
            </li>
            <li id="menu-item-127" class="menu-item-127">
                <a></a>
            </li>
            <li id="menu-item-22" class="menu-item-22">
                <a></a>
            </li>
        </ul>
    </div>

Donne des erreurs:

Notice: Trying to get property of non-object in /home/taamc/public_html/wordpress/wp-includes/nav-menu-template.php on line 148

Notice: Trying to get property of non-object in /home/taamc/public_html/wordpress/wp-includes/nav-menu-template.php on line 151

Notice: Trying to get property of non-object in /home/taamc/public_html/wordpress/wp-includes/nav-menu-template.php on line 151

Notice: Trying to get property of non-object in /home/taamc/public_html/wordpress/wp-includes/nav-menu-template.php on line 153

Notice: Trying to get property of non-object in /home/taamc/public_html/wordpress/wp-includes/nav-menu-template.php on line 148

Notice: Trying to get property of non-object in /home/taamc/public_html/wordpress/wp-includes/nav-menu-template.php on line 151

Notice: Trying to get property of non-object in /home/taamc/public_html/wordpress/wp-includes/nav-menu-template.php on line 151

Notice: Trying to get property of non-object in /home/taamc/public_html/wordpress/wp-includes/nav-menu-template.php on line 153

Notice: Trying to get property of non-object in /home/taamc/public_html/wordpress/wp-includes/nav-menu-template.php on line 148

Notice: Trying to get property of non-object in /home/taamc/public_html/wordpress/wp-includes/nav-menu-template.php on line 151

Notice: Trying to get property of non-object in /home/taamc/public_html/wordpress/wp-includes/nav-menu-template.php on line 151

Notice: Trying to get property of non-object in /home/taamc/public_html/wordpress/wp-includes/nav-menu-template.php on line 153

Notice: Trying to get property of non-object in /home/taamc/public_html/wordpress/wp-includes/nav-menu-template.php on line 148

Notice: Trying to get property of non-object in /home/taamc/public_html/wordpress/wp-includes/nav-menu-template.php on line 151

Notice: Trying to get property of non-object in /home/taamc/public_html/wordpress/wp-includes/nav-menu-template.php on line 151

Notice: Trying to get property of non-object in /home/taamc/public_html/wordpress/wp-includes/nav-menu-template.php on line 153

Notice: Trying to get property of non-object in /home/taamc/public_html/wordpress/wp-includes/nav-menu-template.php on line 148

Notice: Trying to get property of non-object in /home/taamc/public_html/wordpress/wp-includes/nav-menu-template.php on line 151

Notice: Trying to get property of non-object in /home/taamc/public_html/wordpress/wp-includes/nav-menu-template.php on line 151

Notice: Trying to get property of non-object in /home/taamc/public_html/wordpress/wp-includes/nav-menu-template.php on line 153

Notice: Trying to get property of non-object in /home/taamc/public_html/wordpress/wp-includes/nav-menu-template.php on line 148

Notice: Trying to get property of non-object in /home/taamc/public_html/wordpress/wp-includes/nav-menu-template.php on line 151

Notice: Trying to get property of non-object in /home/taamc/public_html/wordpress/wp-includes/nav-menu-template.php on line 151

Notice: Trying to get property of non-object in /home/taamc/public_html/wordpress/wp-includes/nav-menu-template.php on line 153

avec php comme trouvé par défaut dans le thème

<?php wp_nav_menu( array( 'theme_location' => 'primary', 'depth' => 3) ); ?>

<div class="menu">
    <ul class=" nav-menu">
    <li class="current_page_item">
        <a href="http://taamc.com/">Home</a>
    </li>
    <li class="page_item page-item-21">
        <a href="http://taamc.com/activity/">Activity</a>
    </li>
    <li class="page_item page-item-87">
        <a href="http://taamc.com/gallery/">Gallery</a>
    </li>
    <li class="page_item page-item-122">
        <a href="http://taamc.com/getting-started/">Getting Started</a>
    </li>
    <li class="page_item page-item-28">
        <a href="http://taamc.com/groups/">Groups</a>
    </li>
    <li class="page_item page-item-127">
        <a href="http://taamc.com/map/">Map</a>
    </li>
    <li class="page_item page-item-22">
        <a href="http://taamc.com/members/">Members</a>
    </li>
    </ul>
</div>
4
Ryan The Leach

Vous devez vous assurer que votre menu est correctement enregistré dans votre functions.php, puis activé dans le tableau de bord WP.

add_action( 'init', register_nav_menu( 'navigation', __( 'Navigation' ) ) );

Sinon, je faisais face à une longue liste de points vides.

http://codex.wordpress.org/Navigation_Menus

2
Taig

Je pense que l’ensemble du problème est que vous essayez d’utiliser le walker par défaut, mais en le déclarant dans le champ walker, vous dites que vous essayez de charger un walker personnalisé, le wp walker est chargé par défaut s’il est laissé vide.

deux options:

1/change 'walker' => new Walker_Nav_Menu() to 'walker' => '' comme il est appelé par défaut.

2/modifiez la déclaration en un nouveau nom tel que: new themeslug_Walker_Nav_Menu () puis ajoutez ce qui suit à votre function.php:

 
 class themeslug_walker_nav_menu étend Walker_Nav_Menu {
 
 // ajouter des classes aux sous-menus ul 
 function start_lvl (& $ output, $ depth) { 
 // classes dépendantes de la profondeur 
 $ indent = ($ profondeur> 0? str_repeat ("\ t", $ profondeur): ''); // indent de code 
 $ display_depth = ($ depth + 1); // parce qu'il compte le premier sous-menu comme étant 0 
 $ classes = array (
 'sous-menu', 
 ($ display_depth% 2? 'menu-odd': 'menu -even '), 
 ($ display_depth> = 2?' sous-sous-menu ':' '), 
' menu-depth- '. $ display_depth 
); 
 $ class_names = implode ('', $ classes); 
 
 // construire html 
 $ output. = "\ n". $ indent. '' "\ n"; 
} 
 
 // ajoute des classes principales/secondaires aux liens et liens 
 function start_el (& $ output, $ item, $ profondeur, $ args) {
 global $ wp_query; 
 $ indent = ($ profondeur> 0? str_repeat ("\ t", $ profondeur): ''); // indent de code 
 
 // classes dépendantes de la profondeur 
 $ profondeur_classes = tableau (
 ($ profondeur == 0? 'élément de menu principal': ' élément de sous-menu '), 
 ($ profondeur> = 2?' élément de sous-sous-menu ':' '), 
 ($ profondeur% 2?' élément de menu- impair ':' menu-item-pair '), 
' menu-item-profondeur- '. $ depth 
); 
 $ depth_class_names = esc_attr (implode (' ', $ profondeur_classes)); 
 
 // classes passées 
 $ classes = vides ($ item-> classes)? array (): (array) $ item-> classes; 
 $ class_names = esc_attr (implode ('', apply_filters ('nav_menu_css_class', array_filter ($ classes), $ item)),) [). ] 
 // construire html 
 $ output. = $ indent. 'ID. '"class ="'. $ depth_class_names. '' $ class_names. '">'; 
 
 // attributs de lien 
 $ attributs =! vide ($ item-> attr_title)? 'title ="'. esc_attr ($ item-> attr_title). '"': ''; 
 $ attributs. =! empty ($ item-> target)? 'target ="'. esc_attr ($ item-> target). '"': ''; 
 $ attributs. =! vide ($ item-> xfn)? 'rel ="'. esc_attr ($ item-> xfn). '"': ''; 
 $ attributs. =! empty ($ item-> url)? 'href ="'. esc_attr ($ item-> url). '"': ''; 
 $ attributs. = 'class =" menu-link'. ($ profondeur> 0? 'lien de sous-menu': 'lien de menu principal'). '"'; 
 
 $ item_output = sprintf ('% 1 $ s% 3 $ s% 4 $ s% 5 $ s% 6 $ s', 
 $ args- > avant, 
 $ attributs, 
 $ args-> link_before, 
 apply_filters ('the_title', $ item-> title, $ item-> ID), 
 $ args-> link_after, 
 $ args-> après 
); 
 
 // construire html 
 $ output. = apply_filters (' walker_nav_menu_start_el ', $ item_output, $ item, $ depth, $ args); 
} 
} 

voir le codex sa explique assez bien.

0
Firestorm_dev

Cela se produit parfois lorsqu'un menu n'a pas encore été créé. La raison pour laquelle vous ne pouvez pas utiliser ou étendre la classe Walker_Nav_Menu est que le menu que vous voyez lorsque vous appelez le menu de navigation primary sans promeneur est en réalité le repli sur wp_page_menu(). Pour que cela fonctionne avec un marcheur, un menu devra être créé et la case à cocher principale devra être cochée.

0
Clint Stegman

utilisez-vous le menu du déambulateur à des fins réactives pour les mobiles? Si oui, alors vous pouvez choisir une autre solution (uniquement si vous ne pouvez pas corriger vos erreurs avec le menu de navigation).

vous pouvez masquer le menu principal sur les appareils mobiles et en utiliser un autre. Voici un exemple

<div class="m-sec-nav">
        <?php 
        $menu_name = 'careers-menu'; //your menu theme_location
        if ( ( $locations = get_nav_menu_locations() ) && isset( $locations[ $menu_name ] ) ) {
                $menu = wp_get_nav_menu_object( $locations[ $menu_name ] );
                $menu_items = wp_get_nav_menu_items($menu->term_id); ?>
                    <select onchange="location = this.options[this.selectedIndex].value;">
                    <?php foreach ( (array) $menu_items as $key => $menu_item ) { ?>
                        <option value="<?php echo $menu_item->url; ?>"><?php echo $menu_item->title; ?></option>
                    <?php } ?>
                    </select>
                <?php } ?>

    </div>
0
Dhanuka Nuwan

Vous devriez passer un objet réel en tant que "marcheur" - ne pas en créer un à la volée. La bonne façon de le faire est:

$myWalker = new Walker_Nav_Menu();
wp_nav_menu( array( 'theme_location' => 'primary', 'depth' => 3, 'walker' => $myWalker ) ); ?>

Assurez-vous également d'étendre Walker_Nav_Menu dans votre classe personnalisée.

0
adrian7