J'ai lu quelque part *) qu'il existe une partie q
à l'intérieur de l'objet wp_query, qui identifie les visiteurs du moteur de recherche et affiche les mots-clés recherchés.
Je développe actuellement en local, donc je ne peux pas accéder/voir $GLOBALS['wp_query']->q;
.
Quelqu'un pourrait-il vérifier si cela existe et/ou a une autre solution pour récupérer:
*) Je ne me souviens plus où, mais cela avait quelque chose à voir avec "une meilleure page de résultats de recherche" et "une mise en évidence des termes de recherche".
- EDIT -
C'est ce que j'ai eu jusqu'à présent:
// declare the server itself as invalid to only catch search engine results
$http_referer = explode( "/", $_SERVER['HTTP_REFERER'] );
$http_referer = $http_referer[2];
$home_url = explode( "/", home_url() );
$home_url = $home_url[2];
// Coming from a search engine: modify to a search string
if ( isset( $_SERVER['HTTP_REFERER'] ) && $home_url !== $http_referer )
{
// remove previous "s" search query args
remove_query_arg( 's' );
$string = parse_url( $_SERVER['HTTP_REFERER'] );
$query = $string['query'];
$query = explode( "&", $query );
foreach ( $query as $q )
{
$q = urldecode( $q );
$arr = explode( "=", $q );
if ( (string) 'q' === $arr[0] )
$search_string = $arr[1];
}
// build a new "s" search query arg: if isset, from the string entered in the search engines input form
// in theory that should allow treating it like a normal search result
// the draw back is, that a search engine visitor would never get directly to a post or page
if ( isset( $search_string ) )
add_query_arg( array( 's' => $search_string ) );
}
Mis à part l’inconvénient qu’aucun visiteur de moteur de recherche n’aboutirait directement à un résultat, je n’accepterais pas tous les moteurs de recherche de cette façon. Google et Altavista ont obtenu un argument de requête q=searchstring
. Yahoo pour par exemple. utilise p=
...
Je viens de lancer un test sur mon site de développement hébergé. J'ai couru ce qui suit:
echo '<pre>';
global $wpdb;
print_r($wpdb);
print_r($GLOBALS);
echo '</pre>';
Aucune variable "wp_query", "[q]" ou "search" n'a été trouvée. Notez que je n'ai pas pu effectuer de recherche via un moteur de recherche, car il n'est pas accessible sur le Web.
Juste pour vous donner un peu plus, voici l'objet entier que je reçois: http://Pastebin.com/qV2QSHYf .
Je n'ai jamais entendu parler de wp_query, mais pourriez-vous consulter $_SERVER['HTTP_REFERER']
pour l'obtenir? Je n'ai jamais essayé personnellement.
if( isset($_SERVER['HTTP_REFERER']) )
print_r( parse_url( $_SERVER['HTTP_REFERER'] ) );