我写了一个wordpress插件,在模板中添加了一些注释功能。通过ajax,所有内容都应传输到wordpress数据库中。
问题是-ajax处理程序需要一个php文件,用于通过捕获查询
if(isset($_POST['name'], $_POST['title'], $_POST['description'])) { // do something with wordpress actions, e.g. get_current_user, $wpdb }
在用户传输查询时,ajax处理程序将如下所示调用php文件:
$('#ajax_form').bind('submit', function() { var form = $('#ajax_form'); var data = form.serialize(); $.post('../wp-content/plugins/test/getvars.php', data, function(response) { alert(response); }); return false;
该 getvars.php 不知道WordPress的环境,因为它是由用户直接调用提交,我想补充的WordPress的环境类,包括是不是好作风。
还有其他办法吗?感谢你的支持。
是的,请使用内置的wordpress ajax操作:
您的jquery将如下所示:
$('#ajax_form').bind('submit', function() { var form = $('#ajax_form'); var data = form.serialize(); data.action = 'MyPlugin_GetVars' $.post('/wp-admin/admin-ajax.php', data, function(response) { alert(response); }); return false;
您的插件代码如下:
add_action("wp_ajax_MyPlugin_GetVars", "MyPlugin_GetVars"); add_action("wp_ajax_nopriv_MyPlugin_GetVars", "MyPlugin_GetVars"); function MyPlugin_GetVars(){ global $wpdb; // use $wpdb to do your inserting //Do your ajax stuff here // You could do include('/wp-content/plugins/test/getvars.php') but you should // just avoid that and move the code into this function }