这与AJAX本身没有多大关系,它与插件/主题开发的核心原则有关——始终使用最新的钩子来运行代码。听起来这个插件好像在admin_init
这是一个非常早期的钩子,除了通常的管理之外,还可以从AJAX和XML-RPC触发。更合适的钩子可能是admin_menu
或admin_notices
假设您有一些不限于一页的通用管理代码。
试图检测导致代码执行的代码路径的想法违反了基本的软件开发原则-功能代码应该有明确的输入,OOP代码应该只引用对象状态,而不引用其他任何内容。您的代码应该尽可能不受平台的影响,就像您可能希望明年在drupal中使用它一样。在现实生活中,drupal可能是不现实的,但代码越独立,就越容易使用自动单元测试工具进行测试,而不必费心设置整个WP环境。
但这有可能吗?我想到了两种方法,IIRC$_SERVER
属性包含正在运行的php脚本的路径,对于ajax,该脚本的文件名为....\\admin-ajax.php
, 或者,您可以使用PHP的回溯API检查调用堆栈,以了解您的来源。