如果您只是为自己的网站构建一个主题,那么您可以通过一些PHP循环轻松实现更难理解的主题:walker class 实现。毕竟,这个类只是穿过一个树状结构,什么也不做。如果您确切地知道您想要的树是什么样子的,那么可以直接使用PHP进行处理。
当你构建一些更通用的东西时,事情就不同了,比如一个可能有子主题的主题。然后,您需要用户的灵活性。例如,以walker_nav_menu
类,该类本身已经是walker类的扩展。默认情况下生成的html并没有那么大的优势。区别在于它包含的过滤器,例如nav_menu_css_class
, 允许用户更改附加到菜单的类<li>
在孩子的functions.php
. 例如:
add_filter(\'nav_menu_css_class\' , \'wpse240664_nav_class\' , 10 , 2);
function wpse240664_nav_class($classes, $item){
if(is_single() && $item->title == \'About Us\'){
$classes[] = \'highlight-this\';
}
return $classes;
}
使用此功能,子主题将在单个页面上的“关于我们”菜单项中添加“突出显示此”类。另一种方法是编辑菜单模板文件(可能是
header.php
). 只需修改一个菜单项,就必须复制整个菜单项
header.php
在您的孩子主题中。当父主题
header.php
更新后,您必须检查您的子副本以进行必要的更改。如果使用walker类,您可以避免所有这些。可能更难实现,但它为代码的其他用户节省了时间。