I want to run wp_query on a separate php file for an ajax call

For example:

<?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>

The code above is on its own php file ready to be called by the main wordpress page, however I get an error saying wp_query class not found. I’m assuming it’s because I am not using the header.html which probably has a bunch of includes. What do I need for that page to utilize the wp_query class?

Related posts

Leave a Reply

4 comments

  1. You can turn the template engine off and then include the header.
    // Include WordPress
    define('WP_USE_THEMES', false);
    require_once('PATHHERE/wp-blog-header.php');

  2. You have to include the file that has the WordPress functions located on the main directory of the WordPress Installation:

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

    ../../../ = path to the main directory on your installation

    I found a nice tutorial about this here.

  3. This worked for me, maybe it will help someone else.

    My situation is I have a js file that uses getScript. In that script i have a bunch of .load() calls to a php file. At the top I place this.

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

    Change the ../ to how ever many directories your wp-load file is up.

    Edit – Using WP 3.4.1