50 фильтров WordPress: фильтры с 41 по 50

В предыдущих частях данной серии статей мы изучили 40 WordPress фильтров. В этом уроке мы рассмотрим последние десять фильтров и приведем примеры их практического применения.

Приступим!

Настраиваем загрузчик скриптов

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

Пример: убираем настройка «Версия» из скрипта

Google Page Speed, Yahoo YSlow и иные сервисы для измерения быстродействия веб-сайтов обычно не отлично относятся к наличию URL – настроек в файлах JavaScript. В этом есть доля истины.

Скрипты с настройками в конце URL – строки не кэшируются прокси-серверами( дополнительная информация по данной теме).

К сожалению, в WordPress настройка «Version» для скриптов(и для стилей) по умолчанию активирован. Но, к счастью, при помощи кода, приведенного ниже, мы можем отключить настройка ver:

<?phpfunction script_loader_src_example( $src) { return remove_query_arg( 'ver', $src);}add_filter( 'script_loader_src', 'script_loader_src_example');// маленький бонус: использовать можно легко в том числе и для стилей add_filter( 'style_loader_src', 'script_loader_src_example');// Источник примера: http://www.wpmayor.com/15-practical-ways-boost-wordpress-speed/?>

Готово! Файлы Java – скриптов(и CSS – стилей) более не имеют такого параметры, как « Version ».

Хорошая статья на тему использования языка JavaScript в WordPress.

Добавляем HTML в мета – бокс к заглавным картинкам в публикации

Фильтр admin_post_thumbnail_html, как предполагает его название, может добавлять HTML – содержимое в мета – бокс заглавного картинки публикации. HTML – программный код будет отображен сразу же после ссылки «Установить изображение как картинку поста».

Пример: как облегчить посетителям процесс добавления картинок к публикации

Представьте, что вы делаете блог для покупателя. Вести блог он собирается самостоятельно и к сторонней помощи прибегать не намерен. Но он постоянно забывает добавлять картинки к публикации и вам необходимо прибавить напоминание на страницу добавления новой публикации. Ниже приведен пример кода, при помощи которого можно без труда это реализовать:

<?phpadd_filter( 'admin_post_thumbnail_html', 'admin_post_thumbnail_html_example');function admin_post_thumbnail_html_example( $html) { return $html.= '<p> Уважаемый посетитель! Нажмите выше, чтобы добавить изображение, которое будет выводиться в верхней части публикации. Помните: <strong> Ширина картинки должна быть не менее 900 пикселей </strong>!</p>';}?>

При помощи такого напоминания покупатель не забудет установить «верхнее изображение» с минимальной шириной 900 пикселей.

Защищаем блог от флуда в комментариях comment_flood_filter

По умолчанию, WordPress предотвращает действия «флудеров«, которые неоднократно оставляют комментарии к публикациям.

К примеру, если пользователь отправляет комментарий к записи, то после этого действия должно пройти 15 секунд(значение по умолчанию), прежде чем он сможет оставить ещё один комментарий. Этот фильтр может изменять параметра времени или отключить проверку вообще.

Пример: увеличиваем задержку между комментариями

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

<?phpadd_filter( 'comment_flood_filter', 'comment_flood_filter_example', 10, 3);function comment_flood_filter_example( $flood_control, $time_last, $time_new) { $seconds = 60; if(( $time_new - $time_last) < $seconds) return true;   return false;}// Исходный пример: http://codex.wordpress.org/FAQ_Working_with_WordPress#How_do_I_prevent_comment_flooding.3F?>

Значение «60» меняйте на необходимое в случае.

Бонусный пример: отключаем проверку на флуд в комментариях

Если вам не необходимо регулировать скорость комментирования публикаций, вы можете легко отключить проверку на флуд при помощи двух простых строчек кода:

<?phpremove_all_filters( 'comment_flood_filter');add_filter( 'comment_flood_filter', '__return_false', 10, 3);?>

Имейте в виду, что remove_all_filters() будет функцией. Как и предполагает ее название, она убирает все возможные проверки из фильтра.

Меняем элементы раздела «Краткая информация»

Раздел «Краткая информация»(ранее он назывался «Напрямую теперь») держит нас в курсе того, как много записей страниц и комментариев размещено в базе данных веб-сайта.

Фильтр dashboard_glance_items поможет отобразить дополнительную информацию, такую как число публикаций в определенной категории.

Пример: отображаем публикации рубрики «Events» в разделе «Краткая информация»

Представим, что вы ведете «событийный блог» где знакомите пользователей с интересными событиями, а категория публикаций имеет в себя пользовательский тип « Events »(и id равно event). Для того чтобы у вас была функция видеть общее число событий в блоге – используйте возможность из кода, приведенного ниже и прикрепляйте ее к фильтру dashboard_glance_items:

<?phpadd_filter( 'dashboard_glance_items', 'dashboard_glance_items_example');function dashboard_glance_items_example( $items = array() ) {    $post_types = array( 'event' );    foreach( $post_types as $type ) {        if( ! post_type_exists( $type ) ) continue;        $num_posts = wp_count_posts( $type );        if( $num_posts ) {            $published = intval( $num_posts->publish );            $post_type = get_post_type_object( $type );            $text = _n( '%s ' . $post_type->labels->singular_name, '%s ' . $post_type->labels->name, $published, 'your_textdomain' );            $text = sprintf( $text, number_format_i18n( $published ) );            if ( current_user_can( $post_type->cap->edit_posts ) ) {            $output = '<a href="edit.php?post_type=' . $post_type->name . '">' . $text . '</a>';                echo '<li class="post-count ' . $post_type->name . '-count">' . $output . '</li>';            } else {            $output = '<span>' . $text . '</span>';                echo '<li class="post-count ' . $post_type->name . '-count">' . $output . '</li>';            }        }    }    return $items;}// Источник примера: http://www.trickspanda.com/2014/03/add-custom-post-types-glance-dashboard-widget-wordpress/?>

Довольно просто, верно? Значение переменной $post_types меняйте в соответствии со требованиями.

Меняем приветствие на форме входа

Фильтр login_message может менять сообщение на форме входа, установленное по умолчанию. Это сообщение отображается над формой для ввода данных для авторизации. Это не сообщение об ошибках, оно несет в себе информационные данные.

Пример: меняем сообщение «Забыли пароль?»

Если вам когда-нибудь понадобится упростить инструкцию по восстановлению пароля («Пожалуйста, введите логин или адрес электронной почты, и Вы получите ссылку для создания нового пароля»), то ее можно настроить следующим образом:

<?phpadd_filter( 'login_message', 'login_message_example' );function login_message_example( $message ) {    $action = $_REQUEST['action'];    if( $action == 'lostpassword' ) {        $message = '<p class="message">Введите адрес  электронной почты, и мы отправим вам письмоcо ссылкой для сброса пароля</p>';        return $message;    }    return;}// Источник примера: http://www.pypelineweb.com/blog/change-wordpress-login-message-filter-it-out/?>

В файле wp-login.php мы видим следующие элементы:

  • logout ;
  • lostpassword и retreivepassword (алиас);
  • resetpass и rp (алиас);
  • register ;
  • login .

По аналогии с примером, приведенным выше, можете написать сообщение для любого action .

Редактируем текст сообщений о результатах действий

Есть сообщения, которые выводятся при обновлении, удалении в корзину, восстановлении или удалении записей. Если вам необходимо настроить данные сообщения – используйте фильтр bulk_post_updated_messages .

Пример: редактируем сообщения для публикаций пользовательского типа

Скажем, вам не нравится текст сообщений, которые посетитель видит после публикации «событий», и, вы планируете настроить их. Вот как это делается:

<?phpadd_filter( 'bulk_post_updated_messages', 'bulk_post_updated_messages_example', 10, 2 );function bulk_post_updated_messages_example( $bulk_messages, $bulk_counts ) {    $bulk_messages['event'] = array(        'updated'   => _n( '%s событие обновлено.', '%s события обновлены.', $bulk_counts['updated'] ),        'locked'    => _n( '%s событие не обновлено, его кто-то редактирует.', '%s события не обновлены, их кто-то редактирует.', $bulk_counts['locked'] ),        'deleted'   => _n( '%s событие навсегда удалено.', '%s события навсегда удалены.', $bulk_counts['deleted'] ),        'trashed'   => _n( '%s событие перенесено в Корзину.', '%s события перенесены в Корзину.', $bulk_counts['trashed'] ),        'untrashed' => _n( '%s событие восстановлено из Корзины.', '%s события восстановлены из Корзины. ', $bulk_counts['untrashed'] ),    );    return $bulk_messages;}// Источник примера: http://codex.wordpress.org/Plugin_API/Filter_Reference/bulk_post_updated_messages?>

Просто? Довольно без труда! Помните, что можно перевести строки сообщений , если вы используете пару языков.

Настраиваем виджет категорий по умолчанию

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

Пример: исключаем некоторые категории из виджета

Если требуется «скрыть» некоторые категории из виджета «Категории», примените код, приведенный ниже:

<?phpadd_filter( 'widget_categories_args', 'widget_categories_args_example' );function widget_categories_args_example( $cat_args ) {    $exclude_arr = array( 4, 10 );    if( isset( $cat_args['exclude'] ) && !empty( $cat_args['exclude'] ) )        $exclude_arr = array_unique( array_merge( explode( ',', $cat_args['exclude'] ), $exclude_arr ) );    $cat_args['exclude'] = implode( ',', $exclude_arr );    return $cat_args;}// Источник примера: http://codex.wordpress.org/Plugin_API/Filter_Reference/widget_categories_args?>

Значения массива $exclude_arr содержат в себе ID «ненужных» категорий. Меняйте их соответственно необходимости.

Перенаправление посетителя после успешной регистрации

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

Пример: позволим новым посетителям скачать удивительную электронную книгу

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

<?phpadd_filter( 'registration_redirect', 'registration_redirect_example' );function registration_redirect_example() {    return home_url('/your-free-ebook/');}// Источник примера: http://wpsnipp.com/index.php/functions-php/redirect-a-successful-registration-page/?>

Напомню, что редирект, настроенный при помощи возможности wp_safe_redirect() сможет перенаправить посетителя только на внутренние страницы веб-сайта, пока вы при помощи фильтра allowed_redirect_hosts не определите «безопасные» хосты. Мы рассмотрели этот фильтр в первой статье. Прочитайте ее, если ещё не сделали этого.

Изменяем поля ввода формы для ввода комментария

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

Если вы разрабатываете плагин, то не сможете менять ее настройки. Фильтр, пример использования которого приведен ниже, может редактировать или вовсе удалить HTML – программный код полей ввода формы комментариев.

Пример: убираем поле ввода URL из формы комментирования

Допустим, вы, как внештатный веб-дизайнер, делаете «плагин параметров по умолчанию«, чтобы использовать его на веб-сайтах покупателей и хотели бы, чтобы полей ввода с вводом URL не было в формах комментариев. Для этого используйте возможность из примера, приведенного ниже, и подключайте ее к фильтру:

<?phpadd_filter( 'comment_form_default_fields', 'comment_form_default_fields_example' );function comment_form_default_fields_example( $fields ) {    unset( $fields['url'] );    return $fields;}// Источник примера: http://wpsnipp.com/index.php/comment/remove-unset-url-field-from-comment-form/?>

Добавляйте этот программный код в файл плагина и цель достигнута!

Вносим изменения в список допустимых типов файлов

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

Пример: запрещаем загружать GIF — файлы

Да, да, GIF . Этот формат стал популярен в 1999 году и остается популярным по сей день. Знаете ли вы, что одним из первых мемов был GIF с танцующим ребенком ?

Старые добрые временя, когда мы делали «домашние страницы» в Yahoo ! Geocities и наслаждались раздражающим звуком обезьяны из ICQ каждый раз когда друг приглашал нас на встречу IMed .

Отлично, но, так или иначе, если вам понадобится запретить закачку GIF – файлов в медиа — библиотеку веб-сайта, делайте это при помощи кода, приведенного ниже:

<?phpadd_filter( 'upload_mimes', 'upload_mimes_example' );function upload_mimes_example( $existing_mimes = array() ) {    unset( $existing_mimes['gif'] );    return $existing_mimes;}// Источник примера: http://codex.wordpress.org/Plugin_API/Filter_Reference/upload_mimes?>

Пока-пока, четырех секундный видеоклип, который не следует смотреть более чем один раз, но он не устает повторяться бесконечно!

Конец пятой части

Мы подошли к концу последнего десятка фильтров. Надеюсь, вам понравилось, и вы узнали что-то новое. В следующей, заключительной статье, мы вкратце просмотрим все то, что изучили. Увидимся!

Мне интересны мысли по поводу того, что нового вы узнали. Оставляйте комментарии, если вам действительно понравилась статья и, не стесняйтесь поделиться ею!

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *