Версия WordPress 5.3 подъехала к нам с новым фильтр хуком для функционала Здоровье сайта – site_status_test_result
. Этот фильтр позволяет полностью изменить результат конкретного теста – текст, лейбл, цвет лейбла, приоритетность… короче давайте я покажу вам всё на примере!
Предположим, что на моём сайте тест выдаёт такое рекомендуемое улучшение:
А что, если мы допилим туда ещё одно условие? Если вдруг количество установленных плагинов больше 50, то добавим туда сообщение, окей?
Что-то подобное мы сделали тут, когда писали свой собственный тест, однако в этот раз мы докинем эту инфу в уже существующее сообщение.
add_filter( 'site_status_test_result', function( $site_health_check ) { // $site_health_check - массив параметров теста, который мы можем полностью поменять // первым делом мы проверям, для какого теста сейчас срабатывает хук! if ( 'plugin_version' !== $site_health_check['test'] ) { return $site_health_check; } // количество установленных активных плагинов $number_of_plugins = count( get_option('active_plugins') ); if( 50 < $number_of_plugins ) { if ( 'good' === $site_health_check['status'] ) { $site_health_check['label'] = 'У вас слишком много плагинов на сайте'; $site_health_check['badge']['label'] = 'Производительность'; $site_health_check['badge']['label'] = 'orange'; } else { $site_health_check['label'] .= ', а ещё многовато активных плагинов'; } // впишем что-то в описание, именно допишем $site_health_check['description'] .= '<p>На вашем сайте более 50 активных плагинов, пожалуйста старайтесь не увлекаться с их количеством, это может повлиять на производительность сайта.</p>'; // если вообще с этим тестом всё ок, то экшены у нас будут пусты if ( 'good' === $site_health_check['status'] ) { $site_health_check['actions'] = '<a href="' . admin_url('plugins.php') . '">Управление плагинами</a>'; } // ну и меняем статус теста на не гуд $site_health_check['status'] = 'recommended'; // или critical, если очень важно } return $site_health_check; });
Какой-то не самый красивый пример получился 😁, давайте разберём, как оно работает.
- Строка
5
– напоминаю, что список всех тестов (их идентификаторов) вы можете найти на этой странице. - Строка
10
– Установленные плагины в виде массива мы легко получаем из базы данных при помощи функции get_option(), а при помощи стандартной PHP функцииcount()
определяем количество элементов в этом массиве. - Строка
12
– Проверяем количество установленных плагинов, если их больше 50, то выполняем код ниже. - Строка
14
– Проверка статуса выполненного теста. Если всё хорошо, наши плагины не нуждаются в обновлениях и нет неактивных, мы можем полностью перезаписать заголовок результата теста, изменить бейдж на «Производительность» например, иначе мы просто дописываем уже к существующему заголовку кусочек текста про много плагинов. - Подобное условие есть на строке
26
– ведь по сути нам надо добавлять ссылку на страницу с плагинами только когда тест говорит, что всё ок, и ссылок уже не было добавлено.
Короче много текста, вот результат:
Смотрите также
Источник: misha.blog