Хуки (фильтры)
Фильтры WP eLDeR Addon для тонкой настройки из темы или собственного плагина. Код добавляется в functions.php дочерней темы или в mu-плагин.
Настройки и совместимость
wp_elder_addon_options
apply_filters( 'wp_elder_addon_options', array $options )
Действующие настройки плагина (сохранённые + значения по умолчанию) перед применением. Через этот фильтр работает анти-конфликт. На экране настроек плагина и при их сохранении не применяется — форма всегда показывает и сохраняет реальные значения.
// Принудительно выключить конвертацию на тестовой копии сайта
add_filter( 'wp_elder_addon_options', function ( $options ) {
if ( defined( 'WP_ENVIRONMENT_TYPE' ) && 'staging' === WP_ENVIRONMENT_TYPE ) {
$options['image_conversion_format'] = 'none';
}
return $options;
} );wp_elder_addon_conflict_groups
apply_filters( 'wp_elder_addon_conflict_groups', array $groups )
Карта анти-конфликта: группа → какие настройки глушить (overrides) и по каким константам, классам или функциям узнавать конкурента. Можно добавить свою группу или убрать существующую.
// Глушить SMTP плагина, если активен свой почтовый mu-плагин
add_filter( 'wp_elder_addon_conflict_groups', function ( $groups ) {
$groups['my_mailer'] = array(
'label' => 'Отправка почты через SMTP',
'overrides' => array( 'mail_smtp_enabled' => false ),
'constants' => array( 'MY_MAILER_VERSION' ),
'classes' => array(),
'functions' => array(),
);
return $groups;
} );wp_elder_addon_keep_admin_notice
apply_filters( 'wp_elder_addon_keep_admin_notice', bool $keep, callable $function, string $hook )
На экране настроек плагина скрываются чужие уведомления. Верните true, чтобы оставить нужное.
add_filter( 'wp_elder_addon_keep_admin_notice', function ( $keep, $function ) {
if ( is_array( $function ) && is_object( $function[0] ) && $function[0] instanceof My_Backup_Notice ) {
return true;
}
return $keep;
}, 10, 2 );wp_elder_addon_keep_core_admin_notices
apply_filters( 'wp_elder_addon_keep_core_admin_notices', bool $keep )
Оставлять ли на экране настроек уведомления ядра WordPress (например, об обновлении). По умолчанию true.
add_filter( 'wp_elder_addon_keep_core_admin_notices', '__return_false' );Медиафайлы
wp_elder_addon_webp_quality
apply_filters( 'wp_elder_addon_webp_quality', int $quality, array $upload, string $context )
Качество WebP для конкретного файла. $context — контекст загрузки WordPress (upload, sideload) или generated_size для промежуточных размеров. Итог ограничивается диапазоном 1–100.
// Миниатюры жмём сильнее, оригинал — как в настройках
add_filter( 'wp_elder_addon_webp_quality', function ( $quality, $upload, $context ) {
return 'generated_size' === $context ? 75 : $quality;
}, 10, 3 );wp_elder_addon_avif_quality
apply_filters( 'wp_elder_addon_avif_quality', int $quality, array $upload, string $context )
То же для AVIF.
SEO
wp_elder_addon_auto_alt_text
apply_filters( 'wp_elder_addon_auto_alt_text', string $title, int $post_id )
Текст, который подставляется в пустые alt при включённом «Автоматически проставлять alt». По умолчанию — заголовок записи.
add_filter( 'wp_elder_addon_auto_alt_text', function ( $title, $post_id ) {
return $title . ' — ' . get_bloginfo( 'name' );
}, 10, 2 );wp_elder_addon_ai_crawler_user_agents
apply_filters( 'wp_elder_addon_ai_crawler_user_agents', array $bots )
Список User-agent, которым «AI / LLM боты» запрещают обход в robots.txt.
add_filter( 'wp_elder_addon_ai_crawler_user_agents', function ( $bots ) {
$bots[] = 'YandexAdditional'; // добавить
return array_diff( $bots, array( 'Amazonbot' ) ); // убрать
} );wp_elder_addon_verification_only_home
apply_filters( 'wp_elder_addon_verification_only_home', bool $only_home )
Коды подтверждения поисковиков выводятся только на главной (true). Верните false, чтобы выводить на всех страницах.
add_filter( 'wp_elder_addon_verification_only_home', '__return_false' );Контент
wp_elder_addon_duplicate_post_types
apply_filters( 'wp_elder_addon_duplicate_post_types', array $post_types )
Типы записей, у которых есть ссылка «Дублировать» и блок «Специальные возможности». По умолчанию post и page.
add_filter( 'wp_elder_addon_duplicate_post_types', function ( $types ) {
$types[] = 'portfolio'; // свой тип записей
$types[] = 'services';
return $types;
} );wp_elder_addon_info_panel_items
apply_filters( 'wp_elder_addon_info_panel_items', array $items, WP_Post $post )
Строки блока «Информация» в редакторе. Элемент — массив label, value, copyable (кнопка копирования).
add_filter( 'wp_elder_addon_info_panel_items', function ( $items, $post ) {
$items['slug'] = array(
'label' => 'Ярлык',
'value' => $post->post_name,
'copyable' => true,
);
return $items;
}, 10, 2 );wp_elder_addon_404_redirect_target
apply_filters( 'wp_elder_addon_404_redirect_target', string $url )
Куда ведёт «Перенаправлять 404 на главную». Пустая строка отменяет перенаправление.
// Вести на страницу поиска с остатком адреса
add_filter( 'wp_elder_addon_404_redirect_target', function () {
$path = trim( (string) wp_parse_url( $_SERVER['REQUEST_URI'], PHP_URL_PATH ), '/' );
return home_url( '/?s=' . rawurlencode( str_replace( array( '-', '/' ), ' ', $path ) ) );
} );wp_elder_addon_404_redirect_status
apply_filters( 'wp_elder_addon_404_redirect_status', int $status )
Код перенаправления 404, по умолчанию 301. Например, 302 — временное.
add_filter( 'wp_elder_addon_404_redirect_status', function () { return 302; } );wp_elder_addon_404_redirect_protected_prefixes
apply_filters( 'wp_elder_addon_404_redirect_protected_prefixes', array $prefixes )
Первые сегменты адреса, для которых 404 не перенаправляется. По умолчанию admin, wp-admin, wp-login.php.
add_filter( 'wp_elder_addon_404_redirect_protected_prefixes', function ( $prefixes ) {
$prefixes[] = 'api';
return $prefixes;
} );Сторонний фильтр
Для совместимости с кодом, написанным под плагин «WebP Converter», качество WebP при загрузке дополнительно проходит через webp_converter_on_upload_quality (int $quality, array $upload, string $context).