即使admin-ajax.php
和Ajax API 是为了在ajax请求中使用而创建的,它们可以在正常的http请求中使用,没有任何问题,请注意is_admin()
即使用户未登录并且请求是从前端完成的,也将为true。
您需要做的是为ajax api创建回调。在插件中或functions.php
放置:
$survey_action = \'my_survey\';
add_action( "wp_ajax_{$survey_action}", \'my_survey_callback\' );
add_action( "wp_ajax_nopriv_{$survey_action}", \'my_survey_callback\' );
function my_survey_callback() {
echo "Welcome to the survey!";
exit(); // always exit() at the end, when using ajax api
}
现在,当您向
admin-ajax.php
包含设置为的“action”请求变量
"my_survey"
这个
my_survey_callback
功能将被触发。
因此,如果您现在在浏览器地址栏中输入一个url,如
http://www.example.com/wp-admin/admin-ajax.php?action=my_survey
服务器将回答“欢迎参加调查!”。
关于在javascript中使用此url,是的,ajaxurl
默认情况下,全局变量在管理页面中可用,但没有什么阻止您在非管理页面中使用wp_localize_script
.
假设您的javascript文件名为my-script.js
并位于主题文件夹中的“js”子文件夹中,然后您可以将文件排队并传递ajax url,如下所示:
add_action( \'wp_enqueue_scripts\', \'add_my_script\' );
function add_my_script() {
$handle = \'myscript\';
wp_enqueue_script( $handle, get_template_directory_uri() . \'/js/my-script.js\' );
$data = array(
\'ajaxurl\' => admin_url( \'admin-ajax.php\' )
);
wp_localize_script( $handle, \'my_script_data\', $data );
}
使用上面的代码,内部
my-script.js
您可以访问名为
my_script_data
谁的
ajaxurl
属性将是您必须使用的正确ajax url,因此,您可以在那里执行以下操作:
window.open( my_script_data.ajaxurl + \'?action=my_survey\' );
将打开一个新的浏览器选项卡,显示一个很棒的“欢迎参加调查!”。