0

モバイル ビューにドロップダウン (選択) メニューを追加したい Wordpress テーマがあります。コードを header.php、function.php、および custom.js ファイルに jQuery に追加します。

WordPressの「mainNav」メニューセクションにメニューが存在する場合、それは非常にうまく機能します(URLをリンクし、クリック可能です)。

しかし、メニューをオフにすると、Developer Debug Bar プラグインに 2 つの通知が届きます。45 行目と 50 行目の「Notice: Trying to get properties on a non object」。

ここに私のコードがあります: http://i.stack.imgur.com/uNqru.png

ナビゲーションメニューが空だったり、値が空だったり、nullだったりしたのかもしれませんが、ハックをどのように修正したのかわかりません。誰でも私を助けてもらえますか?ありがとうございました!

//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_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
}
于 2013-11-08T01:00:19.260 に答える