【问题标题】:walker menu, get parent element in a dropdown and child element in another elementwalker 菜单,在下拉菜单中获取父元素,在另一个元素中获取子元素
【发布时间】:2018-04-11 22:58:56
【问题描述】:

这是我的情况,我正在尝试自定义 wordpress 菜单:

  • 在选择下拉菜单中显示的所有父元素
  • 所有子元素都显示在另一个选择下拉列表中。

到目前为止,我的助行器是这样的:

  class My_Walker_Nav_Menu_language extends Walker_Nav_Menu {

function start_el(&$output, $item, $depth, $args) {
    $url = '#' !== $item->url ? $item->url : '';
    $output .= '<option value="' . $url . '">' . $item->title;
}   
function end_el(&$output, $item, $depth){
    $output .= "</option>\n$indent"; // replace closing </li> with the option tag
}

}

问题是,它在同一个选择下拉列表中添加父元素和子元素,而不是两个单独的一个。 .

如何实现?

如果能得到一些帮助,那就太好了,

谢谢

-- 编辑--

例子:

如果我有这样的菜单:

<ul id="menu-network-menu" class="menu">
<li id="menu-item-537" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children YO menu-item-537">
    <a href="#">Europe</a>
    <ul class="sub-menu">
        <li id="menu-item-538" class="blog-id-4 mlp-language-nav-item menu-item menu-item-type-language menu-item-object-mlp_language menu-item-538">
            <a rel="alternate" href="http://mysite.local/fr/?noredirect=fr_FR">
                 French FR</a>
        </li>
        <li id="menu-item-542" class="blog-id-1 mlp-language-nav-item menu-item menu-item-type-language menu-item-object-mlp_language mlp-current-language-item menu-item-542">
            <a rel="alternate" href="http://mysite.local/">
                English (UK)</a>
        </li>
    </ul>
</li>
<li id="menu-item-541" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children YO menu-item-541">
    <a href="#">America</a>
    <ul class="sub-menu">
        <li id="menu-item-539" class="blog-id-5 mlp-language-nav-item menu-item menu-item-type-language menu-item-object-mlp_language menu-item-539">
            <a rel="alternate" href="http://mysite.local/cr/?noredirect=es_CO">
                 CR</a>
        </li>
    </ul>
</li>
<li id="menu-item-540" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children YO menu-item-540">
    <a href="http://Asia">Asia</a>
    <ul class="sub-menu">
        <li id="menu-item-543" class="blog-id-6 mlp-language-nav-item menu-item menu-item-type-language menu-item-object-mlp_language menu-item-543">
            <a rel="alternate" href="http://cn.mysite.local/?noredirect=zh">
                 China</a>
        </li>
    </ul>
</li>

<select>
<option>EUROPE</option
<option>AMERICA</option
<option>ASIA</option
</select>

<select>
<option>French FR</option
<option>English (UK)</option
<option> CR</option
<option>China</option
</select>

【问题讨论】:

    标签: javascript php wordpress wp-nav-walker


    【解决方案1】:

    据我了解,如果我正确理解您的问题,您想更改所有菜单以选择下拉菜单,那么这里是工作功能:

    class My_Walker_Nav_Menu_language  extends Walker_Nav_menu {
    
    
    public  function start_el( &$output, $item, $depth = 0, $args = array(), $id = 0 ){ //li a span
    $url = '#' !== $item->url ? $item->url : '';
    
    if ($item->menu_item_parent == 0){ 
    $output .= '<select><option value="' . $url . '">' . $item->title;
    }
    $output .= ' <option value="' . $url . '">' . $item->title;
    
    }
    function end_el(&$output, $item, $depth = 0, $args = Array()){ // closing li a span
    if ($item->menu_item_parent == 0){ 
    $output .= "</option></select> "; // replace closing </li> with the option tag
    }
    $output .= "</option>"; // replace closing </li> with the option tag
    }
    
    }
    

    【讨论】:

    • 嗨 Kashalo,谢谢你,我想要的是 almos tthis。当前使用您的代码,它会为每个父项创建一个选择下拉列表。我想只有两个选择下拉菜单。第一个选择下拉菜单将仅包含菜单的父项。第二个选择下拉列表将仅包含子项。让我知道 tat 是否有意义?我将使用 html 更新我的问题以提供帮助。非常感谢它已经比我的更好了!
    • 是的,请用一些您希望重写代码的基本 html 示例更新您的问题
    • 有什么想法@kashalo?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-27
    • 2021-11-02
    • 1970-01-01
    • 2012-05-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多