web-dev-qa-db-fra.com

Titre d'affichage pour les visiteurs du moteur de recherche

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:

  • le moteur de recherche name
  • la chaîne de recherche recherchée dans le moteur?

*) 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=...

2
kaiser

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 .

1
tollmanz

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'] ) );
1
Milo