0

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

如果 WordPress 中我的“mainNav”菜单部分中存在菜单,它工作得很好(它链接了 url,它是可点击的)。

但是如果我关闭菜单,我会收到 2 条开发人员调试栏插件的通知。第 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
}
}
4

1 回答 1

0

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

编辑:

阅读您的评论后,我了解您的目的。

根据https://codex.wordpress.org/Function_Reference/wp_get_nav_menu_objectwp_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
}
于 2013-11-08T01:00:19.260 回答