将register_nav_menu挂钩到" init"的重点是什么?而不是直接调用它?

时间:2017-04-05 16:12:09

标签: wordpress menu

使用WordPress注册菜单的标准方法是将其添加到functions.php:

function register_menu() {
  register_nav_menu('main_menu', 'Main Menu');
}
add_action('init', 'register_menu');

但是为什么不直接从functions.php调用register_nav_menu()而不挂钩呢?

register_nav_menu('main_menu', 'Main Menu');

它工作正常,为什么还要打扰?

1 个答案:

答案 0 :(得分:1)

第一个也是最常见的"一般"相关的是,在加载functions.php时,wordpress尚未完全初始化,因此不一定"稳定"。对register_nav_menu()之类的东西来说,这一点不太重要,但值得一提。

第二个原因是你不能删除已宣布的东西"松散地"与remove_action()。在许多情况下,这虽然不一定是普遍适用的,但更为重要。

考虑到将来您或其他人正在根据您正在开发的主题创建子主题。没有一个好方法让子主题停止主题宣布菜单。这只是一个例子,还有其他一些例子可以阻止另一个组件做某事可能很重要。

在首次开发主题时,这些问题似乎并不是特别相关,但随着时间的推移,这些类型的最佳实践问题成为维护的真正头痛问题。