Tengo 2 llamadas Ajax, la primera funciona, pero cuando envía los datos a otro archivo send_data.php y cuando intento ejecutar cualquier función de wordpress, ¡no funciona!
Esta es la primera llamada ajax, ahora los datos enviados al archivo send_data.php cuando intento ejecutar cualquier función de wordpress como esta add_post_meta(2, 'dropbox', 'Senddataphp', false); imprime este error, lo que quiero hacer es bastante simple, simplemente obtenga los datos de ajax insertados en la base de datos wp, pero no tengo idea cada vez que trabajo con js con problemas de php como este sucede
caught Error: Call to undefined function add_post_meta() in C:\xampp\htdocs\wordpress\wp-content\plugins\Dropboxapi\includes\send_data.php:17 Stack trace:Primer código Ajax
$.ajax({ type: "POST", url: 'wp-content/plugins/Dropboxapi/includes/send_data.php', data: { req: JSON.stringify(dropbox_links) }, cache: false, success: function(responseData) { // consider using console.log for these kind of things. console.log("Data recived: " + responseData); console.log("First Ajax" + dropbox_links); } }); Segundo código Ajax aquí Traté de ejecutar una función que toma los datos enviados e inserta en la base de datos pero no funciona, el archivo dropbox.php es el archivo principal del complemento
$.ajax({ type: "POST", url: 'wp-content/plugins/Dropboxapi/dropbox.php', data: { functionname: 'printdata2' }, success: function(obj, textstatus) { if (!('error' in obj)) { var yourVariable = obj.result; console.log("SEc Ajax" + dropbox_links + yourVariable); } else { console.log(obj.error); console.log("SEc1 errr Ajax" + dropbox_links + yourVariable); } }, error: function(msg) { console.log( " errrnot sure what to ask for here to check issue" + msg); } });Cuando se usa ajax en WordPress, el archivo que almacena la función que desea ejecutar no se llama directamente. En su lugar, se llama admin-ajax.php y se agrega la función de devolución de llamada en 'action' . Primero cree una función y agregue su add_meta_box dentro de ella, luego agregue ganchos de acción wp_ajax como el siguiente. Recuerde que cada función que va a ser llamada por solicitud ajax debe terminar con wp_die() .
function printdata2() { add_post_meta(2, 'dropbox', 'Senddataphp', false); wp_die(); } add_action( 'wp_ajax_nopriv_printdata2', 'printdata2' ); add_action( 'wp_ajax_printdata2', 'printdata2' ); Luego use wp_localize_script() para pasar admin_url('admin-ajax.php') a javascript.
function load_script() { wp_enqueue_script( 'your-js', get_template_directory_uri() . '/js/your-js.js', array('jquery') ); wp_localize_script( 'your-js', 'ajax_object', array('ajaxurl' => admin_url('admin-ajax.php')) ); } add_action('wp_enqueue_scripts', 'load_script'); Ahora, en su archivo javascript, llame a ajaxurl en url y el nombre de la función de devolución de llamada en action .
$.ajax({ url: ajax_object.ajaxurl, data: { action: 'printdata2' }, success: function(obj, textstatus) { // obj goes here... }, error: function(msg) { console.log(msg); } });