G|Translate: English EN Deutsch DE Italiano IT Русский RU Español ES Українська UK

Функция PHP date() и ядро WordPress

Это же просто.

Функция PHP date() и ядро WordPress

Возвращается текущая дата и текущее локальное время сервера (с правильно установленной таймзоной).

Вот каждый может проверить

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 и переписывает его в момент инициализации системы, используя date_default_timezone_set('UTC') в файле wp-settings.php. Такой подход позволяет получать как реальное UTC время, так и измененное локальное время сайта.

Вот тут

Функция PHP date() и ядро WordPress

Поэтому в WordPress сделана специальная функция current_time() — возвращает текущее время сайта, учитывается настройка временной зоны на сайте (timezone). Формат аналогичный date() PHP.

ВАЖНО: один и тот же код PHP с использованием date() будет возвращать разные результаты при работе вне и внутри ядра WordPress. 

Неожиданно :)

Вообщем  — для плагинов WordPress используйте current_time().

P.S. В общем случае у нас есть ЧЕТЫРЕ времени:

  • время UTC/GMT (Гринвич)
  • время сервера (его временная зона)
  • время сайта WordPress (при правильной установке будет совпадать с временем сервера)
  • время на локальной машине пользователя (можно получить через JS)

Данный механизм позволяет «перетаскивать» сайт с одного хостинга на другой, не заботясь о том, какое именно системное время установлено на хостинге (и в какой стране расположен этот хостинг). Фактически WordPress переносит свое время, которое Вы установили в настройках сайта.

Другая проблема — очень непросто изнутри WordPress получить именно системное время сервера — так как функция PHP date() будет работать с учетом таймзоны UTC.

Нужно открывать и смотреть данные из системных файлов.

Вот вариант ниже с чтением информации из системных файлов:

  • /etc/localtime // Mac OS X (and older Linuxes) 
  • /usr/share/zoneinfo
  • /etc/timezone // Ubuntu / Debian
  • /etc/sysconfig/clock // RHEL / CentOS

https://bojanz.wordpress.com/2014/03/11/detecting-the-system-timezone-php/

Код из статьи

$timezone = 'UTC';
if (is_link('/etc/localtime')) {
// Mac OS X (and older Linuxes) 
// /etc/localtime is a symlink to the 
// timezone in .
$filename = readlink('/etc/localtime');
if (strpos($filename, '/usr/share/zoneinfo/') === 0) {
$timezone = substr($filename, 20);
}
} elseif (file_exists('/etc/timezone')) {
// Ubuntu / Debian.
$data = file_get_contents('/etc/timezone');
if ($data) {
$timezone = $data;
}
} elseif (file_exists('/etc/sysconfig/clock')) {
// RHEL / CentOS
$data = parse_ini_file('/etc/sysconfig/clock');
if (!empty($data['ZONE'])) {
$timezone = $data['ZONE'];
}
}

date_default_timezone_set($timezone);

 Как вариант — запускать внешний скрипт PHP с функцией date() через exec().

Если Вы хотите показывать клиенту на фронтенде его реальное локальное время — то Вы можете это время взять с его локальной машины через JS.

Обновление плагина вывода списка страниц в конце поста

Вышла версия 1.9 плагина tsl-plugin-out-list-posts

Обновление плагина вывода списка страниц в конце поста

Страница плагина находится здесь

Плагин вывода анонсов постов в конце контента

Плагин добавляет в конце текста анонсы дочерних или одноуровневых страниц для текущего контента.

Обновление плагина вывода списка страниц в конце поста

Логика вывода:

  • список дочерних страниц
  • при отсутствии дочерних страниц — выводятся страницы одного уровня
  • при наличии и дочерних страниц и страниц одного уровня — выводятся дочерние страницы
  • на верхнем уровне при отсутствии дочерних страниц ничего не выводится

 

По умолчанию выводятся первые 700 знаков текста и миниатюра.

Для примера дерево страниц.

  • Верхняя страница
    • Средняя страница 1
    • Средняя страница 2
    • Средняя страница 3
      • Нижняя страница  3 1
      • Нижняя страница 3 2
      • Нижняя страница 3 3

Как видно — у страница «Средняя страница 3» есть и дочерние страницы и страницы одного уровня.

 

Вариант 1 — у верхней страницы нет дочерних

ничего дополнительно выведено не будет

Обновление плагина вывода списка страниц в конце поста

вывода нет — т.е. не показываем остальные страницы верхнего уровня, для этого есть меню.


Вариант 2 — у страницы есть дочерние страницы

в конце контекста показываем список дочерних страниц

Обновление плагина вывода списка страниц в конце поста

вывод дочерних страниц


Вариант 3 — у страницы есть и дочерние страницы и страницы одного уровня

будут показаны дочерние страницы

Обновление плагина вывода списка страниц в конце поста

вывод дочерних страниц  и ссылка на самый верхних уровень


Вариант 4 — у страницы есть только страницы одного уровня

выводим список страниц одного уровня

Обновление плагина вывода списка страниц в конце поста    

 

Для самого нижнего уровня будет дополнительно показана ссылка на самый верхний раздел.

Обновление плагина вывода списка страниц в конце поста

Данная схема помогает предложить посетителю сайта ссылки на материалы одной тематики. В конечном счете улучшается SEO:

  • увеличивается глубина просмотра
  • на текущей странице появляется дополнительный контент

Прячем информационные файлы WordPress

После установки WordPress в папке сайта создаются несколько информационных файлов

Прячем информационные файлы WordPress

Это собственно файлы:

  • license.txt
  • readme.html

Их можно просмотреть через прямой доступ в строке URL. Ранее в файлах добрый WP указывал установленную версию, чем облегчал работу хакеров. Теперь убрали, но нельзя гарантировать, что в будущих обновлениях снова не добавят.

Поэтому лучше закрыть.

Совет «Удалить после установки!» не подходит — т.к. при обновлении эти файлы будут восстановлены.

Файл license.txt

Описание лицензии GPL и указание на CMS WP 

Прячем информационные файлы WordPress

Файл readme.html

Общее описание WordPress

Прячем информационные файлы WordPress

Файл wp-config-sample.php

Это, собственно, не информационный файл. Это образец для создания файла wp-config.php уже с данными базы данных и ключами (в процессе установки).

Прячем информационные файлы WordPress 

Тем не менее — желающих его открыть много. Что они хотят получить в итоге — непонятно. Но сервер бессмысленную работу делает.

Надо тоже его закрыть от любопытных.

Закрываем доступ через инструкции .htaccess для Apache

C учетом возможных двух версий Apahce (ver 1 и ver 2) у хостеров (наличие/отсутствие модуля mod_authz_core.c) делаем следующий вариант

# block license.txt --------------------------------------
<Files license.txt>
<IfModule mod_authz_core.c>
Require all denied
</IfModule>
<IfModule !mod_authz_core.c>
Order deny,allow
Deny from all
</IfModule>
</Files>
# block readme.html --------------------------------------
<Files readme.html>
<IfModule mod_authz_core.c>
Require all denied
</IfModule>
<IfModule !mod_authz_core.c>
Order deny,allow
Deny from all
</IfModule>
</Files>
# block wp-config* ----------------------------------------
<Files "wp-config*">
<IfModule mod_authz_core.c>
Require all denied
</IfModule>
<IfModule !mod_authz_core.c>
Order deny,allow
Deny from all
</IfModule>
</Files>

Если модуль mod_authz_core.c есть — то Require all denied

Если модуля mod_authz_core.c нет — по старому варианту через Deny from all

Для wp-config делаем имя со звездочкой, это закроет файлы от внешнего доступа:

  • wp-config-sample.php
  • wp-config.php

Результат

Прячем информационные файлы WordPress

Доступ запрещен, ошибка 403.  Хорошо.

WordPress 5.6 — результаты поиска на сайте стали попадать в индекс

В версии WP 5.6 страница с результатами поиска изменилась и стала попадать в индекс поисковых машин

WordPress 5.6 - результаты поиска на сайте стали попадать в индекс

Что это такое? 

А это теперь WordPress оптимизировал URL выдачи результатов внутреннего поиска в виде domen.ru/search/term

Ранее было domen.ru/? s = term

И побежали радостные китайские боты заводить в поиск всякую чепуху.

Если в этот момент на страницу заходит поисковый  робот:

  • он её проверяет
  • получает ответ от сервера 200 ОК  (даже при отрицательных результатах поиска!)
  • ой
  • и радостно сохраняет в индексе

Вот так это выглядит в строке URL

WordPress 5.6 - результаты поиска на сайте стали попадать в индекс 

Для запрета поисковым роботам индексации необходимо добавить в файл robots.txt инструкцию

Disallow: /search

Это запрет на индекс папки и её содержимого.

Подробнее читаем в статье

Файл robots.txt

UPD

В обновлении WordPress 5.6.1 исправили — теперь страница поиска закрыта тэгом ‘noindex’ и код 200 не возвращается.

WordPress 5.6 - результаты поиска на сайте стали попадать в индекс

И хорошо.

А то тупые китайские боты могли наделать кучу бессмысленных страниц в индексе….

В WP 5.6 добавлена базовая авторизация HTTP

Можно увидеть в файле .htaccess новую строку

В WP 5.6 добавлена базовая авторизация HTTP

Это добавлена возможность создавать пароли приложений:

  • на сайте должно быть включено шифрование SSL (протокол HTTPS)
  • для API WP
  • для защиты мобильного входа в админку xml-rpc.php (через сервер WordPress)

Подробнее можно прочитать в статье 

Пароли приложений (авторизация)

Сделано на основе плагина Application Passwords

Пароли можно установить в управлении учетной записью пользователя

В WP 5.6 добавлена базовая авторизация HTTP

Смысл в том, что Вы указываете мобильное приложение на своем смартфоне (которое, например, WordPress), создаете для него пароль = и Вы можете входить в мобильную версию админки (только с данного устройства) без основного пароля пользователя. 

Фактически Вы привязываете свое мобильное устройство к мобильной административной панели своего сайта.

Пароли приложения также можно установить по дополнительной ссылке в панели управления

domen.ru/wp-admin/authorize-application.php

В WP 5.6 добавлена базовая авторизация HTTP

Если у Вас включена базовая авторизация административной панели wp-login.php — то почему-то не работает…

Или такой вариант сделан

Двухфакторная аутентификация WordPress

Выдает предупреждение: Ваш сайт, похоже, использует базовую HTTP авторизацию, которая в настоящее время несовместима с паролями приложений

В WP 5.6 добавлена базовая авторизация HTTP

Т.е. можно пока или основной вход или мобильный вход в админку защитить дополнительной авторизацией. Странно.

Наверное, в WP 5.7 исправят.

Плагин Duplicator опасно сохраняет архив

Наш любимый плагин Duplicator для архивирования сайта

Плагин Duplicator опасно сохраняет архив

Основная статья тут

Плагины для архивирования и переноса сайта

Запускаем создание пакета (версия плагина 1.3.37)

Плагин Duplicator опасно сохраняет архив

Готово. Смотрим, а что там на сервере?

А в папке на сервере есть копия файла wp-config.txt (тестовая версия wp-config.php). 

Плагин Duplicator опасно сохраняет архив

А попробуем её открыть по URL (mysite.ru/wp-snapshots/name_wp-config.txt).

Упс. Всё прекрасно открывается.

Часть параметром базы из копии убрана — но всё равно, опасная игра. Полное название файла можно легко восстановить, зная как плагин его формирует.

Плагин Duplicator опасно сохраняет архив

И прочитав параметры из этого файла — нехороший человек легко получит доступ к Вашему сайту. Поосторожнее с обновлениями.

Всегда проверяйте, что там плагины в реальности делают…

UPD.

В версии 1.3.40 уже исправили, больше нет копии wp-config.php в отдельном файле (и соответственно с прямым URL).

Вышла новая версия плагина (widget) вывода списка авторов 1.2

В новой версии плагина

Вышла новая версия плагина (widget) вывода списка авторов  1.2

добавлена возможность управлением показа e-mail автора.

Сам плагин можно скачать здесь

Плагин вывода списка авторов блога (виджет)

В настройках — по умолчанию показ включён

Вышла новая версия плагина (widget) вывода списка авторов  1.2

Без почты автора строки с e-mail в выводе не будет

Вышла новая версия плагина (widget) вывода списка авторов  1.2

Пользуйтесь на здоровье :)

Делаем модальное окно iFrame с помощью jQuery для WordPress

Красивое модальное окно вот такого плана для открытия в нем ссылки

Делаем модальное окно iFrame с помощью jQuery для WordPress

Посмотреть в живую можно вот тут

Несмотря на то, что это достаточно популярный запрос «как сделать открыть ссылку в модальном окне» — на первых пяти страницах выдачи (как Яндекс, так и Гугль) сплошной мусор… С вариантами ответов «использовать target=_blank».

Базовый код не мой — но он немного модифицирован, что бы всё работало правильно.

Какие тут проблемы:

  • можно использовать совсем готовую библиотеку типа fancybox3 — только там кода (в приложенных библиотеках ) объемом почти на 100Кб
  • можно использовать чистый JS — но тут другие проблемы
    • для открытия ссылки нам нужен iFrame
    • при написании только на JS этот фрейм нужно заранее где-то создать — а именно в коде html (те просто у ссылки указать класс для обработки будет не достаточно)
    • jQuery умеет создавать код для вывода для браузера (совсем как php, только на локальной машине)
  • код на jQuery не всегда работает  в WordPress (есть такая загадка)

Итого готовый код модального окна IFrame (jQuery) для WordPress

<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<!----------------------------->
<style>
* {margin: 0; padding: 0}
.shadow {width: 100%; height: 100%; position: fixed; background-color: #444; top: 0; left:0; z-index: 400}
#modal {z-index: 500; position: fixed; background: #fff; top: 50px;}
#modal iframe {width: 100%; height: 100%}
#closeModal {position: absolute; top: -15px; right: -20px; font-size: 0.8em; }
#closeModal img {width: 30px; height: 30px;}
</style>
<!-- вот здесь должен быть вызов библиотеки jQuery при использовании в файле html вне WP-->
<!----------------------------->
<script type="text/javascript">
var shadow, modalX, modalY, modalWidth, modalHeight;
function modal(url) {
return '<div id="modal"><a id="closeModal" title="close" href="javascript:;"><img width="30" height="30" alt="close" src="data:image/png;base64,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"></a><iframe src="' + url + '"></iframe></div>';
}
shadow = "<div class='shadow'></div>";
jQuery(document).ready(function($) {
$(".myModal").on("click", function(e) {
e.preventDefault();
// get size and position
modalWidth = $(this).data("width");
modalHeight = $(this).data("height");
modalX = (($(window).innerWidth()) - modalWidth) / 2;
modalY = (($(window).innerHeight()) - modalHeight) / 2;
// append shadow layer
$(shadow).prependTo("body").css({
"opacity": 0.2
});
// append modal
$(modal(this.href)).appendTo("body").css({
"top": modalY,
"left": modalX,
"width": modalWidth,
"height": modalHeight
});
// close and remove
$("#closeModal").on("click", function() {
$("#modal, .shadow").remove();
});
$(document).keyup(function(event) {
if (event.keyCode === 27) {
$("#modal, .shadow").remove();
}
}); //keyup
}); // on
}); // ready
</script>
</head>
<!----------------------------->
<body>
<a href="https://wpavonis.ru/" class="myModal" data-width="800" data-height="600">open url</a>
</body>
<!----------------------------->
</html>

линия горизонтальной прокрутки появляется из-за вот этой длинной строки

<img width="30" height="30" alt="close" src="data:image/png;base64,iVBORw0KGgoAAAANSU...

пугаться не надо — это просто крестик в base64 для закрытия окна iFrame (что бы не грузить картинку с другого ресурса).

Что бы код заработал в виде отдельного файла html  — надо в начало <head> добавить вызов библиотеки jQuery

<script type="text/javascript" src="https://yastatic.net/jquery/2.1.3/jquery.min.js"></script>

например, вот так — с Яндекса.

Переходим к сути:

  •  в тэгах <style>…</style> находятся стили, которые отвечают за затемнение (паранджа) и внешний вид окна
  • в тэгах <script>…</script> находится наш код jQuery, который отвечает за вывод окна
  • и в html наша ссылка, в которой указан класс и размеры модального окна -> class=»myModal» data-width=»800″ data-height=»600″

 

Оригинальный код здесь https://jsfiddle.net/8b3Zj/

ВАЖНО — оригинальный код не будет работать в WP!

Основные различия

 Оригинальный кодКод для WordPress
крестик закрытия окнассылка на картинку PNG, квадратный крестикссылка на картинку в base64, круглый крестик
окно на экранедвигается при прокруткезафиксировано на экране
работа в WPне работаетработает

 

Почему код jQuery не работает в WordPress?

Что именно модифицированно в коде? 

В базовом коде в начале блока идет 

$(document).ready(function()

в WordPress стандартный способ обращения к элементам через $ отключен, так как другие библиотеки также могут использовать данный механизм обращения к элементам.

Поэтому в WordPress файл jquery.js, который располагается по адресу /wp-includes/js/jquery/jquery.js, отличается от стандартных версий библиотеки jQuery тем, что в конце файла прописана строчка:

jQuery.noConflict();

Эта строчка и отключает работу с элементами страницы через $.

Существует несколько вариантов решения:

  • использовать конструкцию вида jQuery(document).ready(function($) — как и сделано в измененном коде
  • заменить везде вызовы функций $ на jQuery — неудобно, когда код большой
  • использовать в начале скрипта var $ = jQuery;

Добавляем модальное окно iFrame (jQuery) в WordPress

Посмотрим, как всю эту красоту добавить в WordPress. По умолчанию — в WordPress библиотека jQuery подключена изначально. Да, есть  отдельные темы, которые её отключают при старте — что бы получить красивые показатели скорости загрузки. Но таких тем меньшинство.

Вариант 1 — работать будет, но не всегда.

Добавляем два блока

<style>...</style>
<script>...</script>

в head, например с помощью плагина Head & Footer Code

Делаем модальное окно iFrame с помощью jQuery для WordPress

Работать будет в 99%.

Для 100%  гарантии работы используем

Вариант 2 — добавляем скрипты средствами WordPress

Суть проблемы.

Что бы Ваш скрипт jQuery сработал — до его вызова гарантирована должна загрузиться сама библиотека jQuery. 

Нужно сделать два отдельных файла:

  • CSS (для стилей из содержимого <style>…</style> )
  • и JS (для кода jQuery из содержимого <script>…</script>) 

и подключить их с помощью функции wp_enqueue_style

Тогда WordPress корректно и правильно подключит стили CSS и код jQuery.

Новый виджет WP для вывода в сайдбаре списка авторов блога с аватарами

Да, еще один виджет списка авторов :)

Новый виджет WP для вывода в сайдбаре списка авторов блога с аватарами

Получилось симпатично. Сам плагин можно скачать в статье

Плагин вывода списка авторов блога (виджет)

В плагине tsl-plugin-list-author в настройках можно указать заголовок  и число авторов для вывода.

Новый виджет WP для вывода в сайдбаре списка авторов блога с аватарами

Под авторами подразумеваются все пользователи, у которых есть статьи (посты).

В качестве аватара автора используется картинка, установленная пользователем в сервисе Gravatar. Но с применением плагина Simple Local Avatars можно использовать картинку из медиатеки WordPress.

Плагин по умолчанию:

  • выводит список трех (по умолчанию — настраивается) авторов
  • сортировка авторов по числу публикаций
  • показ аватара автора
  • показ числа статей автора
  • ссылка с картинки на страницу автора
  • показ e-mail автора

 

В планах — показ общего числа просмотров статей каждого автора (в сумме) в виде:

  • 23 post (115 views)
  • 4 post (31 views)

Т.е. будет видно не только число статей автора, но и насколько этого автора читают :)

UPDATE:

Вышла новая версия плагина (widget) вывода списка авторов

Управление уведомлениями email WordPress

При различных действиях пользователя (регистрация, смена пароля, замена e-mail) — WordPress отправляет информационное сообщение на электронную почту.

Управление уведомлениями email WordPress

Всё, что у нас есть в базовой установке WordPress — только одна «галочка» при регистрации пользователя. Вот это.

Управление уведомлениями email WordPress

Но этого мало. Особенно, когда блог управляется одним админом, который и добавляет пользователей. Нужно как-то всю эту информационную реку отключить.

Используем плагин Manage Notification E-mails

Заходим в его настройки и видим, что наши возможности сильно расширились.

Управление уведомлениями email WordPress

Плагин не переведен на русский, смотрим перевод основных пунктов ниже.

Уведомление о новом пользователе для админаОтправка письма администратору сайта после регистрации нового пользователя.
Уведомление о новом пользователе для самого пользователяОтправка письма с учетными данными недавно зарегистрированному пользователю.
Уведомить автора постаОтправка письма автору поста после комментария / обратной связи
Уведомить модератораОтправка письма модератору блога о новом комментарии, ожидающем утверждения.
Уведомление об изменении пароля для администратораОтправка письма администратору сайта после смены пароля пользователя.
Уведомление об изменении пароля для пользователяОтправка письма пользователю после смены его пароля.
Уведомление об изменении адреса электронной почты пользователюОтправка письма пользователю после смены его электронной почты.
Отправка забытого пароля пользователюОтправить забытый пароль по электронной почте зарегистрированному пользователю.
(Чтобы предотвратить блокировку, отправка администратору электронного письма с забытым паролем по-прежнему будет работать)
Отправка забытого пароля админуОтправьте администраторам письмо с забытым паролем. Ладно, это ОПАСНЫЙ ВАРИАНТ!
Так что будьте осторожны, потому что отключение этой опции предотвращает отправку забытого пароля по электронной почте всем администраторам. Так что держите свой пароль и меняйте его на свой страх и риск ;-)
Уведомление об автоматическом обновлении ядра WPОтправляет администраторам электронное письмо после успешного автоматического обновления ядра WordPress. Электронные письма о неудачных обновлениях всегда будут отправляться администраторам и не могут быть отключены.

Что бы не забивать почту своих пользователей — два уведомления можно отключить:

  • Уведомление о новом пользователе для самого пользователя (галочка при регистрации останется — но не будет работать)
  • Уведомление об изменении адреса электронной почты пользователю