【发布时间】:2014-08-12 00:17:16
【问题描述】:
在 WordPress 中,当使用导航菜单时,二级菜单被赋予类 sub-menu。例如:
<ul>
<li>
<a title="Page 1" href="/page-1/">Page 1</a>
<ul class="sub-menu">
<li>
<a title="Sub page 1" href="/sub-page-1/">Sub page 1</a>
</li>
<li>
<a title="Sub page 2" href="/sub-page-2/">Sub page 2</a>
</li>
</ul>
</li>
</ul>
我正在使用Bootstrap 3,因此需要将该类名设为dropdown-menu。到目前为止,我的尝试是将所有 dropdown-menu 类从 bootstrap.css 复制到我的主题 style.css 中,并将它们的名称更改为 sub-menu。这不是一个好方法,因为当我下次升级 Bootstrap 时,我需要检查是否有任何变化。
我的下一个想法是过滤类名。 WordPress 是否提供了一个过滤器,可以让我更改这个类名?
更新
我找到了一个walker 解决方案here,它可以让我更改sub-menu 类。
class My_Walker_Nav_Menu extends Walker_Nav_Menu {
function start_lvl(&$output, $depth) {
$indent = str_repeat("\t", $depth);
$output .= "\n$indent<ul class=\"my-sub-menu\">\n";
}
}
我将其直接粘贴到我的主题的functions.php 中。这允许我更改类名,但我现在的问题是我收到以下 PHP 调试通知:
严格标准:My_Walker_Nav_Menu::start_lvl() 的声明 应该与 Walker_Nav_Menu::start_lvl(&$output, $depth = 0,$args = 数组)在 /wp-content/themes/my-theme/functions.php 在第 224 行
我应该将walker 直接粘贴到我的主题的functions.php 中吗?我哪里错了?
【问题讨论】:
-
这个需要使用walker...
-
为什么需要助行器?
-
如果你想改变 sub_menu 类...我认为 wp 中没有任何功能可以改变这个类。仅用于 wp 菜单中的自定义
-
在搜索 walker 解决方案后,我找到了这个解决方案,但不完全确定如何使用它:stackoverflow.com/a/5048792/1709033 - 有什么想法吗?它直接进入我主题的functions.php吗?
-
我更喜欢非 jQuery 解决方案。我在上面链接到的助行器看起来很有前途,我只是不知道如何使用它。
标签: php css wordpress twitter-bootstrap