Există CEVA în această interogare care este incompatibil cu WordPress 2.9.2?

9 feb. 2011, 23:36:07
Vizualizări: 187
Voturi: 0

Mă chinui cu asta de două zile. Încă nu pot să-mi dau seama.

Testez o versiune de temă în multiple versiuni de WordPress folosind xampplite pe localhost pe un PC.

Am o problemă pe WP 2.9.2 care nu apare în niciunele alte instalări mai noi de WP.

Uită-te la interogarea de mai jos. Cât timp las linia comentată în loc, funcționează bine. Totuși, când decomentez linia, îmi crapă serverul 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;

Am încercat chiar să hardcodez atributul cat la un număr static:

'cat' => 3

Tot crapă!

Este o problemă cu codul, cu wordpress 2.9.2 sau cu configurația mea Xamplite? Pare ciudat că funcționează în toate celelalte versiuni mai noi de WP pe care le-am instalat pe aceeași mașină.

6
Comentarii

elimină virgula după get_cat_ID('top-menu').

Bainternet Bainternet
10 feb. 2011 00:04:29

Gata! Tot se blochează :(

Scott B Scott B
10 feb. 2011 00:08:35

Eroarea de pe serverul tău ar putea fi legată de configurația pe care o ai pe calculatorul local. Vezi: „Apache HTTP Service has stopped working” cu WP Query în WordPress 2.9.2

hakre hakre
10 feb. 2011 00:18:30

Este ID-ul categoriei pentru 'top-menu' 2.2250738585072011e-308 cumva? Glumesc: http://www.theregister.co.uk/2011/01/04/weird_php_dos_vuln/

goldenapples goldenapples
10 feb. 2011 00:49:10

@GA: Acesta este un articol interesant, dar pot hardcoda valoarea la un număr de o singură cifră pentru a crea condiția de crash. În orice caz, echo(get_cat_ID('top-menu')) returnează 3.

Scott B Scott B
10 feb. 2011 01:32:03

@hakre: pare din ce în ce mai mult o problemă de configurare a serverului care se întâmplă să fie amplificată de WP2.9.2 cumva.

Scott B Scott B
10 feb. 2011 01:32:59
Arată celelalte 1 comentarii
Toate răspunsurile la întrebare 2
2

Singurul lucru pe care îl văd ca fiind chiar și aproape de a fi sintactic discutabil este că showposts ar putea fi înlocuit cu posts_per_page.

9 feb. 2011 23:45:42
Comentarii

Mulțumesc pentru editorul de input. Funcționează bine cu oricare. Singura problemă pe care o are este când argumentul cat este prezent. Am pierdut două zile ca să depanez asta, aaargh!

Scott B Scott B
10 feb. 2011 00:03:04

Prima variantă, dar de fapt cam ghicesc. Se pare că WP va seta $query['posts_per_page'] la $query['showposts'] în funcția &get_posts(), în ambele versiuni 2.9 și 3.0 (http://core.trac.wordpress.org/browser/tags/3.0.5/wp-includes/query.php). Cred că asta sunt toți parametrii query enumerați în fill_query_vars().

editor editor
10 feb. 2011 00:08:08
1

Realizez că aceasta este o informație veche, dar poate ajuta oamenii care o găsesc prin Google:

Am avut probleme cu Apache care se închidea când rulează cod similar într-o funcție apelată de hook-ul pre_get_posts. Problema a fost că am uitat condiția:

$query->is_main_query()

ceea ce însemna că executa operații pentru toate interogările, nu doar pentru cea principală. Adăugarea acestei condiții a rezolvat problema pentru mine. Condiția completă pe care o folosesc este (apoi alte coduri deasupra și dedesubt):

if ( ! is_category() || ! $query->is_main_query() || ! is_a( $query, 'WP_Query' ) )
    return;
30 iun. 2012 15:00:17
Comentarii

is_main_query() nici măcar nu exista în versiunea 2.9.2. Acesta nu poate fi un răspuns valid.

fuxia fuxia
30 iun. 2012 16:13:52