Вроде простой вопрос для программиста PHP.
Получаем URL блога с правильным протоколом
Используй функцию WordPress home_url() и будет тебе счастье.
Что может пойти не так?
Это “грабельки” № 1 – иногда функция home_url() возвращает URL сайта с неправильными протоколом, обычно http вместо https. Как такое может быть?
Это обычно бывает при переводе сайта на https.
В двух словах – недостаточно просто сделать сертификат и включить протокол https. Необходимо еще поменять настройки WordPress.
Функция home_url() определяет протокол на основе двух критериев:
- функции is_ssl(), которая в свою очередь берет информацию от сервера Apache
- и настроек WordPress – от URL адреса WordPress (переменная WP_HOME)
Если после перехода на https Вы не использовали дополнительно никаких плагинов и не меняли настройки WP – функции WP будут Вам возвращать только http.
Можно заранее предварительно определить протокол и принудительно заставить использовать именно его в функция home_url()
echo home_url('/', 'https'); // https://domen.ru/
Проблема определения протокола http/https
Мы можем узнать протокол http/https из разных источников данных. В результате определение протокола становится вероятностной задачей.
- хорошо, когда есть Apache c его глобальным массивом переменных $_SERVER
- $_SERVER[‘HTTP_HOST’] – домен сайта
- $_SERVER[‘HTTPS’] – “on”, “1” для https
- $_SERVER[‘HTTP_X_FORWARDED_FOR’] – включена переадресация с http на https
- $_SERVER[‘REQUEST_SCHEME’] – https или http
- $_SERVER[‘SERVER_PORT’] – 443 для https и 80 для http
- но могут быть разные версии Apache, в том числе и старые – части переменных может не быть
- сервер вообще может быть не Apache (например, Windows Server)
- на сервере может не быть включена переадресация на HTTPS (при наличии SSL)
- на сервере может быть просрочен сертификат SSL (т.е. протокол htttps будет, а шифрования не будет)
- смешанное содержимое – т.е. шифрование и протокол включили – но картинки с сайта по прежнему отдаются в http
- в настройках сайта WordPres в разделе “Адрес WordPress” указан протокол http/https – смотри ниже
И как тут корректно определить https?
Придется использовать несколько критериев:
- ответ сервера
- настройки WordPress
- попытку получить ответ сервера “код 200” для двух вариантов URL (с http и https)
В чём разница между URL сайта и URL WordPress?
Это “грабельки” № 2
Зачем-то в настройках два пункта
Фокус в том, что Вы можете переместить всё файлы ядра WordPress в отдельную папку на сервере – и все будет работать. Например в папку domen.ru/wordpress
Размещаем WordPress в отдельном каталоге
В WordPress даже есть специальная функция site_url()
Да, как Вы уже видите, разработчики WordPress много чего тут намешали…. Попробуем в виде таблицы
Название в “настройках” | Глобальная переменная | Пример URL | Функция WP | Определение протокола http/https |
Адрес WordPress | WP_SITEURL | hhtp://domen.ru/wordpress | site_url() | Только по данным сервера и по переменной WP_SITEURL |
Адрес сайта | WP_HOME | hhtp://domen.ru | home_url() | По данным сервера и по переменной WP_HOME |
Зачем так интересно сделано?
- сервер бывает не только Apache (где есть переменная $_SERVER), но какой-нибудь другой сервер (где такой переменной нет)
- Apache может быть настроен “кривыми” руками и отдать некорректные значения в массиве $_SERVER
Тогда протокол будет определяться ручными настройками WordPress.
Подпишитесь в VKontakte - нажмите кнопку |
||
Подпишитесь в Telegram - нажмите кнопку |
||
Наша группа ODNOKLASSNIKI |
Вы можете сохранить ссылку на эту страницу себе на компьютер в виде htm файла
Пишите на электронную почту (тема и email будут добавлены автоматически в письмо)
В Вашем браузере должна быть настроена обработка ссылок mailto
site_post@bk.ru
или просто скопируйте адрес e-mail
Последние публикации
Как сделать перенос длинной ссылки (URL) на другую строку
Публикация 2 года назад
Длинная ссылка URL выходит за пределы блока Вот, например, ссылка на сайт MS https://docs.microsoft.com/ru-ru/microsoftteams/platform/concepts/build-and-test/deep-links?tabs=teamsjs-v2 При просмотре на широком экране все в порядке. В мобильной версии сайта ссылка выходит за пределы блока и браузер рисует лишнее место справа. Вроде немного ссылка за пределы блока вышла - но получается так. И самое плохое - наша кнопка "Обратная связь" оказалась за пределами экрана мобильной версии. Особенно такая беда в бесплатных темах WordPress. Как это исправить? Нам нужен CSS для указания переноса строк Таблицы каскадных стилей управляют выводом браузера на экран. Кратко о...
(Читать полностью...)
Ограничение 100 Мб для бесплатной версии All-in-One WP Migration
Публикация 2 года назад
Есть такой плагин для архивирования сайта All-in-One WP Migration Читаем статью Плагины для архивирования и переноса сайта Было так: тестовый вариант до 64 Мб бесплатный вариант (расширение Basic) до 500 Мб выше 500 Мб сайт - платный вариант А стало так: бесплатный вариант до 100 МБ платный вариант - сайты более 100 Мб Ссылка на расширение к плагину https://import.wp-migration.com/en Чувствуете, что одной колонки не хватает? Остался вариант только "премиум". Причем при создании архива Вам плагин ничего не сообщает, что правила игры изменились. Плагин дает возможность создать архив для любого объема сайта. В результате архив у Вас есть - а...
(Читать полностью...)
Новые столбцы в админке WordPress
Публикация 3 года назад
Как добавить свои столбцы в административной панели WordPress Нужно в простом варианте сделать несколько вещей: создать саму колонку и его название (через add_filter) заполнить его данными (через add_action) при необходимости включить возможность сортировки колонки (через add_filter) Создаем колонку // создаем новую колонку для записей add_filter( 'manage_'.'post'.'_posts_columns', 'tsl_manage_pages_columns', 4 ); function tsl_manage_pages_columns( $columns ){ $columns = array( 'views' => 'Визиты' ); return $columns; } Итого в массиве $columns появится новый элемент (обычно в самом конце) Заполняем...
(Читать полностью...)
Функция PHP date() и ядро WordPress
Публикация 3 года назад
Это же просто. Возвращается текущая дата и текущее локальное время сервера (с правильно установленной таймзоной). Вот каждый может проверить https://wpavonis.ru/server.php Но если запустить этот же код из среды WordPress - мы получим другие результаты UTC 2021-11-20 07:42:01 Что это за фокус? Почему время по Гринвичу и таймзона другая? WordPress живет в прошлом? ДА! Как говорится - "это не баг, а фича". При запуске ядро WP устанавливает таймзону на UTC. Сделано это специально. Вот тут подробнее. https://wp-kama.ru/function/current_time ВАЖНО: Функция учитывает время сервера установленное в date.timezone setting и переписывает его в момент инициализации системы,...
(Читать полностью...)
Обновление плагина вывода списка страниц в конце поста
Публикация 4 года назад
Вышла версия 1.9 плагина tsl-plugin-out-list-posts Страница плагина находится здесь Плагин вывода анонсов постов в конце контента Плагин добавляет в конце текста анонсы дочерних или одноуровневых страниц для текущего контента. Логика вывода: список дочерних страниц при отсутствии дочерних страниц - выводятся страницы одного уровня при наличии и дочерних страниц и страниц одного уровня - выводятся дочерние страницы на верхнем уровне при отсутствии дочерних страниц ничего не выводится По умолчанию выводятся первые 700 знаков текста и миниатюра. Для примера дерево страниц. Верхняя страница Средняя страница 1 Средняя страница 2 Средняя страница...
(Читать полностью...)
Прячем информационные файлы WordPress
Публикация 4 года назад
После установки WordPress в папке сайта создаются несколько информационных файлов Это собственно файлы: license.txt readme.html Их можно просмотреть через прямой доступ в строке URL. Ранее в файлах добрый WP указывал установленную версию, чем облегчал работу хакеров. Теперь убрали, но нельзя гарантировать, что в будущих обновлениях снова не добавят. Поэтому лучше закрыть. Совет "Удалить после установки!" не подходит - т.к. при обновлении эти файлы будут восстановлены. Файл license.txt Описание лицензии GPL и указание на CMS WP Файл readme.html Общее описание WordPress Файл wp-config-sample.php Это, собственно, не информационный файл. Это образец для создания...
(Читать полностью...)
WordPress 5.6 – результаты поиска на сайте стали попадать в индекс
Публикация 4 года назад
В версии WP 5.6 страница с результатами поиска изменилась и стала попадать в индекс поисковых машин Что это такое? А это теперь WordPress оптимизировал URL выдачи результатов внутреннего поиска в виде domen.ru/search/term Ранее было domen.ru/? s = term И побежали радостные китайские боты заводить в поиск всякую чепуху. Если в этот момент на страницу заходит поисковый робот: он её проверяет получает ответ от сервера 200 ОК (даже при отрицательных результатах поиска!) ой и радостно сохраняет в индексе Вот так это выглядит в строке URL Для запрета поисковым роботам индексации необходимо добавить в файл robots.txt инструкцию Disallow: /search Это запрет на индекс...
(Читать полностью...)
В WP 5.6 добавлена базовая авторизация HTTP
Публикация 4 года назад
Можно увидеть в файле .htaccess новую строку Это добавлена возможность создавать пароли приложений: на сайте должно быть включено шифрование SSL (протокол HTTPS) для API WP для защиты мобильного входа в админку xml-rpc.php (через сервер WordPress) Подробнее можно прочитать в статье Пароли приложений (авторизация) Сделано на основе плагина Application Passwords Пароли можно установить в управлении учетной записью пользователя Смысл в том, что Вы указываете мобильное приложение на своем смартфоне (которое, например, WordPress), создаете для него пароль = и Вы можете входить в мобильную версию админки (только с данного устройства) без основного пароля...
(Читать полностью...)