php - 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')
来自官方来源的信息在这里: https ://codex.wordpress.org/Plugin_API/Action_Reference/init但这对我也没有帮助。
https://codex.wordpress.org/Plugin_API/Action_Reference/admin_menu 他们写道 admin_init 是在 admin_menu 之后调用的,但是“init”是什么?
解决方案
init 用于更一般的插件初始化,并在站点前端和 wp-admin 中为每个页面视图执行。
admin_menu 仅在实际显示管理面板菜单时才会触发,因此使用它来添加菜单项会更有效。
它也在 init 之后执行,因此如果您有一些依赖项需要首先执行它们的 init 函数,那么您可以确定在 admin_menu 被触发时所有这些都已完成。
推荐阅读
- sockets - 使用 ASCII 协议从 Java Socket 获取 NAK 开头的非打印字符
- python - 对于这个问题,什么是更 Pythonic 的解决方案?
- facebook-graph-api - 访问页面公共内容 - 需要应用审查,但为什么呢?
- javascript - Vue各种产品搜索
- sql-server - 如何将一个表中的多个值插入到另一个表中?
- tcl - ttk::treeview 的字体大小增加导致行重叠
- c# - 接收错误:过程或函数指定了太多参数
- python - 文件 ”
",第 879 行,在 _find_spec - reactjs - 从私有 gitlab 存储库中使用 npm 安装依赖项
- python - 搜索栏作为基本模板添加到一个类视图中 Django