WP AJAX在“CURRENT_SCREEN”管理挂钩中不起作用

时间:2013-09-16 作者:iki_xx

我有一个类正在做一些后端工作(创建css和js文件,创建元盒,注册ajax挂钩等等)

当我只包含文件时,一切都很好。问题是这些文件包含在每个管理页面上。

为了只在我真正想要的页面上包含它们(CPT),我使用了\'current_screen\' 管理挂钩。

在那个钩子里使用很安全\'get_current_screen\' function

我使用该函数确定当前所在的页面,以便添加适当的类。接下来发生的事情是,我的类仅在CPT页面上继续按预期工作(生成css、js、创建元盒),但ajax挂钩停止工作(响应0)。

Ajax请求通过单击元盒内的按钮来触发。

我不确定到底发生了什么,没有php错误。

作品:

 include(plugin_dir_path(__FILE__) .\'/src/MyClass.php\');

 new MyClass();
损坏:

add_action(\'current_screen\',"iki_admin_current_screen");

function iki_admin_current_screen()
{

   $screen = get_current_screen();

   if($screen->id == \'portfolio\')
   {
      include(plugin_dir_path(__FILE__) .\'/src/MyClass.pnp;
      new MyClass();
   }

}
损坏:

include(plugin_dir_path(__FILE__) .\'/src/MyClass.
add_action(\'current_screen\',"iki_admin_current_screen");

function iki_admin_current_screen()
{

   $screen = get_current_screen();

   if($screen->id == \'portfolio\')
   {
      new MyClass();
   }

}
我想指出,该类适用于所有三个示例,但AJAX调用除外,它只适用于第一个示例。

1 个回复
SO网友:Milo

AJAX请求的上下文中没有当前屏幕,只有在进行AJAX调用的上下文中。

结束

相关推荐

为什么我的AJAX调用不起作用?

我在一个主题的函数中有类似的代码。php文件,但我想将其移动到插件。我组装了以下内容,但由于某种原因,此方法在AJAX调用时遇到问题,并且总是返回零。这里的目的是,表单将位于前端,可供登录或未登录的用户使用。以下是我的插件代码:/* Plugin Name: AAA Hello World Plugin URI: http://helloworld.com Description: AJAX response to form submission Version: 1.0&