WordPress内置菜单功能的替代方案

时间:2013-01-04 作者:supertrue

我网站上的主菜单包含大约30个项目,我再也无法保存它了。这似乎是fairly common problem Wordpress中有更大的菜单。我在一个专门的服务器上,对PHP内存和执行时间进行了非常慷慨的设置,但超过了一定的大小,我就无法保存菜单。

因此,我需要Wordpress内置菜单系统的替代品。我想让设置尽可能灵活和快速地进行编辑。如果需要,我可以编辑平面文件,但越简单越好。

Idea#1

将菜单的HTML复制到静态模板文件中,并替换对wp_nav_menu() 具有get_template_part(\'my_menu_file\').

问题我不知道如何添加current-menu-item 类设置为当前菜单项。我可以不用添加其他实用CSS类wp_nav_menu, 但是current-menu-item 非常重要。

想法#2

由于菜单是分层的,我可以为顶级项目创建一个菜单,并为每个下拉菜单创建单独的菜单,然后使用如下插件UberMenu 将子菜单附加到其顶层项目。

问题

为了让插件生成的菜单看起来与当前菜单完全相同,我必须进行大量的调整和改装。

是否有其他方法或解决方案在这里有意义?

1 个回复
SO网友:Milo

正如@chrisguitarguy所说,您很可能可以通过php解决这个问题。ini设置。具体来说,我遇到了一个客户机的问题,通过设置max_input_vars 到2000年左右。

然而,在某些情况下,菜单可能会达到无法承受的大尺寸,您可能需要一种不同的方法来简单地从可用性的角度来管理它们。例如,如果必须将一个项目拖动到滚动页面上,则将其添加到包含数百个项目的菜单中可能是一件麻烦事。在这种情况下,一个潜在的解决方案可能是将菜单分解为每个顶级项的单独菜单,然后通过移除外部ul 并将它们结合起来。这种方法的明显缺点是顶级项的数量和顺序是固定的,除非您提供一些方法来单独设置和动态注册菜单。

$menu_one = wp_nav_menu(
    array(
        \'echo\' => 0,
        \'container\' => false,
        \'menu_class\' => \'\',
        \'menu_id\' => \'\',
        \'theme_location\' => \'menu_one\'
    )
);

$menu_two = wp_nav_menu(
    array(
        \'echo\' => 0,
        \'container\' => false,
        \'menu_class\' => \'\',
        \'menu_id\' => \'\',
        \'theme_location\' => \'menu_two\'
    )
);

$menu_one = preg_replace( array( \'#^<ul [^>]*>#\', \'#</ul>$#\' ), \'\', $menu_one );
$menu_two = preg_replace( array( \'#^<ul [^>]*>#\', \'#</ul>$#\' ), \'\', $menu_two );

echo \'<ul id="main-menu">\' . $menu_one . $menu_two . \'</ul>\';

结束

相关推荐

WooCommerce dynamic menus

我有一个基本的WordPress网站,设置了Suffusion主题和WooCommerce插件。这在大多数情况下都很有效,但是当我让人们点击/悬停在“Shop”菜单图标上时,我希望它能够动态地下拉我定义的产品类别。我如何做到这一点?我肯定有关于这个主题的文档,但我不确定要查找什么。我主要是一名系统管理员。