最好不要直接加载插件URL(除非它是一个公共URL,并且你可以将任何需要的数据作为查询字符串传递),因为这使得加载WordPress和访问任何存储的数据都很困难(因为路径并不总是可确定的),而是:
通过查询字符串加载视图,并在WordPress load或类似程序中进行检查,但将其添加到AJAX操作查询字符串函数中选项1。通过/any-page/?my-action=trigger
add_action(\'init\', \'my_plugin_view\');
function my_plugin_view() {
// check for querystring trigger
if (!isset($_REQUEST[\'my-action\']) || ($_REQUEST[\'my-action\'] != \'trigger-value\')) {return;}
if (!is_user_logged_in()) {
wp_die(\'You need to be logged in to do this.\');
} else {
// ... plugin view output code ...
}
exit;
}
选项2。通过
/wp-admin/admin-ajax.php?action=my_plugin_view
// logged in users
add_action(\'wp_ajax_my_plugin_view\', \'my_plugin_view\');
function my_plugin_view() {
// ... plugin view output code ...
exit;
}
// logged out users (optional)
add_action(\'wp_ajax_nopriv_my_plugin_view\', \'my_plugin_view\');
function my_plugin_logged_out_message() {
wp_die(\'You need to be logged in to do this.\');
}
正如您所看到的,所使用的目标URL以及处理注销用户的方式存在差异(如果需要,在本例中,假设用户必须登录,但这种差异对于完全公开的视图不是必需的。)
两者都是可行的选择,但AJAX方法可能是更常见的“WordPress方式”。当然,任何插件脚本和样式都需要直接添加到输出中,而不是像往常一样将它们排队。
法典参考:AJAX in Plugins