1

昨年、ウォーカーを使用して、Wordpress メニューに要素を追加することができました。( Wordpress メニューに親メニューの説明を追加するにはどうすればよいですか? )

現在、ウォーカーは私の関数ファイルで次のように見えます。

// Submenu walker to add image
class submenu_walker extends Walker_Nav_Menu {
    function start_lvl( &$output, $depth = 0, $args = array() ) {
        $indent = str_repeat("\t", $depth);
        global $description;
        $output .= "<ul class='sub-menu'><li class='menu-image-container'><div class='menu-image'></div><div class='menu-description'>".$description."</div></li>";
    }
    function end_lvl( &$output, $depth = 0, $args = array() ) {
        $indent = str_repeat("\t", $depth);
        $output .= "<li><div class='clear'></div></li></ul>";
    }
}

基本的に、私がやりたかったことは、ウェブサイトの最初のレベルの各サブメニューに画像と短い説明を追加することでした: www.bellavou.co.uk

このサイトにアクセスすると、CSS を使用して、表示したくない他のすべてのインスタンスを非表示にしているため、問題なく表示されることがわかります。しかし、調べてみると、親メニュー項目内のすべてのサブメニューにメニュー画像コンテナーが追加されていることがわかります。

つまり、'Face' 内には、'Face'、'Eye' および 'Ear' サブメニュー内にメニュー項目 div があり、メイン サブメニュー内に表示されているものもあります。

メインのものだけを表示したいのですが、これは深度設定を変更することで実現できると思いますが、試してみましたが、何も変更されていません。

最上位の親サブメニュー内で一度だけ新しいサブメニューを作成するにはどうすればよいですか?

更新と解決:

ルールが適用される深さという点で、私は正しい方向に沿って考えていたことがわかりました。しかし、私が持っている既存のサブメニューについては考えていませんでした。

// Submenu walker to add image
class submenu_walker extends Walker_Nav_Menu {
    function start_lvl( &$output, $depth = 0, $args = array() ) {
        $indent = str_repeat("\t", $depth);
        if(0 == $depth) {
            global $description;
            $output .= "<ul class='sub-menu'><li class='menu-image-container'><div class='menu-image'></div><div class='menu-description'>".$description."</div></li>";
        } else {
            $output .= "<ul class='sub-menu'>";
        }
    }
    function end_lvl( &$output, $depth = 0, $args = array() ) {
        $indent = str_repeat("\t", $depth);
        if(0 == $depth) {
            $output .= "<li><div class='clear'></div></li></ul>";
        } else {
            $output .= "</ul>";
        }
    }
}

これにより、親サブメニューの最上部に画像 div のみが 1 回表示され、その他は子項目のみが表示されるように修正されました。

4

1 に答える 1

0

あなたの質問を正しく理解できたと思います。このイメージ コンテナを 1 つのレベルだけにしたい場合は、チェックしてください。if ( $depth == $desired_level)

// Submenu walker to add image
class submenu_walker extends Walker_Nav_Menu {
    function start_lvl( &$output, $depth = 0, $args = array() ) {
        $indent = str_repeat("\t", $depth);
        if ( $depth == 0 ) {
            global $description;
            $output .= "<ul class='sub-menu'><li class='menu-image-container'><div class='menu-image'></div><div class='menu-description'>".$description."</div></li>";
        } else {
           $output .= "<ul class='sub-menu'>";
        }

    }
    function end_lvl( &$output, $depth = 0, $args = array() ) {
        $indent = str_repeat("\t", $depth);
        if ( $depth == 0 ) {
            $output .= "<li><div class='clear'></div></li></ul>";
        } else {
           $output .= "</ul>";
        }
    }
}

あなたのケースで $depth を 0 にするか 1 にするかはわかりません。試してみてください。

于 2016-10-25T10:56:48.450 に答える