我编写了一个wordpress插件,它连接到外部数据库并获取数据。它还为虚拟编辑器创建自定义按钮。通过单击此按钮,模式窗口已经打开,然后我通过ajax将表单加载到此窗口。
我创建了php文件作为ajax请求的处理程序。我需要从wordpress数据库中获取选项,但我不知道怎么做。如果我尝试将插件的主文件包含到我的处理程序中,我会遇到内部服务器错误500。。。
我编写了一个wordpress插件,它连接到外部数据库并获取数据。它还为虚拟编辑器创建自定义按钮。通过单击此按钮,模式窗口已经打开,然后我通过ajax将表单加载到此窗口。
我创建了php文件作为ajax请求的处理程序。我需要从wordpress数据库中获取选项,但我不知道怎么做。如果我尝试将插件的主文件包含到我的处理程序中,我会遇到内部服务器错误500。。。
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
) 首先在它内部。您可以通过以下方式执行此操作:
define(\'SHORTINIT\',true);
wp-blog-header.php 从WordPress根路径处理AJAX请求fatal error
使代码崩溃,从而请求响应。虽然如果您只是访问数据库函数/类,那么这些可能是最小的。总的来说,这是一种可行的方法,但可能意味着要做更多的工作,只需稍微增加AJAX响应性能时间,所以简单的答案可能更好。我试图在WordPress中为我的评论实现Ajax,使用this tutorial. 但我在将教程中的代码集成到自己的预构建主题时遇到了问题。问题是,我要么得到一个WP错误“检测到重复注释;看来你已经说过了!”或标准500错误。以下是我得到的:下面是我对ajax的评论。js文件如下所示: * Let\'s begin with validation functions */ jQuery.extend(jQuery.fn, { /* * check i