我正在开发WP插件,当用户输入ID
时,会针对该ID
发帖。它在管理方面工作正常。我已按照this示例通过AJAX调用获取数据,但现在我尝试在前端执行此操作,任何人都可以输入ID
并获得结果。我删除了用于在管理员端创建页面的功能。现在我有3个名为:
我已经尝试使用以下挂钩进行注册,但它无法正常工作
hello_word()
函数包含文本字段和按钮的代码。
我从模板文件中调用hello_word()
函数并且它正确显示,但是当我点击按钮时AJAX不工作。我发现的问题是ajax_script()
未加载,并且在源代码的调试模式下,单击按钮时没有任何内容。
那么如何从模板文件中调用hello_word()
来正确加载ajax函数?
答案 0 :(得分:1)
你有点混淆了。
add_action( 'wp_ajax_my_action', 'your_handler' );
和add_action( 'wp_ajax_nopriv_my_action', 'your_handler' );
用于添加函数,该函数将分别处理对登录和访客用户的ajax调用的响应。
add_action( 'wp_footer', 'ajax_script' );
- 页脚的前端操作为wp_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_world
电话。