如何将数据属性添加到wordpress导航菜单中的<li>元素

时间:2015-11-07 04:44:17

标签: wordpress custom-data-attribute fullpage.js

我在wordpress网站上使用fullpage.js,并希望使用其中一个功能,即在li上添加一个类。但要做到这一点,你需要添加数据属性data-menuanchor。

我见过这个:

add_filter( 'nav_menu_link_attributes', 'my_nav_menu_attribs', 10, 3 );
function my_nav_menu_attribs( $atts, $item, $args )
{
  // The ID of the target menu item
  $menu_target = 113;

  // inspect $item
  if ($item->ID == $menu_target) {
    $atts['data-menuanchor'] = 's1';

  }
  return $atts;
}

除了它将属性添加到标签并且需要它在li标签上之外,它有效。

另外,如果我想对菜单上的所有项目执行此操作。我需要为所有项目执行此功能吗?我想我每次都要重命名这个函数吗?

由于

3 个答案:

答案 0 :(得分:3)

我不确定WP是否有针对此的特定过滤器/方法。您将不得不与wp_nav_menu_items一起进行一些手动DOM操作。

https://developer.wordpress.org/reference/hooks/wp_nav_menu_items/

function addDataAttr( $items, $args ) {
    $dom = new DOMDocument();
    $dom->loadHTML($items);
    $find = $dom->getElementsByTagName('li');

    foreach ($find as $item ) :
        $item->setAttribute('data-menuanchor','s1');
    endforeach;

    return $dom->saveHTML();

}

add_filter('wp_nav_menu_items', 'addDataAttr', 10, 2);

答案 1 :(得分:2)

我解决了这个问题,使用自定义链接并将链接中输入的url作为属性并将#字符替换为空。必须在functions.php文件中输入以下代码:

add_filter( 'nav_menu_link_attributes', 'add_data_atts_to_nav', 10, 4 );
    function add_data_atts_to_nav( $atts, $item, $args ) {
    $atts['data-menuanchor'] = strtolower(str_replace("#","",$item->url));
    return $atts;
}

附上我菜单的截图。

有任何问题告诉我,我很乐意帮助他们。

运气。

enter image description here

答案 2 :(得分:0)

实际上我正在为fullpage.js导航搜索类似的东西,我管理它设置了一个过滤器,可以从后端定制预先存在的title-attr并将其分配给'data-menuanchor'只是为了保持它即使我必须添加新内容,也至少可以扩展和维护。

这是我用过的东西。

function add_specific_menu_atts( $atts, $item, $args ) {

  $atts['data-menuanchor'] = $item->attr_title;


return $atts;

}

add_filter( 'nav_menu_link_attributes', 'add_specific_menu_atts', 10, 3 );