web-dev-qa-db-ja.com

空白のメニューが表示される

以下を使用するか、または他のカスタムのWalker_Nav_Menuを使用すると空白のナビゲーションメニューが表示されるように思われるので、デフォルトを指定して問題が発生していないことを確認しました。

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

コンテキスト内

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

上のものは現在、私が子テーマのheader.phpに書いていますが、元のテーマでもデフォルトのwalkerを使っていますが、明示的には述べられていません。

上記のようにPHPで

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

エラーを出します。

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

テーマのデフォルトで見つかったphp付き

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

あなたのメニューがあなたのfunctions.phpに正しく登録され、そしてWPダッシュボードで有効にされていることを確認する必要があります。

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

それ以外の場合、私は空の箇条書きの長いリストに直面していました。

http://codex.wordpress.org/Navigation_Menus

2
Taig

全体的な問題はあなたがデフォルトのwalkerを使用しようとしていることだと思いますが、それをwalkerフィールドで宣言してwordpressにカスタムwalkerをロードしようとすることを宣言することによって、wp walkerは空のままでデフォルトでロードされます。

2つの選択肢

1/'walker' => new Walker_Nav_Menu() to 'walker' => ''をデフォルトで呼び出されるように変更します。

2 /宣言をnew themeslug_Walker_Nav_Menu()のような新しい名前に編集してから、function.phpに以下を追加します。

 
 class themeslug_walker_nav_menuはWalker_Nav_Menuを拡張します{
 
 // ulサブメニューにクラスを追加します
 function start_lvl(&$ output、$ depth) 
 //深さ依存クラス
 $ indent =($ depth> 0?str_repeat( "\ t"、$ depth): ''); // code indent 
 $ display_depth =($ depth + 1); //最初のサブメニューを0と数えているからです。[$ ____] $ classes = array(
 'サブメニュー'、
($ 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"。 $インデント「」。 "\ n"; 
} 
 
 //メインクラスとサブクラスをliとリンクに追加する
関数start_el(&$ output、$ item、$ depth、 $ args){
グローバル$ wp_query; 
 $ indent =($ depth> 0?str_repeat( "\ t"、$ depth): ''); // code indent 
 
 //深度依存クラス
 $ depth_classes = array(
($ depth == 0? 'main-menu-item': 'サブメニュー項目 ')、
($ depth> = 2?'サブサブメニュー項目 ':' ')、
($ depth%2?'メニュー項目 - 奇数 ':'メニュー項目偶数 ')、
'メニュー項目深さ '。$ depth 
); 
 $ depth_class_names = esc_attr(implode(' '、 $ depth_classes)); 
 
 //クラスを渡しました
 $ classes = empty($ item-> classes)? 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 '">'; 
 
 //リンク属性
 $ attributes =!empty($ item-> attr_title)? 'title ="'。 esc_attr($ item-> attr_title)。 '"': ''; 
 $属性。=!empty($ item-> target)? 'target ="'。 esc_attr($ item-> target)。 '"': ''; 
 $属性。=!empty($ item-> xfn)? 'rel ="'。 esc_attr($ item-> xfn)。 '"': ''; 
 $属性。=!empty($ item-> url)? 'href ="'。 esc_attr($ item-> url)。 '"': ''; 
 $ attributes。= 'class =" menu-link'。 ($ depth> 0? 'サブメニューリンク': 'メインメニューリンク')。 '"'; 
 
 $ 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); 
} 
} 

そのコーデックスを見てください。

0
Firestorm_dev

メニューがまだ作成されていないときに時々これが起こります。 Walker_Nav_Menuクラスを使用または拡張できないのは、ウォーカーなしでprimary navメニューを呼び出すと表示される実際のメニューは、実際にはwp_page_menu()へのフォールバックであるためです。これをウォーカーで使用するには、メニューを作成し、[プライマリ]チェックボックスをオンにする必要があります。

0
Clint Stegman

あなたはモバイル対応の目的でウォーカーメニューを使用しますか?そうであれば、それからあなたは別の解決策を探すことができます(あなたがウォーカーメニューであなたのエラーを直すことができない場合のみ)

あなたは、モバイルデバイス上のメインメニューを非表示にすることができますし、別のものを使用することができます。ここに例があります

<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

実際のオブジェクトは 'walker'として渡すべきです - その場で作成するのではありません。正しい方法は次のとおりです。

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

また、カスタムクラスでWalker_Nav_Menuを必ず拡張してください。

0
adrian7