以下を使用するか、または他のカスタムの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>
あなたのメニューがあなたのfunctions.php
に正しく登録され、そしてWPダッシュボードで有効にされていることを確認する必要があります。
add_action( 'init', register_nav_menu( 'navigation', __( 'Navigation' ) ) );
それ以外の場合、私は空の箇条書きの長いリストに直面していました。
全体的な問題はあなたがデフォルトの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); } }
そのコーデックスを見てください。
メニューがまだ作成されていないときに時々これが起こります。 Walker_Nav_Menu
クラスを使用または拡張できないのは、ウォーカーなしでprimary
navメニューを呼び出すと表示される実際のメニューは、実際にはwp_page_menu()
へのフォールバックであるためです。これをウォーカーで使用するには、メニューを作成し、[プライマリ]チェックボックスをオンにする必要があります。
あなたはモバイル対応の目的でウォーカーメニューを使用しますか?そうであれば、それからあなたは別の解決策を探すことができます(あなたがウォーカーメニューであなたのエラーを直すことができない場合のみ)
あなたは、モバイルデバイス上のメインメニューを非表示にすることができますし、別のものを使用することができます。ここに例があります
<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>
実際のオブジェクトは 'walker'として渡すべきです - その場で作成するのではありません。正しい方法は次のとおりです。
$myWalker = new Walker_Nav_Menu();
wp_nav_menu( array( 'theme_location' => 'primary', 'depth' => 3, 'walker' => $myWalker ) ); ?>
また、カスタムクラスでWalker_Nav_Menuを必ず拡張してください。