我正在尝试开发自己的Wordpress插件,但由于某种原因我无法在其中包含javascript文件。在我考虑在这里提出这个问题之前,我已经做了很多研究,但是都没有解决我的问题。我已经阅读了很多有关wp_register_script()和wp_enqueue_script()的知识,而且我不必同时包含两者,因此我决定只使用wp_enqueue_script()。
javascript文件位于wp-content / snappy-list-plugin / js / public / snappy-wordpress-plugin.js中,索引文件位于wp-content / snappy-list-plugin / snappy-中wordpress-plugin.php。
在snappy-wordpress-plugin.php文件中,我有:
function mslb_public_scripts(){
wp_enqueue_script('custom_js', plugins_url( '/snappy-list-plugin/js/public/snappy-wordpress-plugin.js', __FILE__ ), array('jquery'), '', true);
}
这似乎是可以的,但其中不包含该文件。
在文件顶部,我拥有:
add_action('wp_enqueue_scripts', 'mslb_public_scripts');
有人可以帮我吗?!
我试图添加wp_register_script(),但是它不起作用
add_action('admin_enqueue_scripts', 'mslb_public_scripts');
function mslb_public_scripts(){
wp_enqueue_script('custom_js', plugins_url( '/snappy-list-plugin/js/public/snappy-wordpress-plugin.js', __FILE__ ), array('jquery'), '', true);
}
snappy-wordpress-plugin.js文件:
jQuery(document).ready(function($) {
var wpajax_url = document.location.protocol + '//' + document.location.host + '/wp-admin/admin-ajax.php';
var email_capture_url = wpajax_url += '?action=swp_save_subscription';
$('form.swp_form').bind('submit', function(){
$form = $(this);
var form_data = $form.serialize();
$.ajax({
'method' : 'post',
'url' : email_capture_url,
'data' : form_data,
'dataType' : 'json',
'cache' : false,
'success' : function( data, textStatus){
if(data.status == 1){
$form[0].reset();
alert(data.message);
} else {
var msg = data.message + '\r' + data.error + '\r';
$.each(data.error, function(key, value){
msg += '\r';
msg += ' - ' + value;
});
alert( msg );
}
},
'error' : function(jqXHR, textStatus, errorThrown){
}
});
//stop the form from submitting normally
return false;
});
});```
答案 0 :(得分:0)
正确的操作是wp_enqueue_scripts
add_action('wp_enqueue_scripts', 'mslb_public_scripts');
function mslb_public_scripts(){
wp_register_script('custom_js', plugins_url('/js/public/snappy-wordpress-plugin.js',__FILE__ ), array('jquery'), '', true);
wp_enqueue_script('custom_js');
}