我正在尝试修改插件脚本,在执行一个函数后添加电子邮件通知,但我总是遇到一个错误:“未捕获引用错误:未定义ajax\\u send\\u notification\\u对象”。对不起,伙计们,我刚接触wordpress,这是我的第一个问题。我不确定这是否是因为JS文件在plugins文件夹中。提前谢谢。
这是我在函数中的代码。php:
function ajax_send_notification_init(){
wp_register_script(\'ajax-send-notification-script\', plugins_url() . \'/plugin-name/js/the-plugin.js\', array(\'jquery\') );
wp_localize_script( \'ajax-send-notification-script\', \'ajax_send_notification_object\', array(
\'ajaxurl\' => admin_url( \'admin-ajax.php\' )
));
}
add_action(\'init\', \'ajax_send_notification_init\');
function ajax_send_notification(){
echo json_encode(array("message" => "test"));
exit;
}
add_action( \'wp_ajax_ajax_send_notification\', \'ajax_send_notification\' );
add_action( \'wp_ajax_nopriv_ajax_send_notification\', \'ajax_send_notification\' );
下面是我在js文件中插入的代码:
function sendNotification(){
$.ajax({
type: \'POST\',
dataType: \'json\',
url: ajax_send_notification_object.ajaxurl,
data: {
\'action\': \'ajax_send_notification\'
},
success: function(data){
alert(data.messsage);
},
error: function(errorThrown){
console.log(errorThrown);
}
});
}
SO网友:Aftab
您在错误的挂钩中注册了JS代码。应始终使用wp\\u enqueue\\u脚本注册CSS和JS。此外,您只注册了JS代码。您尚未使用将JS文件排入队列wp_enqueue_script( \'ajax-send-notification-script\' );
function ajax_send_notification_init(){
wp_register_script( \'ajax-send-notification-script\', plugins_url() . \'/plugin-name/js/the-plugin.js\', array(\'jquery\') );
wp_localize_script( \'ajax-send-notification-script\', \'ajax_send_notification_object\', array(
\'ajaxurl\' => admin_url( \'admin-ajax.php\' )
));
// To enqueque the JS file.
wp_enqueue_script( \'ajax-send-notification-script\' );
}
add_action(\'wp_enqueue_scripts\', \'ajax_send_notification_init\');