“注意:尝试在非对象上获取属性”在php Wordpress中选择NavMenu

时间:2013-11-08 00:48:32

标签: javascript php wordpress function drop-down-menu

我有一个Wordpress主题,我想在移动视图中添加一个下拉(选择)菜单。我在我的custom.js文件中的header.php,function.php和jQuery中添加了代码。

如果WordPress中的“mainNav”菜单部分中存在菜单,它的效果非常好(它链接了网址,它是可点击的)。

但如果我关闭菜单,我会收到2个Developer Debug Bar插件的通知。 “注意:尝试在第45行和第50行中获取非对象的属性。

这是我的代码:http://i.stack.imgur.com/uNqru.png

我想也许如果导航菜单是空的,值是空的,或者是空的,但我不知道黑客如何纠正它。有人能帮帮我吗?谢谢!

//DropDown Select Navigation for the Main Menu
function wp_nav_menu_dropdown( $args = array() ) {
$defaults = array(
    'theme_location' => '',
    'menu_class' => 'mainNav',
);
$args = wp_parse_args( $args, $defaults );
if ( ( $menu_locations = get_nav_menu_locations() ) && isset( $menu_locations[ $args['theme_location'] ] ) ) {
    $menu = wp_get_nav_menu_object( $menu_locations[ $args['theme_location'] ] );

    $menu_items = wp_get_nav_menu_items( $menu->term_id );
    ?>
        <select id="menu-<?php echo $args['theme_location'] ?>" class="<?php echo $args['menu_class'] ?>">
            <option value=""><?php _e( 'Navigation Menu' ); ?></option>
            <?php foreach( (array) $menu_items as $key => $menu_item ) : ?>
                <option value="<?php echo $menu_item->url ?>"><?php echo $menu_item->title ?></option>
            <?php endforeach; ?>
        </select>
    <?php
}
else {
    ?>
        <select class="menu-not-found">
            <option value=""><?php _e( 'Menu Not Found' ); ?></option>
    </select>
    <?php
}
}

1 个答案:

答案 0 :(得分:0)

您想要添加菜单,但是您已将其关闭?我不明白。

编辑:

阅读完评论后,我理解你的目的。

根据https://codex.wordpress.org/Function_Reference/wp_get_nav_menu_object函数wp_get_nav_menu_object如果没有菜单则返回false,因此如果代码不为false,则可以运行代码。

$menu = wp_get_nav_menu_object( $menu_locations[ $args['theme_location'] ] );
if($menu !== false) {
    $menu_items = wp_get_nav_menu_items( $menu->term_id );
    ?>
        <select id="menu-<?php echo $args['theme_location'] ?>" class="<?php echo $args['menu_class'] ?>">
            <option value=""><?php _e( 'Navigation Menu' ); ?></option>
            <?php foreach( (array) $menu_items as $key => $menu_item ) : ?>
                <option value="<?php echo $menu_item->url ?>"><?php echo $menu_item->title ?></option>
            <?php endforeach; ?>
        </select>
    <?php
}