Я где-то читал *), что внутри объекта wp_query есть часть q
, которая идентифицирует посетителей поисковой системы и показывает ключевые слова, которые они искали.
Я сейчас разрабатываю локальный, поэтому я не могу получить доступ / видеть $GLOBALS['wp_query']->q;
,
Может ли кто-нибудь изменить его, если он существует, и / или имеет альтернативное решение для извлечения:
*) Не помню, где, но это как-то связано с «лучшей страницей результатов поиска» и «поисковыми запросами».
– EDIT –
Это то, что я получил до сих пор:
// 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=
…
Я только что проверил тест на моем размещенном сайте. Я запустил следующее:
echo '<pre>'; global $wpdb; print_r($wpdb); print_r($GLOBALS); echo '</pre>';
Не было найденных «wp_query», «[q]» или «поисковых» переменных. Обратите внимание, что я не смог найти это через поисковую систему, поскольку он не доступен в Интернете.
Просто, чтобы дать вам немного больше, вот весь объект, который я получаю: http://pastebin.com/qV2QSHYf .
Я никогда не слышал об этом из wp_query, но можете ли вы посмотреть на $_SERVER['HTTP_REFERER']
чтобы получить это? Я никогда не пробовал лично.
if( isset($_SERVER['HTTP_REFERER']) ) print_r( parse_url( $_SERVER['HTTP_REFERER'] ) );