Ответы в темах

Просмотр 3 ответов — с 1 по 3 (всего 3)
  • В итоге сделал дополнительную проверку на то что запрос выполняется через AJAX:
    ($query->is_home() && $query->is_main_query()) || (defined('DOING_AJAX') && DOING_AJAX)

    печально…

    К сожалению не вышло, $wp_query->query_vars это пустой массив

    Вот так сработало на локальном сервере:

    global $wp_the_query; // это типо 
    $wp_the_query = $loop = new WP_Query($args);
    wp($loop);
    

    Вот кусочки кода из wordpress что-бы понять что я делаю:

    //./wp-includes/query.php:4765
    public function is_main_query() {
    	global $wp_the_query;
    	return $wp_the_query === $this;
    }
    
    //./wp-includes/functions.php:961
    function wp( $query_vars = '' ) {
    	global $wp, $wp_query, $wp_the_query;
    	$wp->main( $query_vars );
    
    	if ( !isset($wp_the_query) )
    		$wp_the_query = $wp_query;
    }
    

    Но на продакшене этот же код генерирует ошибку:

    PHP Catchable fatal error: Object of class WP_Query could not be converted to string in /public_html/wp-includes/class-wp.php on line 166

    • Ответ изменён 7 лет, 7 месяцев назад пользователем uginroot.
    • Ответ изменён 7 лет, 7 месяцев назад пользователем uginroot.

    Это один из фильтров, там их несколько и их тогда придётся собирать по всем плагинам которые установлены в этой теме. + исключаемые категории устанавливаются через настройки темы и их в любой момент могут поменять.

    Тут прибавляются новые условия к уже существующим:

    $query->tax_query->queries[] = $tax_query;
    $query->query_vars['tax_query'] = $query->tax_query->queries;

    Неужели нельзя сделать что-то типо
    $wp_query->is_home(true); $loop->is_main_query(true)

    Сам wordpress ведь как-то устанавливает эти параметры. Осталось только выяснить как он это делает.

    • Ответ изменён 7 лет, 7 месяцев назад пользователем uginroot.
    • Ответ изменён 7 лет, 7 месяцев назад пользователем uginroot.
Просмотр 3 ответов — с 1 по 3 (всего 3)