web-dev-qa-db-ja.com

検索エンジン訪問者の表示タイトル

Wp_queryオブジェクトの中には、検索エンジンの訪問者を識別し、検索したキーワードを表示するq部分があることをどこかで読みました*)。

私は現在ローカルで開発しているので、$GLOBALS['wp_query']->q;にアクセスできません。

誰かがこれが存在するか、または取得するための代替解決策があるかどうか、あるいはその両方を持つ可能性があります。

  • 検索エンジンの名前
  • エンジン内で検索文字列が検索されますか。

*)場所は思い出せませんが、「より良い検索結果ページ」と「検索用語の強調表示」に関係していました。

- 編集 -

これは私がこれまでに得たものです:

// 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 ) );
}

検索エンジンの訪問者が直接結果を得られないという欠点を除けば、私はすべての検索エンジンをそのように捕まえることはしないでしょう。 Google&Altavistaがq=searchstringクエリ引数を受け取りました。例えばYahoo。 p=...を使用します.

2
kaiser

ホストしている開発サイトでテストを実行したところです。私は以下を実行しました:

echo '<pre>';
global $wpdb;
print_r($wpdb);
print_r($GLOBALS);
echo '</pre>';

'wp_query'、 '[q]'、または 'search'変数が見つかりませんでした。 Webからアクセスできないので、検索エンジンでこれを検索することはできませんでした。

もう少し詳しく言うと、これが私が得る全オブジェクトです: http://Pastebin.com/qV2QSHYf

1
tollmanz

私はこれをwp_queryのことを聞いたことがないが、これを得るために$_SERVER['HTTP_REFERER']を見ることができるだろうか?私は個人的に試したことがない。

if( isset($_SERVER['HTTP_REFERER']) )
    print_r( parse_url( $_SERVER['HTTP_REFERER'] ) );
1
Milo