¿Cualquier caminante causa un menú en blanco?

4

Al usar el siguiente, o cualquier otro Walker_Nav_Menu personalizado parece causar un menú de navegación en blanco, intenté especificar el valor predeterminado para asegurarme de que no me estaba volviendo loco pero aún queda en blanco el resultado ... Cualquier idea sobre lo que está mal ?

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

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

Lo anterior está actualmente en mi header.php de un tema secundario si eso marca alguna diferencia, y el tema original también usó el caminante predeterminado, sin embargo, no se mencionó explícitamente.

con php como arriba

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

Da errores:

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

con php como se encuentra por defecto en el 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>
    
pregunta Ryan The Leach 08.02.2014 - 20:09

6 respuestas

2

Debe asegurarse de que su menú esté correctamente registrado en su functions.php y luego activado en el Panel de control de WP.

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

De lo contrario, me enfrentaba a una larga lista de viñetas vacías.

enlace

    
respondido por el Taig 27.02.2014 - 12:39
0

Debes pasar un objeto real como 'caminante', no crear uno sobre la marcha. La forma correcta de hacerlo es:

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

También asegúrate de extender Walker_Nav_Menu en tu clase personalizada.

    
respondido por el adrian7 10.02.2014 - 00:13
0

¿Utiliza el menú de walker para propósitos móviles de respuesta? En caso afirmativo, entonces puede buscar otra solución (solo si no puede corregir sus errores con el menú del caminante)

puede ocultar el menú principal en dispositivos móviles y puede usar otro. Aquí hay un ejemplo

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

Creo que el problema total es que intentas usar el caminante predeterminado, pero al declararlo en el campo del caminante, le dices a WordPress que intentas cargar un caminador personalizado, el caminante wp se carga por defecto si se deja vacío.

dos opciones:

1 / change 'walker' => new Walker_Nav_Menu() to 'walker' => '' como se llama por defecto.

2 / edite la declaración a un nuevo nombre como: new themeslug_Walker_Nav_Menu () luego agregue lo siguiente a su function.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 );
    }
}

ver el códice se explica bastante bien.

    
respondido por el Firestorm_dev 06.04.2014 - 12:54
0

A veces esto sucede cuando todavía no se ha creado un menú. La razón por la que no puede usar o extender la clase Walker_Nav_Menu es que el menú real que ve cuando llama al menú de navegación primary sin un caminante es en realidad el recurso hacia wp_page_menu() . Para que esto funcione con un caminante, se deberá crear un menú y se deberá marcar la casilla de verificación Principal.

    
respondido por el Clint Stegman 15.03.2017 - 23:57
-1

Custom_Nav_Walker puso function.php file

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 put 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 );
?>
    
respondido por el Nirav Patel 29.10.2015 - 10:34

Lea otras preguntas en las etiquetas