Qualquer walker causa um menu em branco?

4

Usando o seguinte, ou qualquer outro Walker_Nav_Menu personalizado parece causar um menu de navegação em branco, eu tentei especificar o padrão para ter certeza de que eu não estava enlouquecendo, mas ainda deixa em branco a saída ... Alguma idéia do que está errado ?

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

No contexto

<?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"><!--h2class="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">

O acima está atualmente no meu header.php de um tema filho, se isso faz alguma diferença, e o tema original também usou o walker padrão, no entanto, não foi explicitamente declarado.

com php como acima

        <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>

Dá erros:

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

com php como encontrado por padrão no tema

<?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>
    
por Ryan The Leach 08.02.2014 / 20:09

6 respostas

2

Você precisa verificar se o menu está registrado corretamente em functions.php e, em seguida, ativado no WP Dashboard.

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

Caso contrário, eu estava apenas enfrentando uma longa lista de marcadores vazios.

enlace

    
por Taig 27.02.2014 / 12:39
0

Você deve passar um objeto real como 'walker' - não criar um objeto na hora. A maneira correta de fazer isso é:

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

Também certifique-se de estender Walker_Nav_Menu em sua classe personalizada.

    
por adrian7 10.02.2014 / 00:13
0

você usa o menu walker para fins de resposta móvel? Se sim, então você pode ir para uma outra solução. (Só se você não puder corrigir seus erros com o menu walker)

você pode ocultar o menu principal em dispositivos móveis e usar outro. aqui está um exemplo

<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>
    
por Dhanuka Nuwan 12.02.2014 / 05:11
0

Eu acho que o problema é sua tentativa de usar o walker padrão, mas declarando-o no campo walker, seu wordpress pressiona sua tentativa de carregar um walker personalizado, o wp walker é carregado por padrão se deixado vazio.

duas opções:

1 / altera 'walker' => new Walker_Nav_Menu() to 'walker' => '' como é chamado por padrão.

2 / edite a declaração para um novo nome como: new themeslug_Walker_Nav_Menu () e adicione o seguinte à sua função: php:


class themeslug_walker_nav_menu extends Walker_Nav_Menu {

// add classes to ul sub-menus
    function start_lvl( &$output, $depth ) {
        // depth dependent classes
        $indent = ( $depth > 0  ? str_repeat( "\t", $depth ) : '' ); // code indent
        $display_depth = ( $depth + 1); // because it counts the first submenu as 0
        $classes = array(
            'sub-menu',
            ( $display_depth % 2  ? 'menu-odd' : 'menu-even' ),
            ( $display_depth >=2 ? 'sub-sub-menu' : '' ),
            'menu-depth-' . $display_depth
            );
        $class_names = implode( ' ', $classes );

        // build html
        $output .= "\n" . $indent . '' . "\n";
    }

    // add main/sub classes to li's and links
     function start_el( &$output, $item, $depth, $args ) {
        global $wp_query;
        $indent = ( $depth > 0 ? str_repeat( "\t", $depth ) : '' ); // code indent

        // depth dependent classes
        $depth_classes = array(
            ( $depth == 0 ? 'main-menu-item' : 'sub-menu-item' ),
            ( $depth >=2 ? 'sub-sub-menu-item' : '' ),
            ( $depth % 2 ? 'menu-item-odd' : 'menu-item-even' ),
            'menu-item-depth-' . $depth
        );
        $depth_class_names = esc_attr( implode( ' ', $depth_classes ) );

        // passed classes
        $classes = empty( $item->classes ) ? array() : (array) $item->classes;
        $class_names = esc_attr( implode( ' ', apply_filters( 'nav_menu_css_class', array_filter( $classes ), $item ) ) );

        // build html
        $output .= $indent . 'ID . '" class="' . $depth_class_names . ' ' . $class_names . '">';

        // link attributes
        $attributes  = ! empty( $item->attr_title ) ? ' title="'  . esc_attr( $item->attr_title ) .'"' : '';
        $attributes .= ! empty( $item->target )     ? ' target="' . esc_attr( $item->target     ) .'"' : '';
        $attributes .= ! empty( $item->xfn )        ? ' rel="'    . esc_attr( $item->xfn        ) .'"' : '';
        $attributes .= ! empty( $item->url )        ? ' href="'   . esc_attr( $item->url        ) .'"' : '';
        $attributes .= ' class="menu-link ' . ( $depth > 0 ? 'sub-menu-link' : 'main-menu-link' ) . '"';

        $item_output = sprintf( '%1$s%3$s%4$s%5$s%6$s',
            $args->before,
            $attributes,
            $args->link_before,
            apply_filters( 'the_title', $item->title, $item->ID ),
            $args->link_after,
            $args->after
        );

        // build html
        $output .= apply_filters( 'walker_nav_menu_start_el', $item_output, $item, $depth, $args );
    }
}

veja o códice que explica bem.

    
por Firestorm_dev 06.04.2014 / 12:54
0

Às vezes isso acontece quando um menu ainda não foi criado. O motivo pelo qual você não pode usar ou estender a classe Walker_Nav_Menu é porque o menu real que você vê quando chama o menu primary nav sem um walker é, na verdade, o retorno para wp_page_menu() . Para que isso funcione com um andador, um menu precisará ser criado e a caixa de seleção Primário precisará ser verificada.

    
por Clint Stegman 15.03.2017 / 23:57
-1

Custom_Nav_Walker coloca o arquivo function.php

add_theme_support( 'nav-menus' );

class Custom_Nav_Walker extends Walker_Nav_Menu {

    function start_lvl(&$output, $depth = 0, $args = array()) {
        $output .= "\n<div class=\"submenu\">\n";
    }

    function end_lvl(&$output, $depth = 0, $args = array()) {
        $output .= "\n</div>\n";
    }

    function start_el(&$output, $item, $depth = 0, $args = array(), $id = 0) {
        parent::start_el( $item_html, $item, $depth, $args );
        if ( $item->is_dropdown && ( $depth === 0 ) ) {
            $output .= "<a href=\"".esc_url($item->url)."\">".esc_attr($item->title)."</a>";
        } elseif ($depth === 0) {
            $output .= "<a href=\"".esc_url($item->url)."\">".esc_attr($item->title)."</a>";
        } elseif ($depth > 0) {
            $output .= "<a href=\"".esc_url($item->url)."\">".esc_attr($item->title)."</a>";
        }
    }

nav_menu colocar header.php

<?php
$defaults = array(
    'theme_location'  => '',
    'menu'            => 'Project Nav', //menu name
    'container'       => false,
    'container_class' => ' ',
    'container_id'    => '',
    'menu_class'      => 'nav',
    'menu_id'         => '',
    'echo'            => true,
    'before'          => '',
    'after'           => '',
    'link_before'     => '',
    'link_after'      => '',
    'items_wrap'      => '<div id="%1$s" class="%2$s">%3$s</div>',
    'depth'           => 0,
    'walker'          => new Custom_Nav_Walker() 
);

wp_nav_menu( $defaults );
?>
    
por Nirav Patel 29.10.2015 / 10:34