Функция «wp_fix_server_vars()» располагается в файле «load.php». Полный путь к нему таков:
корневая папка сайта/wp-includes/load.php

Описание wp_fix_server_vars()
Функция «wp_fix_server_vars()» — данная функция анализирует глобальную переменную «$_SERVER» и, при необходимости, исправляет значения некоторых элементов этого массива. Первым делом объявляется глобальная переменная «$PHP_SELF». В ней хранится имя файла текущего выполняемого скрипта, относительно корня документа. То есть, когда серверу отправляется подобный запрос
http://www.mysite.ru/test/index.php?id=1&test=wet&id_theme=512
то в этой переменной будет храниться фрагмент запроса «/test/index.php».
Далее объявляется массив «$default_server_values», котором содержит два элемента. После производится слияние «$default_server_values» и «$_SERVER». В результате получается новый ассоциативный массив, который хранится в глобальной переменной «$_SERVER». Теперь необходимо обработать этот массив.
В первую очередь необходимо выяснить три вещи. Первая вещь — это «URI», который был предоставлен для доступа к этой странице.
- URI — это унифицированный (единообразный) идентификатор ресурса. Он содержит информацию об имени и адресе ресурса в сети. Как правило, делится на URL и URN.
- URL: Адрес некоторого ресурса в веб.
- URN: Имя некоторого ресурса в веб. .
Например:
URI = http://www.mysite.ru/test/index.php?id=1&test=wet&id_theme=512
URL = http://www.mysite.ru
URN = /test/index.php
Вторая вещь, которую необходимо уточнить — это «PHP_SAPI».
PHP_SAPI — это константа, в которой содержится информация о типе интерфейса между веб-сервером и PHP.
Третья — это строка идентификации сервера. Она указывается в заголовках, когда происходит ответ на запрос.
Если строка URI пустая или тип интерфейса отличается от строки «cgi-fcgi», а строке идентификации сервера можно найти подстроку «Microsoft-IIS/», тогда возникает необходимость в формировании URI.
Формирование URI происходит следующим образом. Сначала выясняем существует ли в переменной «$_SERVER» элемент с ключом «HTTP_X_ORIGINAL_URL». Если да, тогда значение этого элемента присваивается элементу переменной «$_SERVER» с ключом «REQUEST_URI». Если же нет, тогда узнаём существует ли в переменной «$_SERVER» элемент с ключом «HTTP_X_REWRITE_URL». Если этот элемент существует, тогда значение этого элемента присваивается элементу переменной «$_SERVER» с ключом «REQUEST_URI». Если и этого элемента нет, тогда переходим к следующему шагу.
Следующий шаг — это поиск элемента с ключом «PATH_INFO». Если он отсутствует, но имеется элемент с ключом «ORIG_PATH_INFO», тогда значение этого присваивается элементу переменной «$_SERVER» с ключом «PATH_INFO». Далее сравниваем элементы переменной «$_SERVER» с ключами «PATH_INFO» и «SCRIPT_NAME». Если они равны, тогда элементу с ключом «REQUEST_URI» присваиваем значение элемента с ключом «PATH_INFO». Если сравниваемые элементы не равны, тогда элементу с ключом «REQUEST_URI» присваивается комбинация значений элементов с ключами «PATH_INFO» и «SCRIPT_NAME».

Далее в переменной «$_SERVER» ищем элемент с ключом «QUERY_STRING». Это строка запроса через которую была открыта страница. Например у нас есть запрос:
"http://www.example.com/php/path_info.php/some/stuff?foo=bar"
Тогда в элементе $_SERVER[‘PATH_INFO’] будет храниться строка со значением «/some/stuff», а $_SERVER[‘QUERY_STRING’] будет хранить строку со значением «foo=bar».
Если элемент с ключом «QUERY_STRING» существует, тогда дополняем элемент с ключом «REQUEST_URI» содержимым этого элемента. Для этго используется операция конкатенации.
Итак у нас есть $_SERVER[‘REQUEST_URI’]. Теперь необходимо обработать элемент $_SERVER[‘SCRIPT_FILENAME’], если он существует. Вэтом элементе хранится абсолютный путь к исполняемому скрипту. Обработка этого элемента необходима, так как на некоторых серверах интерпретатор PHP может работать в режиме CGI. В этом случае к абсолютному пути прибавляется окончание «.cgi». Если такое окончание имеется, то элементу $_SERVER[‘SCRIPT_FILENAME’] присваивается значение элемента $_SERVER[‘PATH_TRANSLATED’]. Если окончание «.cgi» не обнаружено, тогда элемент $_SERVER[‘PATH_INFO’] удаляется.
В конце работы функции «wp_fix_server_vars()» внимание уделяется глобальной переменной «$PHP_SELF». Ей присваивается значение элемента глобального массива $_SERVER[‘PHP_SELF’]. Если эта переменная, после операции присваивания, оказалась пустой, то при помощи стандартной функции «preg_replace()» из строки запроса удаляются всё, что стоит после знака «?». За тем полученный результат сохраняется в переменной «$PHP_SELF» и элементе $_SERVER[‘PHP_SELF’].
Пример использования wp_fix_server_vars()
Эта функция запускается сразу после подключения файла «load.php». Строка «62» скриншота.

Таким образом нам не нужно беспокоиться о том, что $_SERVER[‘REQUEST_URI’] когда-либо будет пустым, поскольку WordPress вызывает функцию «wp_fix_server_vars()» при каждой загрузке, чтобы убедиться, что эта и другие переменные сервера, на которые она опирается, существуют.