WP Manifestindependent plugin directory
manifest / utilities / anti-func

Anti-Func

Anti-Func - это мощный многофункциональный плагин для WordPress, который заменяет необходимость редактирования файла functions.php. Плагин предоставляет более 30 полезных функций для оптимизации, безопасности и улучшения вашего сайта.

by Robert Bennett · github.com/robertobennett/anti-func · website

★ 1stars
0forks

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.zip

Anti-Func WordPress Plugin

Anti-Func - это мощный многофункциональный плагин для WordPress, который заменяет необходимость редактирования файла functions.php. Плагин предоставляет более 30 полезных функций для оптимизации, безопасности и улучшения вашего сайта, позволяя разработчикам добавлять кастомный функционал без риска сломать сайт. Все функции реализованы безопасно и не конфликтуют между собой.


Оглавление

  1. Возможности
  2. Установка
  3. Использование
  4. Разработка
  5. Лицензия

Возможности

Плагин 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, местоположение, браузер).
    • Шорткод для вывода общей статистики сайта (посты, страницы, категории, теги, комментарии).
  • Администрирование:
    • Отключение специфических опций плагинов.
    • Исправление проблем с сессией на главной странице админки.

Установка

  1. Скачайте плагин:
  2. Загрузите плагин через админ-панель WordPress:
    • В админ-панели WordPress перейдите в Плагины -> Добавить новый.
    • Нажмите кнопку Загрузить плагин.
    • Выберите скачанный ZIP-файл и нажмите Установить.
  3. Активируйте плагин:
    • После установки нажмите Активировать плагин.

Использование

Ниже приведено подробное описание каждой функции плагина и способов её использования.

Проверка авторизации 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.