Есть ли что-то в этом запросе, что несовместимо с WordPress 2.9.2?

9 февр. 2011 г., 23:36:07
Просмотры: 187
Голосов: 0

Я ломаю голову над этой проблемой уже два дня. До сих пор не могу разобраться.

Я тестирую выпуск темы в нескольких версиях WordPress, используя xampplite на localhost на ПК.

У меня возникает проблема в WP 2.9.2, которой нет в других, более новых установках WP.

Посмотрите на запрос ниже. Пока я оставляю закомментированную строку на месте, всё работает нормально. Однако, когда я раскомментирую строку, мой сервер Apache в xampplite падает. WTF?

$the_query = new WP_Query(array(
  'posts_per_page' => 5,
  'offset' => 0, 
  'order' => 'ASC',
  'post__not_in' => get_option("sticky_posts"),
//  'cat' => get_cat_ID('top-menu'),
  ));
print "<p>header.php";exit;

Я даже пробовал жестко прописать атрибут cat статичным числом:

'cat' => 3

Он всё равно падает!

Это проблема с кодом, WordPress 2.9.2 или с моей настройкой Xamplite? Странно, что это работает во всех других, более новых версиях WP, которые у меня установлены на этом же компьютере.

6
Комментарии

удалить запятую после get_cat_ID('top-menu').

Bainternet Bainternet
10 февр. 2011 г. 00:04:29

Готово! Всё равно падает :(

Scott B Scott B
10 февр. 2011 г. 00:08:35

Ваш сервер может падать из-за конфигурации на вашем локальном компьютере. Смотрите: «Apache HTTP Service has stopped working» с WP Query в WordPress 2.9.2

hakre hakre
10 февр. 2011 г. 00:18:30

ID категории 'top-menu' случайно не 2.2250738585072011e-308? шутка: http://www.theregister.co.uk/2011/01/04/weird_php_dos_vuln/

goldenapples goldenapples
10 февр. 2011 г. 00:49:10

@GA: Интересная статья, но я могу жестко задать значение одной цифрой, чтобы создать условие для сбоя. В любом случае, echo(get_cat_ID('top-menu')) возвращает 3.

Scott B Scott B
10 февр. 2011 г. 01:32:03

@hakre: это всё больше похоже на проблему конфигурации сервера, которая просто усугубляется WP2.9.2 каким-то образом.

Scott B Scott B
10 февр. 2011 г. 01:32:59
Показать остальные 1 комментариев
Все ответы на вопрос 2
2

Единственное, что я вижу как даже отдалённо близкое к синтаксически сомнительному, это то, что showposts можно заменить на posts_per_page.

9 февр. 2011 г. 23:45:42
Комментарии

Спасибо за подсказку, редактор. Это работает нормально в любом случае. Единственная проблема возникает, когда присутствует аргумент cat. Я уже два дня потратил на поиски решения, блин!

Scott B Scott B
10 февр. 2011 г. 00:03:04

Первое, но честно говоря, я немного в замешательстве. Похоже, что WP устанавливает $query['posts_per_page'] равным $query['showposts'] в функции &get_posts(), как в версии 2.9, так и в 3.0 (http://core.trac.wordpress.org/browser/tags/3.0.5/wp-includes/query.php). Думаю, это все параметры запроса, перечисленные в fill_query_vars().

editor editor
10 февр. 2011 г. 00:08:08
1

Осознаю, что это уже давно, но, возможно, поможет тем, кто нашел это через Google:

У меня были проблемы с падением Apache при выполнении подобного кода внутри функции, вызываемой через хук pre_get_posts. Проблема была в том, что я пропустил условие:

$query->is_main_query()

Это означало, что код выполнялся для всех запросов, а не только для основного. Добавление этого условия решило проблему. Полное условие, которое я использую (затем остальной код выше/ниже):

if ( ! is_category() || ! $query->is_main_query() || ! is_a( $query, 'WP_Query' ) )
    return;
30 июн. 2012 г. 15:00:17
Комментарии

is_main_query() даже не существовал в версии 2.9.2. Это не может быть правильным ответом.

fuxia fuxia
30 июн. 2012 г. 16:13:52