Das hat mich schon eine Weile ratlos gemacht. Entweder fehlt mir etwas sehr Offensichtliches oder etwas, das nicht offensichtlich ist. Ich bin mir auch nicht ganz sicher, ob das etwas mit WP oder rein PHP-Mechanik bei der Arbeit zu tun hat.
function test() { global $wp_query; var_dump($wp_query == $GLOBALS['wp_query']); } function test2() { global $wp_query; query_posts(array('posts_per_page' => 1)); var_dump($wp_query == $GLOBALS['wp_query']); } test(); test2();
Ergebnis:
Boolescher Wert
Boolean falsch
Warum wertet test()
das auf true
, aber test2()
wertet das auf false
?
header( 'Content-Type: text/plain;charset=utf-8' ); error_reporting( E_ALL | E_STRICT ); function failed_unset() { // Copy the variable to the local namespace. global $foo; // Change the value. $foo = 2; // Remove the variable. unset ( $foo ); } function successful_unset() { // Remove the global variable unset ( $GLOBALS['foo'] ); } $foo = 1; print "Original: $foo\n"; failed_unset(); print "After failed_unset(): $foo\n"; successful_unset(); print "After successful_unset(): $foo\n";
Original: 1 After failed_unset(): 2 Notice: Undefined variable: foo in /srv/www/htdocs/global-unset.php on line 21 Call Stack: 0.0004 318712 1. {main}() /srv/www/htdocs/global-unset.php:0 After successful_unset():
unset()
weiß nichts über den globalen Gültigkeitsbereich in der ersten function; Die Variable wurde nur in den lokalen Namespace kopiert.
Aus wp-includes / query.php :
function &query_posts($query) { unset($GLOBALS['wp_query']); $GLOBALS['wp_query'] =& new WP_Query(); return $GLOBALS['wp_query']->query($query); }
Siehst du es?
BTW: Jemand hat ein schönes Flussdiagramm über dieses Thema erstellt. 😉
query_posts()
ändert $GLOBALS
während alle Verweise auf die Variable $wp_query
, die Sie global
zur Verfügung gestellt haben, nicht von $wp_query
betroffen sind . Das ist ein Grund, $GLOBALS
(neben der Lesbarkeit) vorzuziehen.
Haben Sie versucht, wp_reset_query();
nach Ihrer benutzerdefinierten Abfrage wie unter http://codex.wordpress.org/Function_Reference/query_posts beschrieben ?