Soporte » Plugins y Hacks » Hacks » php mediante ajax, no me ejecuta funciones wordpress

  • Hola amigos. estoy creandoun plugin.

    El cual ya tengo linkeados mediante wp_enqueue
    mis estilos y mi script (css, js)

    En el JS tengo un ajax, al cual llamo un archivo php que se encuentra en la misma ruta del plugin «ajax.php»

    Todo funciona perfectamente.

    La respuesta de la peticion ajax hacia el archivo «ajax.php» es 100% funcional.

    el problema es que mi archivo «ajax.php» no me ejecuta ninguna funcion de wordpress.

    get_plugin_url();
    update_option();
    etc…

    Me dice que no se ha especificado esa funcion, es decir, se comporta como un PHP Normal, no me ejecuta las funciones wordpress.

    Que debo de crear para que me ejecutar funciones wordpress dentro del «ajax.php»

    Un saludo

Viendo 5 respuestas - de la 1 a la 5 (de un total de 5)
  • Si ejecutas directamente un script PHP, se ejecuta ese script y sólo ese script. Aunque esté dentro de un directorio de WordPress, WordPress no se ejecuta ya que como dije estás ejecutando ese script y sólo ese.

    Podrás ver en Internet algunos sitios que te digan que cargues WordPress desde ese archivo, pero no lo hagas, es una práctica bastante mala en el entorno de WordPress. Sigue las instrucciones del Codex: Ajax in Plugins.

    Si tienes alguna duda para entender esas instrucciones tan sólo dilo y te explico lo que necesites.

    cybmeta

    entonces me recomiendas usar esa practica al cual llaman al admin-ajax.php
    y agregar una accion, tal cual dice el link que me pasaste?

    Una consulta, es que ya lo habia hecho asi.
    Pero resulta que si me devuelve un echo «HOLA»;

    en el JS recibo un HOLA0, nose porque aparece ese Cero (0).
    Tu sabes porque?

    Saludos y Gracias

    Esa práctia es la forma de hacer Ajax dentro de WordPress. Si tu solicitud Ajax es a un recurso que necesita de WordPress, es lo mejor, recomendable y como deberías hacerlo. Piensa que así tienes todo WordPress, y sus plugins, al alcance de tu Ajax si lo necesitas, como has podido comprobar, de la otra forma no.

    Lo del cero, sin ver el código la verdad que me puede imaginar muchas cosas pero no darte una respuesta clara.

    cybmeta
    No tengo nada extra.

    En mi plugin tengo lo siguiente

    add_action( "admin_enqueue_scripts", "jk_load" );
    function jk_load() {
    	wp_enqueue_style( 'jk_style', plugins_url('style.css', __FILE__), array(), '1.0.9' );
    	wp_enqueue_script( 'jk_script', plugins_url('drop.js', __FILE__) );
    
    	wp_localize_script( 'jk_script', 'jk_url', array(
    		'ajaxphp' => admin_url( 'admin-ajax.php' )
    	));
    }

    y tengo eventos jquery, al dar click en un boton quiero actualizar unos datos

    Ese script hace un AJAX, el cual pues claramente puedes ver, me llama al «admin-ajax.php» de wordpres y yo mando una accion, la cual la tengo declarara en el mismo plugin

    add_action( ‘wp_ajax_nopriv_jk_ajax’, ‘jk_ajax’ );
    add_action( ‘wp_ajax_jk_ajax’, ‘jk_ajax’ );

    function jk_ajax() {
    	$button_color = $_POST['buttonc'];
    	$button_text = $_POST['buttont'];
    	$button_bg = $_POST['buttonb'];
    	update_option("term1_button_color",$button_color);
    	update_option("term1_button_text",$button_text);
    	update_option("term1_button_bg",$button_bg);
            echo "HOLA";
    }

    Como puedes ver Solo envio 3 datos y solo imprimo el «HOLA»

    por lo que no entiendo de donde sale ese cero.
    incluso si mi funcion la dejo vacia

    function jk_ajax() {
    }

    Me imprime el 0, por lo que nose de donde sale.

    Estará en el JavaScript entonces, en el PHP no parece haber ningún error, salvo uno: debes parar la ejecución manualmente en tu callback (en el enlace que te pase antes lo explican).

    echo «HOLA»;
    exit;

    Prueba si tras poner exit se soluciona. Creo que debería, en admin-ajax.php, después de ejecutar la función del plugins, se hace die(0) y puede que ese cero sea el que ves.

    Si no se soluciona, ¿podrías poner el js?

Viendo 5 respuestas - de la 1 a la 5 (de un total de 5)
  • El debate ‘php mediante ajax, no me ejecuta funciones wordpress’ está cerrado a nuevas respuestas.