WordPress: llamada al archivo php de plugin a través de ajax

Escribí un plugin de WordPress que agrega algunas funciones de comentarios en mi plantilla. A través de ajax, todas las cosas deberían transmitirse a la base de datos de WordPress.

El problema es que el manejador ajax necesita un archivo php que capture la consulta a través de

if(isset($_POST['name'], $_POST['title'], $_POST['description'])) { // do something with wordpress actions, eg get_current_user, $wpdb } 

En el momento en que el usuario transmite la consulta, el manejador ajax llama al archivo php de esta manera:

 $('#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; 

El getvars.php no conoce el entorno de WordPress porque se llama directamente desde el envío del usuario y creo que agregar las clases de entorno de wordpress e incluye no es el estilo correcto.

¿Hay alguna otra manera? Gracias por el apoyo.

sí, use las acciones integradas de ajax de wordpress:

tu jquery se verá así:

 $('#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; 

su código de complemento algo así como:

 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 }