gpt4 book ai didi

javascript - 将 data-filter 属性添加到 wp_nav_menu

转载 作者:行者123 更新时间:2023-12-03 09:21:46 24 4
gpt4 key购买 nike

我正在使用自定义主题,我想添加 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> 的代码在哪里项目。我看到<ul>在哪里是在我的 functions.php 中创建的文件。但在<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";
}
}

这看起来正确吗?

关于javascript - 将 data-filter 属性添加到 wp_nav_menu,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31820784/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com