在进行AJAX调用之前激发的任何操作都将起作用。一般来说,init 是个不错的选择。
您提到ajax调用是从“前端表单”发出的。如果最终用户可以使用该表格not 登录后,您需要使用:
add_action (\'wp_ajax_nopriv_my_plugin_etc\', \'my_plugin_etc\') ;
请参见
wp_ajax_nopriv_{$_REQUEST[‘action’]}.
Edit
一定是我睡眠不足,因为我应该早点看到这一点。
is_admin() 退货false 在调用admin-ajax.php. 因此,请更改my_plugin_init() 将成为:
function my_plugin_init() {
if ( ! is_admin() || wp_doing_ajax ()) {
require( dirname( __FILE__ ) . \'/inc/my-plugin-functions.php\' );
}
}
add_action( \'init\', \'my_plugin_init\' );
wp_doing_ajax() 在WP 4.7中引入。
如果您的插件在此之前需要在WP版本中工作,请将其更改为:
function my_plugin_init() {
if ( ! is_admin() || (defined( \'DOING_AJAX\' ) && DOING_AJAX)) {
require( dirname( __FILE__ ) . \'/inc/my-plugin-functions.php\' );
}
}
add_action( \'init\', \'my_plugin_init\' );
的优点
wp_doing_ajax() 在4.7之前的测试中(如果您只支持4.7以上),这适用于
wp_doing_ajax 筛选到的值
defined( \'DOING_AJAX\' ) && DOING_AJAX 这可以让您更好地控制是否要在ajax上下文中考虑自己。然而,这种额外的控制在您的情况下可能不是必需的。
最后,如果inc/my-plugin-functions.php only 包含与AJAX相关的代码,然后删除! is_admin() || 从if 条件