如何以编程方式将菜单设置为主菜单?

时间:2018-06-01 作者:Kenny Wyland

我已经读过了How to switch between the Primary Menus programmatically? 但它实际上并没有回答这个问题。公认的答案只是两个变通方法,但不是问题的实际答案。

当我的主题被激活时,我会创建几个菜单,并将其中一个标记为主菜单。

有没有一个wordpress函数可以让我通过编程创建的菜单成为主菜单?我是一名经验丰富的开发人员,但我对wordpress还是个新手,函数中的术语让我很难在codex中找到我想要的东西。非常感谢您的帮助。

2 个回复
SO网友:Kenny Wyland

我翻阅了wordpress代码,看看当我从管理员界面提交表单时发生了什么,看看它调用了什么函数(并做了一个测试)var_export() ,并看到它正在调用set_theme_mod( \'nav_menu_locations\', $menu_locations );. 我已经更新了我的代码来使用它,它似乎正在工作:

$locations = get_theme_mod(\'nav_menu_locations\');
$locations[\'primary\'] = $menu_id;
set_theme_mod( \'nav_menu_locations\', $locations );
当我试图找出如何做到这一点时,让我感到困惑的一件事是get_theme_mod() 表示它返回一个字符串,但在本例中它返回的是一个数组,因此我认为它不会起作用。

SO网友:Liam Stewart

听起来你在找这个:

添加到functions.php

$locations = get_theme_mod(\'nav_menu_locations\');
$locations[\'primary-menu\'] = $term_id_of_menu;
set_theme_mod( \'nav_menu_locations\', $locations );
资料来源:https://stackoverflow.com/a/19637827/7243209

结束

相关推荐

Organize functions.php

组织职能的最佳方式是什么。php的性能?我有几个add\\u操作调用、几个add\\u主题支持、几个add\\u过滤器和4个附加函数。对于面包屑、样式表、注册菜单和小部件。我们是否需要遵守订单?例如,首先是所有add\\u过滤器函数,然后是add theme\\u support等。不确定添加代码是否相关,因为这是一个一般性问题。如果需要,我很乐意更新这篇文章。