WordPress过滤器挂钩到菜单<li>项目并添加自定义属性</li>

时间:2014-07-15 15:43:52

标签: php wordpress-theming hook wordpress

我有一个WordPress模板,我正在尝试构建,我似乎无法弄清楚如何挂钩到WordPress输出的菜单,并为该菜单的<li>标签添加自定义属性。当前菜单输出如下:

<ul id="menu-main-menu-1" class="top-bar-menu right">
<li class="divider"></li>
<li class="menu-item "><a href="#home">Home</a></li>
<li class="divider"></li>
<li class="menu-item"><a href="#about">About</a></li>
<li class="divider"></li>
<li class="menu-item"><a href="#work">My Work</a></li>
<li class="divider"></li>
<li class="menu-item"><a href="#contact">Contact</a></li>
</ul>

(这些链接仅用于样本)

我需要WordPress自动将以下属性添加到<li>标记:data-magellan-arrival="[target]"

[Target]需要由菜单项对应的page_ID自动填充。例如,假设第一个<li><a href="">[PAGE]</a></li>链接是Home,Home的page_ID是“21”(示例)。我需要将data-magellan-arrival="[target]"内的<li>设置为data-magellan-arrival="21"

所以看起来像是:<li class="menu-item" data-magellan-arrival="21"><a href="">[PAGE]</a></li>

我会诚实地对你说,我在PHP上的表现还不是很好,而且WordPress过滤/挂钩的次数要少得多。希望有人可以指出我正确的方向或告诉我如何做到这一点。

谢谢!

1 个答案:

答案 0 :(得分:0)

这应该有效:

//add to functions.php
add_filter('nav_menu_link_attributes', 'magellanlinkfilter');
function magellanlinkfilter($val)
{
    $postid = url_to_postid( $val['href'] );
    $val['data-magellan-arrival'] = $postid;
    return $val;
}

以下是完整的挂钩列表:http://adambrown.info/p/wp_hooks