首页 > 解决方案 > add_action('init', ...) 和 add_action('admin_menu', ...) 的区别

问题描述

我已经为加载菜单的 wordpress 编写了一个插件。有两种类型的我可以加载菜单并且两者都在工作。init 在 admin_menu 或 admin_menu 在 init 之前加载的区别是什么?这只是关于加载时间的事情吗?或者我什么时候应该使用它们中的哪一个?我猜 admin_menu 只是用于加载菜单,而 init 可以做更多事情,而我可以使用 admin_menu 来添加这个菜单,但我真的很困惑何时以及为什么使用它们中的哪一个。我的代码在这里:

add_action('admin_menu','admin_menu_option');
function admin_menu_option(){add_menu_page('My Script','My-Site','manage_options','admin-menu','my_page','',200);}

或者

add_action('init','admin_menu_option');
function admin_menu_option(){add_menu_page('My Script','My-Site','manage_options','admin-menu','my_page','',200);}

在网站上:还有其他类似问题的主题,但这对我没有帮助:

WordPress 插件自定义菜单和子菜单 什么是 add_action('init register_activation_hook vs add_action('init')

如何修复 add_action?

来自官方来源的信息在这里: https ://codex.wordpress.org/Plugin_API/Action_Reference/init但这对我也没有帮助。

https://codex.wordpress.org/Plugin_API/Action_Reference/admin_menu 他们写道 admin_init 是在 admin_menu 之后调用的,但是“init”是什么?

标签: phpwordpress

解决方案


init 用于更一般的插件初始化,并在站点前端和 wp-admin 中为每个页面视图执行。

admin_menu 仅在实际显示管理面板菜单时才会触发,因此使用它来添加菜单项会更有效。

它也在 init 之后执行,因此如果您有一些依赖项需要首先执行它们的 init 函数,那么您可以确定在 admin_menu 被触发时所有这些都已完成。


推荐阅读