I want to run wp_query on a separate php file for

2019-02-10 06:17发布

问题:

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?

回答1:

You have to make the page that ajax calls a template page. Make a new page in your blog and assign the template. no headers no includes.



回答2:

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');



回答3:

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.



回答4:

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



标签: php wordpress