编辑或过滤Genesis导航的输出

时间:2014-01-02 作者:NW Tech

我正在尝试对默认Genesis导航编辑或应用过滤器genesis_do_nav

目前,我正在扩展Walker类以添加<span> 导航的链接文本周围带有数据属性。

class Menu_With_Data_Attr extends Walker_Nav_Menu {
    function start_el(&$output, $item, $depth, $args) {
        global $wp_query;
        $indent = ( $depth ) ? str_repeat( "\\t", $depth ) : \'\';

        $class_names = $value = \'\';

        $classes = empty( $item->classes ) ? array() : (array) $item->classes;

        $class_names = join( \' \', apply_filters( \'nav_menu_css_class\', array_filter( $classes ), $item ) );
        $class_names = \' class="\' . esc_attr( $class_names ) . \'"\';

        $output .= $indent . \'<li id="menu-item-\'. $item->ID . \'"\' . $value . $class_names .\'>\';

        $attributes = ! empty( $item->attr_title ) ? \' title="\' . esc_attr( $item->attr_title ) .\'"\' : \'\';
        $attributes .= ! empty( $item->target ) ? \' target="\' . esc_attr( $item->target ) .\'"\' : \'\';
        $attributes .= ! empty( $item->xfn ) ? \' rel="\' . esc_attr( $item->xfn ) .\'"\' : \'\';
        $attributes .= ! empty( $item->url ) ? \' href="\' . esc_attr( $item->url ) .\'"\' : \'\';

        $item_output = $args->before;
        $item_output .= \'<a\'. $attributes .\'><span data-hover="\'.$item->title.\'">\';
        $item_output .= $args->link_before . apply_filters( \'the_title\', $item->title, $item->ID ) . $args->link_after;
        $item_output .= \'</span></a>\';
        $item_output .= $args->after;

        $output .= apply_filters( \'walker_nav_menu_start_el\', $item_output, $item, $depth, $args );
    }
}
如何将该助行器应用于genesis\\u do\\u nav的输出?

1 个回复
最合适的回答,由SO网友:birgire 整理而成

您可以尝试使用wp_nav_menu_args 过滤器(未测试):

/**
 * Add the Menu_With_Data_Attr walker to the wp_nav_menu() used by genesis_do_nav()
 */
add_filter( \'wp_nav_menu_args\', function( $args ){

    if(    isset( $args[\'menu_class\'] ) 
        && \'menu genesis-nav-menu menu-primary\' === $args[\'menu_class\'] )
    {
        if( class_exists( \'Menu_With_Data_Attr\' ) )
        {
            $args[\'walker\'] = new Menu_With_Data_Attr(); 
        }
    }

    return $args;

});
添加Menu_With_Data_Attr 步行到wp_nav_menu() 使用人:genesis_do_nav().

结束

相关推荐

theme functions (hooks)

WordPress已经提出了这个问题,但没有答案。我只是想在这个论坛上试试,如果有人知道的话,因为我也有同样的问题。要使用jquery滑块编辑我的主题,如何转到该脚本?,显示“$主题->挂钩(\'content\\u before\');”在content div标记中。有人能帮忙吗?我的主题索引。php包含以下内容<div id=\"main\"> <?php $theme->hook(\'main_before\'); ?> &#x

编辑或过滤Genesis导航的输出 - 小码农CODE - 行之有效找到问题解决它

编辑或过滤Genesis导航的输出

时间:2014-01-02 作者:NW Tech

我正在尝试对默认Genesis导航编辑或应用过滤器genesis_do_nav

目前,我正在扩展Walker类以添加<span> 导航的链接文本周围带有数据属性。

class Menu_With_Data_Attr extends Walker_Nav_Menu {
    function start_el(&$output, $item, $depth, $args) {
        global $wp_query;
        $indent = ( $depth ) ? str_repeat( "\\t", $depth ) : \'\';

        $class_names = $value = \'\';

        $classes = empty( $item->classes ) ? array() : (array) $item->classes;

        $class_names = join( \' \', apply_filters( \'nav_menu_css_class\', array_filter( $classes ), $item ) );
        $class_names = \' class="\' . esc_attr( $class_names ) . \'"\';

        $output .= $indent . \'<li id="menu-item-\'. $item->ID . \'"\' . $value . $class_names .\'>\';

        $attributes = ! empty( $item->attr_title ) ? \' title="\' . esc_attr( $item->attr_title ) .\'"\' : \'\';
        $attributes .= ! empty( $item->target ) ? \' target="\' . esc_attr( $item->target ) .\'"\' : \'\';
        $attributes .= ! empty( $item->xfn ) ? \' rel="\' . esc_attr( $item->xfn ) .\'"\' : \'\';
        $attributes .= ! empty( $item->url ) ? \' href="\' . esc_attr( $item->url ) .\'"\' : \'\';

        $item_output = $args->before;
        $item_output .= \'<a\'. $attributes .\'><span data-hover="\'.$item->title.\'">\';
        $item_output .= $args->link_before . apply_filters( \'the_title\', $item->title, $item->ID ) . $args->link_after;
        $item_output .= \'</span></a>\';
        $item_output .= $args->after;

        $output .= apply_filters( \'walker_nav_menu_start_el\', $item_output, $item, $depth, $args );
    }
}
如何将该助行器应用于genesis\\u do\\u nav的输出?

1 个回复
最合适的回答,由SO网友:birgire 整理而成

您可以尝试使用wp_nav_menu_args 过滤器(未测试):

/**
 * Add the Menu_With_Data_Attr walker to the wp_nav_menu() used by genesis_do_nav()
 */
add_filter( \'wp_nav_menu_args\', function( $args ){

    if(    isset( $args[\'menu_class\'] ) 
        && \'menu genesis-nav-menu menu-primary\' === $args[\'menu_class\'] )
    {
        if( class_exists( \'Menu_With_Data_Attr\' ) )
        {
            $args[\'walker\'] = new Menu_With_Data_Attr(); 
        }
    }

    return $args;

});
添加Menu_With_Data_Attr 步行到wp_nav_menu() 使用人:genesis_do_nav().

相关推荐

Prevent loading of functions

我使用了一个主题,其中包括名为“Sharethis”的服务的共享功能和字体真棒。据我所知,函数是从函数中的以下行加载的。php。TT\\u队列::add\\u css(数组(“//netdna.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css”);TT\\u排队::add\\u js(array(\'https://ws.sharethis.com/button/buttons.js\'));如何使用子函数(因为父函数中的更改将在更新