Javascript 如何在前端的WP插件中进行AJAX调用
我正在开发可湿性粉剂插件,当用户输入Javascript 如何在前端的WP插件中进行AJAX调用,javascript,jquery,ajax,wordpress,Javascript,Jquery,Ajax,Wordpress,我正在开发可湿性粉剂插件,当用户输入ID时,该插件将获得针对ID的帖子。它在管理方面运行良好。我已经按照示例通过AJAX调用获取数据,但现在我尝试在前端执行此操作,任何人都可以在前端输入ID并获得结果。我已经删除了我用来在管理端创建页面的函数。现在我有3个函数,名为: 你好 ajax_脚本() ajax_处理器() 我试着用下面的钩子来注册,但它不起作用 添加操作('admin_footer','ajax_script') 添加_操作(“wp_ajax_my_操作”,“ajax_脚本”) 添加
ID
时,该插件将获得针对ID
的帖子。它在管理方面运行良好。我已经按照示例通过AJAX调用获取数据,但现在我尝试在前端执行此操作,任何人都可以在前端输入ID
并获得结果。我已经删除了我用来在管理端创建页面的函数。现在我有3个函数,名为:
- 添加操作('admin_footer','ajax_script')李>
- 添加_操作(“wp_ajax_my_操作”,“ajax_脚本”)李>
- 添加操作(“wp\u ajax\u nopriv\u my\u action”、“ajax\u script”)李>
hello\u word()
函数包含文本字段和按钮的代码。
我从模板文件中调用了hello\u word()
函数,它被正确显示,但当我单击按钮时,AJAX不起作用。我发现的问题是,ajax\u script()
没有加载,并且在源代码的调试模式下,当我单击按钮时,什么都没有
那么,当我从模板文件调用
hello\u word()
时,如何正确地加载ajax函数呢?您有点搞混了
add_action('wp_ajax_my_action','your_handler')代码>和添加操作('wp_ajax_nopriv_my_action','your_handler')
用于添加函数,该函数将分别处理登录用户和来宾用户对ajax调用的响应
add_操作('wp_footer','ajax_script')代码>-页脚的前端操作是wp\u footer
,只有在主题真正调用它时,它才会起作用。但是更好的做法是为插件创建一个包含所有js的单独的.js文件,而不是内联输出。
要使脚本排队,可以使用以下代码
function enqueue_assets()
{
wp_enqueue_script('your_plugin_js', plugins_url('/my.js', __FILE__), array('jquery'), false, true); //true will put it into the footer
wp_localize_script('your_plugin_js', 'your_plugin_ajax_object', array('ajax_url' => admin_url('admin-ajax.php', ((is_ssl()) ? 'https' : 'http')))); // your url for ajax call wil be available as your_plugin_ajax_object.ajax_url
//wp_enqueue_style('your_plugin_css', plugins_url('/my.css', __FILE__)); // you can output css here too if you want
}
add_action('wp_enqueue_scripts', 'enqueue_assets');
你可以在任何你喜欢的地方调用你的hello\u world
函数。如果我把所有的js代码放在单独的文件和队列脚本中,在这个简单的调用函数hello\u word之后,ajax就会工作得很好,或者我必须做更多的事情?我想如果我调用hello\u word函数,那么只有这个函数会被执行,而不是其他函数,或者该文件中的所有代码都将被执行?@coderhello\u world
应该只返回用于用户输入的内容。如果你给我看3个函数的代码,比如说paste bin,我会更正需要更正的任何东西,如果你不明白的话,我会解释。事实上,这对管理员来说很好,在这里,你可以看到我刚刚对上面的原始代码做了一些修改,但是这些修改不起作用。如果你想保留内联js,看起来还不错,不过你必须定义ajaxurl
,因为在前端它是未定义的。如果您想让它也为来宾服务,请添加add_操作(“wp_ajax_nopriv_dobsondev_ajax_tester_approval_操作”,“dobsondev_ajax_tester_ajax_handler”)代码>