Ejecutar funciones de Wordpress dentro de archivo PHP con Ajax

  • Autor Autor ZoroRoronoa
  • Fecha de inicio Fecha de inicio
Z

ZoroRoronoa

Delta
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
 
Intenta agregando esto al inicio de ajax.php

PHP:
<?php
/**
 * Loads the WordPress environment and template.
 *
 * [MENTION=156547]pack[/MENTION]age WordPress
 */

if ( !isset($wp_did_header) ) {

	$wp_did_header = true;

	require_once( dirname(__FILE__) . '/wp-load.php' );

	wp();

	// require_once( ABSPATH . WPINC . '/template-loader.php' );

}
 
Última edición:
Revisé el index.php y me encontré con esto

PHP:
<?php
/**
 * Front to the WordPress application. This file doesn't do anything, but loads
 * wp-blog-header.php which does and tells WordPress to load the theme.
 *
 * [MENTION=156547]pack[/MENTION]age WordPress
 */

/**
 * Tells WordPress to load the WordPress theme and output it.
 *
 * @var bool
 */
define('WP_USE_THEMES', true);

/** Loads the WordPress Environment and Template */
require('./wp-blog-header.php');

Tal vez agregando esas líneas al inicio de tu archivo ajax.php, ya pueda ejecutar las funciones de WordPress con normalidad :encouragement:


Cual index.php revisaste?

Mira sucede que mi plugin funciona al MIL % excelente

tanto el index.php como otro archivo me ejecutan cualquier funciones wordpress, es decir, SI FUNCION.
dentro de este plugin, linkeo un JS
wp_enqueue_script( 'jk_script', plugins_url('scripts.js', __FILE__) );

y me funciona de maravilla, todos los eventos y efectos me funcionan.

Ahora dentro de este mismo script tengo un $.ajax({})
El cual manda una peticion a un archivo
type: "post",
url: "file.php",

etc...
HTML:
		$j.ajax({
			type: "post",
			url: jk_url.ajaxphp,
			success: function(a) {
				alert(a);
			}
		});

cuando ejecuto PHP plano, es decir, en mi archivo "file.php", tengo
echo "ESTO SE IMPRIMIRA EN LA ALERTA";

Me funciona de 100%, funciona correctamente.
Pero al poner una funcion wordpress como "update_option", me arroja error

HTML:
<br />
<b>Fatal error</b>:  Call to undefined function update_option() in <b>C:\xampp\htdocs\69\miWP2\wp-content\plugins\custom_plugin\file.php</b> on line <b>3</b><br />

Es decir, no me reconoce el CORE de wordpress, no puedo ejecutar funciones de wordpress.

Esas lineas que me dices donde las coloco?

Te comento que trabajo con un PLUGIN, no con un theme.

Saludos y GRACIAS amigo.
 
Y si estás agregando las funciones de WP al archivo que estas ejecutando?
 
No brother, es lo que no he podido encontrar.
Como agregar algun inicializador de funciones wordpress en mi archivo "file.php", el cual es el que llamo mediante ajax.

Saludos.
Y si estás agregando las funciones de WP al archivo que estas ejecutando?
 
Como te mencionaron en el post anterior, tienes que hacer un include al wp-load.php, nada mas ten en cuenta que este archivo se encuentra en raiz de WordPress.

PHP:
require_once '../../../wp-load.php';
 
Ya te han puesto la solución desde la primera respuesta varias veces.

Tu fichero .php no puede utilizar las funciones Wordpress, como es lógico, porque no las has cargado en ese fichero de ninguna forma. Para eso has de usar wp-load
 

Temas similares

Atrás
Arriba