2011-01-09 13 views
5

Por ejemplo:Quiero correr WP_Query en un archivo PHP separado para una llamada ajax

<?php $numposts = $_POST['showposts']; ?> 


<?php $home_query_bottom = new WP_Query("cat=&showposts=$num_posts&offset=5"); $b = 0; ?> 
<ul class="thumbs"> 
    <?php while ($home_query_bottom->have_posts()) : $home_query_bottom->the_post(); 
     $do_not_duplicate = $post->ID; $b++; ?> 

     <li class="post-<?php the_ID(); ?> thumb"><?php get_the_image(array('custom_key' => array('thumbnail'), 'default_size' => 'thumbnail', 'width' => '160', 'height' => '160')); ?></li> 
    <?php endwhile; wp_reset_query(); $b = 0; ?> 
</ul> 

El código anterior es en su propio archivo PHP listo para ser llamado por la página principal de WordPress, sin embargo, obtener una error al decir que no se encontró la clase wp_query. Supongo que es porque no estoy usando el header.html que probablemente tiene un montón de includes. ¿Qué necesito para que esa página utilice la clase wp_query?

Respuesta

3

Tienes que hacer que la página que ajax llama una página de plantilla. Crea una nueva página en tu blog y asigna la plantilla. sin encabezados no incluye.

7

Puede apagar el motor de plantillas y luego incluir el encabezado.
// Include WordPress
define('WP_USE_THEMES', false);
require_once('PATHHERE/wp-blog-header.php');

+0

incluye mi encabezado? Pero es una llamada ajax que quiero cargar en mi página de inicio – Adam

+0

Es por eso que desactiva los temas. header cargará todas las funciones que necesite, pero como los temas están desactivados, en realidad no mostrará el contenido del encabezado. – MrGlass

+0

ah ok. Bueno, creo que mi host deshabilitó require_once e incluye porque obtengo el acceso al archivo URL. Se desactivan los errores. Lo que me hace preguntarme cómo es wordpress incluyendo sus clases esenciales, etc. ... – Adam

2

Esto funcionó para mí, tal vez ayudará a otra persona.

Mi situación es que tengo un archivo js que usa getScript. En esa secuencia de comandos tengo un montón de llamadas .load() a un archivo php. En la parte superior coloco esto.

if (file_exists("../../../wp-load.php")) 
    { 
    require_once("../../../wp-load.php"); 
    } 

Cambiar el ../ a cómo cada vez directorios muchos su archivo wp-carga es hacia arriba.

Editar - Uso WP 3.4.1

5

Usted tiene que incluir el archivo que tiene las funciones de Wordpress ubicados en el directorio principal de la instalación de Wordpress:

define('WP_USE_THEMES', false); 
require_once('../../../wp-load.php'); 

../../. ./ = ruta al directorio principal en su instalación

Encontré un buen tutorial sobre este here.

Cuestiones relacionadas