Intereting Posts
ОШИБКА: файлы cookie заблокированы из-за неожиданного выхода – окончательное решение Как запросить персонализированный тип почтового сообщения? Перенаправление пользователя на страницу, когда нет содержимого? Имеет ли WP, php или текущую структуру (woofoo / genesis и т. Д.). Предложить способ запланировать изменения цвета текста / bg? Как показать список сообщений на основе таксономического термина? Методы локализации для jQuery append preend wrap parent Как заполнять данные из JSON с помощью AJAX в TypeScript? Admin Записан Пользовательский CSS для изменения размеров элементов в нескольких категориях Применить разрешения за сообщение WP Add Media Button – Можно ли задать размер по умолчанию для оригинала / полного размера Отправка переменной jQuery в php-функцию WP_query не возвращает ожидаемый результат Заполнять окно выбора метаданных с дочерними страницами Перенаправление на localhost после установки Multisite на сервере

Как заставить file_get_contents работать в wordpress

Im, использующий geelugin.com для отображения контента на основе местоположения пользователей, codex устанавливается следующим образом:

$geoplugin = unserialize( file_get_contents('http://www.geoplugin.net/php.gp? ip=' . $_SERVER['REMOTE_ADDR']) ); 

Это работает на моем сайте, но не на моем сайте. Я попытался использовать wp_remote_get, но не смог настроить его правильно. Любые идеи о том, почему это будет работать на одном сайте, а не на другом?

Solutions Collecting From Web of "Как заставить file_get_contents работать в wordpress"

Похоже, что file_get_contents() на вашем сервере. Вместо этого используйте wp_remote_get() .

Примечание. wp_remote_get() относится к семейству API-интерфейсов WordPress, специально используемых для отправки запросов GET.

Преимущество wp_remote_get() над file_get_contents() и другой функцией потока / транспорта PHP – это HTTP API-интерфейс WordPress, который был создан для стандартизации единого API, который как можно проще обрабатывал все в отношении HTTP. HTTP API поддерживает различные HTTP-транспорты или реализации PHP для обслуживания различных хостинговых сред и конфигураций.

В двух словах, если file_get_contents() не включен, wp_remote_get() будет использовать cURL, если он доступен, если нет, он найдет и использует любой доступный транспорт HTTP.

Вот как я решил эту проблему:

  function get_client_ip_env() { $ipaddress = ''; if (getenv('HTTP_CLIENT_IP')) $ipaddress = getenv('HTTP_CLIENT_IP'); else if(getenv('HTTP_X_FORWARDED_FOR')) $ipaddress = getenv('HTTP_X_FORWARDED_FOR'); else if(getenv('HTTP_X_FORWARDED')) $ipaddress = getenv('HTTP_X_FORWARDED'); else if(getenv('HTTP_FORWARDED_FOR')) $ipaddress = getenv('HTTP_FORWARDED_FOR'); else if(getenv('HTTP_FORWARDED')) $ipaddress = getenv('HTTP_FORWARDED'); else if(getenv('REMOTE_ADDR')) $ipaddress = getenv('REMOTE_ADDR'); else $ipaddress = 'UNKNOWN'; return $ipaddress; } $geoplugin = maybe_unserialize( wp_remote_fopen('http://www.geoplugin.net/php.gp?ip=' . get_client_ip_env()) );