我之前在StackOverflow上问过这个问题。在意识到有专门针对WordPress的StackExchange之前。以下是旧问题的链接(供版主删除):
https://stackoverflow.com/questions/6862887/replacing-wordpress-core-functionality-with-a-plugin
我正在为自定义菜单布局创建WordPress插件。我很清楚,我可以很容易地将此菜单直接实现到主题中,并且我已经非常彻底地阅读了
wp_nav_menu()
, 另外,我已经尝试并测试了为替换默认WordPress菜单而创建的每个插件。
我希望使用一个插件,因为我的客户端将在几个不同的WordPress网站上实现这个功能,其中许多网站运行在不同的主题上,其中大多数都是我没有创建的主题,我不希望重新编写它们的代码,以防它们将来更新主题。
当我研究如何将菜单实现到主题中时,我发现只有两种好方法,因为在菜单显示时没有调用挂钩或过滤器。第一个是更改主题以查找插件(这类似于PixoPoint和许多其他菜单插件使用的方法):
header.php:
if(function_exists(\'pixopoint_menu\')){
pixopoint_menu();
} else {
wp_nav_menu();
}
第二种方法是walker类:
plugin.php:
class my_walker_class Extends Walker_Nav_Menu {
function start_el(&$output, $item, $depth, $args) {
/*
* Etc. Etc.
*/
}
}
header.php:
wp_nav_menu( Array( \'walker\' => \'my_walker_class\' ) );
但是,正如您所注意到的,这两种方法都需要修改标准标题。php文件。
理想情况下,我想简单地替换wp_nav_menu()
如果我的插件已加载,则该函数将为大多数主题提供插件支持,而无需编辑任何主题文件。有什么好办法吗?或者有没有更好的方法来编写我没有看到的菜单插件?