Anti-Func
Anti-Func - это мощный многофункциональный плагин для WordPress, который заменяет необходимость редактирования файла functions.php. Плагин предоставляет более 30 полезных функций для оптимизации, безопасности и улучшения вашего сайта.
by Robert Bennett · github.com/robertobennett/anti-func · website
Install
No release zip yet. The repository archive installs, but the folder name will carry the branch suffix and updates will not flow:
wp plugin install https://github.com/robertobennett/anti-func/archive/refs/heads/anti-func.zipAnti-Func WordPress Plugin
Anti-Func - это мощный многофункциональный плагин для WordPress, который заменяет необходимость редактирования файла functions.php. Плагин предоставляет более 30 полезных функций для оптимизации, безопасности и улучшения вашего сайта, позволяя разработчикам добавлять кастомный функционал без риска сломать сайт. Все функции реализованы безопасно и не конфликтуют между собой.
- Автор: Robert Bennett
- Версия: 3.0.9
- URI плагина: https://github.com/RobertoBennett/anti-func
Оглавление
- Возможности
- Установка
- Использование
- Проверка авторизации AJAX
- Отключение кэширования для авторизованных пользователей
- Синхронизация состояния авторизации
- Управление HLS.js
- Центрирование шорткодов
- Удаление ненужных мета-тегов и ссылок
- Удаление Emoji скриптов и стилей
- Ленивая загрузка для списков постов
- Кэширование фрагментов с большим количеством DOM
- Очистка просроченных Transient
- Отключение специфических опций
- Блокировка специфических Email и доменов
- Добавление номера страницы в метаданные
- Удаление слова "Рубрика" из заголовков
- Создание желтого блока через шорткод
- Установка тайм-аута сессии
- Уникальные Description на страницах пагинации
- Функционал "Кто онлайн"
- Функционал статистики
- Вывод списка зарегистрированных пользователей
- Генерация уникальных имен файлов при загрузке
- Шорткод для скрытия контента
- Шорткод для вывода статистики сайта
- Шорткод "Последнее обновление"
- Кастомизация страницы входа
- Шорткод для прокручиваемого списка с поиском
- Измерение времени загрузки страницы
- Получение информации о посетителе (IP, местоположение, браузер)
- Шорткод для случайной цитаты
- Запрет множественных регистраций с одного IP
- Запись времени входа пользователя
- Информация о времени входа в админ-бар
- Разработка
- Лицензия
Возможности
Плагин Anti-Func включает в себя широкий спектр функций для улучшения вашего сайта WordPress:
- Оптимизация:
- Отключение кэширования для авторизованных пользователей.
- Ленивая загрузка для списков постов.
- Кэширование фрагментов с большим количеством DOM.
- Очистка просроченных transient.
- Измерение времени загрузки страницы и размера страницы.
- Безопасность:
- Блокировка специфических email и доменов при регистрации.
- Запрет множественных регистраций с одного IP-адреса.
- Генерация уникальных имен файлов при загрузке.
- Управление пользователями и доступом:
- Проверка авторизации через AJAX.
- Синхронизация состояния авторизации между админ-панелью и фронтендом.
- Установка тайм-аута сессии.
- Запись времени входа пользователя и отображение в админ-баре.
- Шорткод для скрытия контента для незарегистрированных пользователей.
- Вывод списка зарегистрированных пользователей.
- SEO и метаданные:
- Добавление номера страницы в метаданные (Yoast SEO, AIOSEO).
- Уникальные мета-описания для страниц пагинации.
- Удаление ненужных мета-тегов и ссылок (
wp_generator,wlwmanifest_link,rsd_link,wp_shortlink_wp_head,adjacent_posts_rel_link_wp_head).
- Кастомизация и функционал:
- Центрирование контента с помощью шорткодов
[center]и[center_block]. - Создание желтых информационных блоков с помощью шорткода
[yellowbox]. - Управление HLS.js (отключение/подключение).
- Удаление Emoji скриптов и стилей.
- Кастомизация страницы входа (логотип и фон).
- Шорткод для прокручиваемого списка с поиском.
- Шорткод "Последнее обновление" для отображения даты последнего обновления.
- Шорткод для случайной цитаты.
- Центрирование контента с помощью шорткодов
- Мониторинг и статистика:
- Функционал "Кто онлайн" с отображением типа пользователя, IP, хостнейма и провайдера.
- Функционал статистики посещений (боты, поисковые боты, пользователи, гости) за различные периоды.
- Получение информации о посетителе (IP, местоположение, браузер).
- Шорткод для вывода общей статистики сайта (посты, страницы, категории, теги, комментарии).
- Администрирование:
- Отключение специфических опций плагинов.
- Исправление проблем с сессией на главной странице админки.
Установка
- Скачайте плагин:
- Перейдите на страницу релизов Anti-Func на GitHub.
- Скачайте последнюю версию плагина в виде ZIP-архива.
- Загрузите плагин через админ-панель WordPress:
- В админ-панели WordPress перейдите в
Плагины->Добавить новый. - Нажмите кнопку
Загрузить плагин. - Выберите скачанный ZIP-файл и нажмите
Установить.
- В админ-панели WordPress перейдите в
- Активируйте плагин:
- После установки нажмите
Активировать плагин.
- После установки нажмите
Использование
Ниже приведено подробное описание каждой функции плагина и способов её использования.
Проверка авторизации AJAX
Плагин добавляет скрипт в футер сайта, который асинхронно проверяет статус авторизации пользователя. Если пользователь авторизован, обновляются элементы интерфейса (например, скрывается ссылка "Войти" и показывается "Выйти", а также отображается информация о пользователе).
- Функции:
add_auth_check_script(),check_user_auth_ajax() - Действия:
wp_footer,wp_ajax_check_user_auth,wp_ajax_nopriv_check_user_auth - Описание: Автоматически работает на фронтенде. Не требует ручной настройки.
Отключение кэширования для авторизованных пользователей
Для авторизованных пользователей плагин устанавливает HTTP-заголовки, которые предотвращают кэширование страниц. Это обеспечивает актуальность контента для вошедших пользователей.
- Функция:
set_headers_for_logged_users() - Действие:
send_headers - Описание: Автоматически применяется для авторизованных пользователей на фронтенде.
Синхронизация состояния авторизации
Улучшенная синхронизация состояния авторизации между админ-панелью и фронтендом, а также исправление проблем с сессией на главной странице админки.
- Функции:
sync_user_auth_status(),fix_admin_dashboard_session() - Действия:
init,admin_init - Описание: Автоматически поддерживает актуальное состояние сессии пользователя.
Управление HLS.js
Плагин позволяет управлять подключением скрипта HLS.js, который используется для воспроизведения видеопотоков. Скрипт подключается только при наличии шорткода [m3u_player] в контенте.
- Функции:
my_deregister_hls_script(),custom_enqueue_hls() - Действие:
wp_enqueue_scripts - Описание: Если вы используете
[m3u_player], HLS.js будет подключен автоматически. Если нет, он будет отменен.
Центрирование шорткодов
Предоставляет шорткоды для центрирования контента.
-
Класс:
CenterShortcodes -
Шорткоды:
[center]Ваш контент[/center]- центрирует контент с использованиемdisplay: flex.[center_block width="50%"]Ваш контент[/center_block]- центрирует контент как блочный элемент сtext-align: centerи опциональной шириной.
-
Пример:
[center] <img src="your-image.jpg" alt="Centered Image"> [/center] [center_block width="300px"] <p>Этот текст будет центрирован в блоке шириной 300px.</p> [/center_block]
Удаление ненужных мета-тегов и ссылок
Удаляет из <head> различные мета-теги и ссылки, которые могут быть не нужны и влиять на производительность или безопасность.
- Действия:
remove_action('wp_head', ...) - Удаляемые элементы:
wp_generator,wlwmanifest_link,rsd_link,wp_shortlink_wp_head,adjacent_posts_rel_link_wp_head. - Описание: Автоматически очищает
<head>от лишнего.
Удаление Emoji скриптов и стилей
Отключает загрузку скриптов и стилей, связанных с Emoji, что может улучшить производительность.
- Действия:
remove_action('wp_head', 'print_emoji_detection_script'),remove_action('wp_print_styles', 'print_emoji_styles'),remove_action('admin_print_scripts', 'print_emoji_detection_script'),remove_action('admin_print_styles', 'print_emoji_styles') - Описание: Автоматически отключает Emoji.
Ленивая загрузка для списков постов
Добавляет JavaScript для ленивой загрузки элементов с классом .lazy-post с использованием Intersection Observer API.
- Функция:
lazy_load_posts() - Действие:
wp_footer - Описание: Для использования добавьте класс
lazy-postк элементам, которые вы хотите загружать лениво.
Кэширование фрагментов с большим количеством DOM
Функция для кэширования виджетов или других фрагментов HTML-кода, чтобы уменьшить нагрузку на сервер.
- Функция:
cached_widget_output($widget_content) - Описание: Используйте эту функцию для обертывания вывода виджетов или других динамических блоков, чтобы кэшировать их.
echo cached_widget_output($my_widget_html);
Очистка просроченных Transient
Плагин автоматически планирует ежедневную очистку просроченных transient из базы данных, что помогает поддерживать её в чистоте.
- Функции:
clear_expired_transients_daily() - Действие:
clear_expired_transients(запланированное событие) - Описание: Автоматически запускается ежедневно.
Отключение специфических опций
Отключает ряд опций, которые могут быть установлены различными плагинами и не всегда нужны.
- Список опций:
grassblade_free_addons,grassblade_addons,ampforwppro_license_info,wpfucf_custom_fields,cmplz_transients,aioseo_options,anspress_opt,wpforo_attach_phrases,joli_table_of_contents_settings,aioseo_options_dynamic,wpforo_attach_options,wpforo_subscriptions,simple_gdpr_cookie_compliance_options,wpforo_email,foxiz_import_id,amp-wp-translation,wbcr_clearfy_hidden_notices,kahuna_settings,hu_theme_options. - Описание: Автоматически устанавливает значение 'no' для перечисленных опций.
Блокировка специфических Email и доменов
Предотвращает регистрацию пользователей с определенных email-адресов или доменов. Список заблокированных доменов может быть загружен из файла blocked-domains.txt в корневой директории WordPress.
- Функции:
block_specific_emails(),get_blocked_domains_from_file() - Действие:
registration_errors - Настройка: Создайте файл
blocked-domains.txtв корневой директории вашего WordPress-сайта. Каждая строка в этом файле должна содержать один домен, который вы хотите заблокировать. Комментарии начинаются с#.# Заблокированные домены example.com spamdomain.net
Добавление номера страницы в метаданные
Добавляет номер текущей страницы к мета-описанию и заголовку для страниц пагинации, улучшая SEO.
- Функция:
addPageNumberToMeta() - Действия:
wpseo_metadesc,wpseo_title - Описание: Автоматически добавляет " - Страница X" к мета-тегам.
Удаление слова "Рубрика" из заголовков
Удаляет префикс "Рубрика:" или "Метка:" из заголовков страниц категорий и меток.
- Функция:
artabr_remove_name_cat() - Действие:
get_the_archive_title - Описание: Очищает заголовки архивов.
Создание желтого блока через шорткод
Позволяет создавать стилизованные желтые информационные блоки с помощью шорткода.
- Функция:
make_yellowbox() - Шорткод:
[yellowbox]Ваш важный текст здесь.[/yellowbox] - Пример:
[yellowbox] Это важная информация, выделенная желтым блоком. [/yellowbox]
Установка тайм-аута сессии
Устанавливает пользовательский тайм-аут для сессий WordPress. Для администраторов тайм-аут значительно увеличен.
- Константа:
WP_SESSION_COOKIE_LIFETIME(по умолчанию 14400 секунд = 4 часа) - Функция:
custom_auth_cookie_expiration() - Действие:
auth_cookie_expiration - Описание: Настраивает продолжительность сессии.
Уникальные Description на страницах пагинации
Генерирует уникальные мета-описания для страниц пагинации, предотвращая дублирование контента и улучшая SEO.
- Функции:
remove_default_meta_description(),custom_pagination_meta_description() - Действие:
wp_head - Описание: Автоматически создает мета-описания вида "Страница X - [Описание категории/сайта] | [Название сайта]".
Функционал "Кто онлайн"
Отслеживает и отображает информацию о текущих посетителях сайта (пользователи, гости, боты) с их IP-адресами, хостнеймами и провайдерами.
- Функции:
get_user_ip(),get_ip_details(),get_online_users(),update_online_users(),log_unique_visit() - Шорткод:
[online_users] - Описание:
update_online_users(): Обновляет список онлайн-пользователей каждые 5 минут.log_unique_visit(): Логирует уникальные посещения в файлonline_logs/txt-YYYY-MM.log.[online_users]: Отображает таблицу с информацией о текущих онлайн-пользователях.
- Требования: Для получения информации о провайдере (ISP) может потребоваться определение константы
IPINFO_TOKENв вашемwp-config.php:define('IPINFO_TOKEN', 'ВАШ_ТОКЕН_IPINFO');
Функционал статистики
Предоставляет шорткод для отображения статистики посещений сайта (боты, поисковые боты, пользователи, гости) за последние 7, 14 и 30 дней, а также детализацию по поисковым ботам.
- Функции:
get_bot_name(),get_visitors_stats(),get_cached_stats() - Шорткод:
[visitors_stats] - Описание: Отображает подробную статистику посещений, используя данные из логов, генерируемых функцией "Кто онлайн".
Вывод списка зарегистрированных пользователей
Отображает список всех зарегистрированных пользователей (кроме администраторов) с их именем, скрытым email, датой регистрации и датой последнего входа.
- Функции:
update_last_login(),get_all_registered_users(),registered_users_shortcode(),registered_users_styles() - Шорткод:
[registered_users] - Описание:
update_last_login(): Обновляет метаданные пользователя при каждом входе.[registered_users]: Выводит таблицу с информацией о пользователях.
Генерация уникальных имен файлов при загрузке
Изменяет имена загружаемых файлов на уникальные, используя uniqid() и time(), чтобы избежать конфликтов и улучшить безопасность.
- Функция:
custom_wp_handle_upload_prefilter() - Действие:
wp_handle_upload_prefilter - Описание: Автоматически переименовывает все загружаемые файлы.
Шорткод для скрытия контента
Позволяет скрывать определенный контент от незарегистрированных пользователей.
- Функция:
restricted_content_shortcode() - Шорткод:
[restricted]Ваш скрытый контент[/restricted] - Пример:
[restricted] Этот текст виден только авторизованным пользователям. [/restricted]
Шорткод для вывода статистики сайта
Отображает общую статистику сайта, такую как количество записей, страниц, категорий, меток и комментариев.
- Функции:
site_statistics_shortcode(),count_today_registered_users(),site_statistics_styles() - Шорткод:
[site_stats] - Атрибуты:
show_posts(true/false)show_pages(true/false)show_categories(true/false)show_tags(true/false)show_users(true/false) - закомментировано в текущей версииshow_comments(true/false)show_today_users(true/false) - закомментировано в текущей версии
- Пример:
[site_stats show_posts="true" show_comments="true"]
Шорткод "Последнее обновление"
Отображает дату последнего обновления страницы или сайта.
- Функции:
shortcode_last_update(),last_update_styles() - Шорткод:
[last_update] - Пример:
[last_update]
Кастомизация страницы входа
Позволяет изменить логотип и цвет фона на странице входа WordPress.
- Функция:
my_custom_login_logo_and_background() - Действие:
login_enqueue_scripts - Настройка: Измените URL логотипа и цвет фона в функции
my_custom_login_logo_and_background().
Шорткод для прокручиваемого списка с поиском
Создает прокручиваемый список элементов с функцией поиска.
- Функции:
scrolling_list_shortcode(),scrolling_list_styles(),scrolling_list_scripts() - Шорткод:
[scrolling_list items="Элемент 1, Элемент 2, Элемент 3" height="250px"] - Атрибуты:
items: Список элементов, разделенных запятыми.height: Высота прокручиваемого блока (например, "200px").
- Пример:
[scrolling_list items="Apple, Banana, Cherry, Date, Elderberry, Fig, Grape" height="150px"]
Измерение времени загрузки страницы
Отображает время загрузки страницы и её размер.
- Функции:
start_timer(),get_page_load_time(),display_page_load_time_shortcode(),get_page_size(),display_page_size_shortcode() - Шорткоды:
[page_load_time][page_size]
- Пример:
[page_load_time] [page_size]
Получение информации о посетителе (IP, местоположение, браузер)
Отображает информацию о текущем посетителе, включая IP-адрес, страну, город, координаты, операционную систему и браузер.
- Функции:
get_visitor_ip(),get_location_info(),get_user_agent_info(),display_visitor_info() - Шорткод:
[visitor_info] - Описание: Использует внешние API (
ipapi.co,ipwho.is) для определения местоположения. Информация кэшируется для производительности. - Пример:
[visitor_info]
Шорткод для случайной цитаты
Отображает случайную цитату из файла quotes.txt в корневой директории вашей темы.
- Функции:
random_quote_shortcode(),format_quote(),add_quote_styles() - Шорткод:
[random_quote] - Настройка: Создайте файл
quotes.txtв корневой директории вашей активной темы. Каждая цитата должна быть на новой строке. - Пример:
[random_quote]
Запрет множественных регистраций с одного IP
Предотвращает регистрацию нескольких учетных записей с одного и того же IP-адреса.
- Функции:
get_user_real_ip(),prevent_multiple_registrations_from_same_ip(),save_user_registration_ip() - Действия:
registration_errors,user_register - Описание: При регистрации пользователя его IP-адрес сохраняется в метаданных. Если с этого IP уже есть регистрация, новая будет заблокирована.
Запись времени входа пользователя
Записывает время последнего и предыдущего входа пользователя в метаданные.
- Функции:
record_user_login_time(),init_current_session_login_time() - Действия:
wp_login,init - Описание: Автоматически обновляет метаданные пользователя при каждом входе.
Информация о времени входа в админ-бар
Добавляет в админ-бар WordPress пункт меню, отображающий время текущего и предыдущего входа авторизованного пользователя.
- Функции:
add_last_login_to_admin_bar(),add_last_login_styles() - Действия:
admin_bar_menu,wp_head,admin_head - Описание: Видно только авторизованным пользователям в админ-баре.
Разработка
Плагин разработан с учетом расширяемости и безопасности. Все функции обернуты в отдельные блоки комментариев для удобства навигации.
- Хуки: Плагин активно использует хуки WordPress (действия и фильтры) для интеграции своего функционала.
- Безопасность: Используются функции WordPress для санитаризации и экранирования данных (
esc_html,esc_attr,sanitize_text_field,wp_verify_nonce,wp_create_nonce). - Производительность: Функции кэширования и ленивой загрузки помогают оптимизировать работу сайта.
Если вы хотите внести изменения или добавить новые функции, рекомендуется следовать существующей структуре и использовать стандартные практики WordPress.
Лицензия
Этот плагин распространяется под лицензией MIT. Подробности см. в файле LICENSE в репозитории GitHub.