簡體   English   中英

將數據過濾器屬性添加到wp_nav_menu

[英]Add data-filter attribute to wp_nav_menu

我正在使用自定義主題,我想向菜單鏈接添加data-filter屬性。 我沒有構建主題,所以我在努力確定如何添加該主題。

我相信在我的functions.php中有以下代碼可以加載我的菜單:

//Default WP menu
    function litho_default_wp_menu_off(){}
        function litho_default_wp_menu()
    {
        $args = array(
            'sort_column' => 'menu_order, post_title',
            'menu_class'  => 'menu',
            'include'     => '',
            'exclude'     => '',
            'echo'        => false,
            'show_home'   => false,
            'link_before' => '',
            'link_after'  => '' );

        $menu = wp_page_menu( $args );
        $menu = preg_replace('/^(<div class\="menu"><ul>)/i','',$menu);
        $menu = preg_replace('/(<\/ul><\/div>)$/i','',$menu);

        echo '<ul class="simple-nav">'.$menu.'</ul>';
    }

class litho_responsive_menu extends Walker_Nav_Menu
{
    function start_el(&$output, $items, $depth, $args)
    {
        global $wp_query;

        $visual_indent = ( $depth ) ? str_repeat('&nbsp;&nbsp;&nbsp;', $depth) : '';

        $output .= '<form name="menu_selector" method="post" action="#">';
        $output .= '<select name="url_list" onchange="gotosite()">';
        $output .= '<option value="" selected="selected" disabled="disabled">Please select...</option>';

        foreach($items as $item)
        if($depth != 0)
            $output .= '<option value="' . esc_attr( $item->url ) .'">'. $visual_indent . apply_filters( 'the_title', $item->title, $item->ID ) . '</option>';
        else
            $output .= '<option value="' . esc_attr( $item->url ) .'">'.$prepend.apply_filters( 'the_title', $item->title, $item->ID ).'</option>';

        $output .= '</select>';
        $output .= '</form>';
        // $output .= apply_filters('walker_nav_menu_start_el', $item_output, $item, $depth, $args );
    }

    function end_el(&$output, $item, $depth) {
        return;     
    }
}

並輸出如下所示的菜單:

<div class="row" id="main_menu">
    <div class="columns six">
        <nav role="navigation">
            <ul class="simple-nav">
                <li class="page_item page-item-15 current_page_item"><a href="http://192.168.0.16:8888/">HOME</a></li>
                <li class="page_item page-item-38"><a href="http://192.168.0.16:8888/directing/">DIRECTING</a></li>
                <li class="page_item page-item-40"><a href="http://192.168.0.16:8888/compositing/">COMPOSITING</a></li>
            </ul>
        </nav>
    </div>
</div>

但是,我將同位素用於主題,並希望使用過濾。 因此要添加一個具有鏈接名稱值的數據過濾器屬性。
因此,例如,用於DIRECTING的鏈接將具有data-filter=".directing"

<ul id="filters">
    <li><a href="#" class="all" data-filter="*">show all</a></li>
    <li><a href="#" class="directing" data-filter=".directing">directing</a></li>
    <li><a href="#" class="compositing" data-filter=".compositing">compositing</a></li>
</ul>

但是我無法確定<li>項目的代碼在哪里。 我在我的functions.php文件中看到了<ul>的創建位置。 但是在<ul>標記之間僅顯示.$menu.

當我查看$ menu時,沒有提及任何列表項,也沒有提及將data-filter屬性添加到其中的方法。

如何將data-filter屬性添加到菜單列表項。

謝謝

我設法通過在$ args數組中添加一個walker來實現這一點:

$args = array(
    'sort_column' => 'menu_order, post_title',
    'menu_class'  => 'menu',
    'include'     => '',
    'exclude'     => '',
    'echo'        => false,
    'show_home'   => false,
    'link_before' => '',
    'link_after'  => '',
    'walker' => new Custom_Walker_Nav_Menu );

然后添加此自定義沃克。

class Custom_Walker_Nav_Menu extends Walker_Nav_Menu {
    function start_el(&$output, $page, $depth = 0, $args = array(), $id = 0) {
        if ( $depth )
            $indent = str_repeat("\t", $depth);
        else
            $indent = '';

        extract($args, EXTR_SKIP);
        $linkName = apply_filters( 'the_title', $page->post_title, $page->ID );
        $output .= $indent . '<li id="item_'.$page->ID.'"><a href="#" class="'.strtolower($linkName).'" data-filter=".'.strtolower($linkName).'">'.$linkName.'</a>';
    }


    function end_el(&$output, $page, $depth = 0, $args = array()) {
        $output .= "</li>\n";
    }
}

這看起來正確嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM