Cela me laisse perplexe depuis un moment déjà. Soit il me manque quelque chose de très évident ou quelque chose de très peu évident. Je ne suis pas non plus tout à fait sûr de savoir si cela a quelque chose à voir avec la mécanique WP ou purement PHP au travail.
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();
Résultat:
vrai booléen
faux booléen
Pourquoi test()
évalue-t-il cela à true
, alors que test2()
évalue cela à 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()
ne sait rien de la portée globale de la première fonction; la variable vient d'être copiée dans l'espace de noms local.
De wp-includes/query.php :
function &query_posts($query) {
unset($GLOBALS['wp_query']);
$GLOBALS['wp_query'] =& new WP_Query();
return $GLOBALS['wp_query']->query($query);
}
Est-ce que tu le vois?
BTW: Quelqu'un a fait un organigramme Nice sur ce sujet même. ;)
query_posts()
change $GLOBALS
tandis que toutes les références à la variable $wp_query
que vous avez rendues disponibles par global
sont non affectées par unset . C’est l’une des raisons pour lesquelles préférer $GLOBALS
(en plus de la lisibilité).
Avez-vous essayé d'utiliser wp_reset_query();
après votre requête personnalisée, comme décrit à http://codex.wordpress.org/Function_Reference/query_posts ?