Я хочу запустить wp_query в отдельном php-файле для вызова 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> 

Вышеупомянутый код находится на собственном php-файле, готовом к вызову на главной странице wordpress, однако я получаю сообщение об ошибке, когда класс wp_query не найден. Я предполагаю, что это потому, что я не использую header.html, который, вероятно, содержит множество включений. Что мне нужно для этой страницы, чтобы использовать класс wp_query?

Вы должны сделать страницу, на которой ajax вызывает страницу шаблона. Создайте новую страницу в своем блоге и назначьте шаблон. нет заголовков нет.

Вы можете отключить механизм шаблонов и включить заголовок.
// Include WordPress
define('WP_USE_THEMES', false);
require_once('PATHHERE/wp-blog-header.php');

Вы должны включить файл, который имеет функции WordPress, расположенные в главном каталоге установки WordPress:

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

../../../ = путь к основному каталогу вашей установки

Об этом я нашел хороший учебник.

Это сработало для меня, может быть, это поможет кому-то другому.

Моя ситуация: у меня есть файл js, который использует getScript. В этом скрипте у меня есть куча вызовов .load () в php-файл. В верхней части я помещаю это.

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

Измените ../ на то, как много каталогов загружается ваш файл wp-load.

Изменить – с использованием WP 3.4.1