如何从单独的文件中获取设置?

时间:2016-04-05 作者:Danil Pyatnitsev

我编写了一个wordpress插件,它连接到外部数据库并获取数据。它还为虚拟编辑器创建自定义按钮。通过单击此按钮,模式窗口已经打开,然后我通过ajax将表单加载到此窗口。

我创建了php文件作为ajax请求的处理程序。我需要从wordpress数据库中获取选项,但我不知道怎么做。如果我尝试将插件的主文件包含到我的处理程序中,我会遇到内部服务器错误500。。。

1 个回复
SO网友:majick

Simple answer: <不要为AJAX请求添加单独的PHP文件。声明将在插件中使用的函数,并通过admin-ajax.php.

add_action(\'wp_ajax_custom_action_name\',\'custom_action_handler\');
// to make AJAX action available for non-logged in users:
add_action(\'wp_ajax_nopriv_custom_action_name\',\'custom_action_handler\');

function custom_action_handler() {
    global $wpdb;

    // optionally keep the actual functions separately
    // include(dirname(__FILE__).\'/ajax-handler.php\');
    // custom_ajax_handler_process(); // handle request

    // or just handle request here

    exit;
}

$endpoint = admin_url(\'admin-ajax.php\').\'?action=custom_action_name\';
WordPress将自动action 并将其与wp_ajax_ (和/或wp_ajax_nopriv_) 用于加载挂钩函数的挂钩后缀(custom_action_handler).

Complex answer: 您可以使用一个单独的PHP文件来处理AJAX请求,但您需要能够加载所需的WordPress函数和类(例如$wpdb) 首先在它内部。您可以通过以下方式执行此操作:

  1. define(\'SHORTINIT\',true);wp-blog-header.php 从WordPress根路径处理AJAX请求
步骤3是最难的部分,因为根据您所做的工作,您可能需要许多相互关联的函数,以便在没有fatal error 使代码崩溃,从而请求响应。虽然如果您只是访问数据库函数/类,那么这些可能是最小的。总的来说,这是一种可行的方法,但可能意味着要做更多的工作,只需稍微增加AJAX响应性能时间,所以简单的答案可能更好。

相关推荐

尝试在WordPress中实现AJAX注释,遇到WP错误

我试图在WordPress中为我的评论实现Ajax,使用this tutorial. 但我在将教程中的代码集成到自己的预构建主题时遇到了问题。问题是,我要么得到一个WP错误“检测到重复注释;看来你已经说过了!”或标准500错误。以下是我得到的:下面是我对ajax的评论。js文件如下所示: * Let\'s begin with validation functions */ jQuery.extend(jQuery.fn, { /* * check i