У попередній статті цієї серії ми розглянули перші десять фільтрів WordPress, супроводжуючи їх прикладами. У цьому уроці ми продовжимо огляд 50 обраних нами для вивчення фільтрів, супроводжуючи їх поясненнями і прикладами роботи кожного фільтра.

Продовжимо!

Експеримент з переведенням даних WordPress

Одна з найпривабливіших особливостей WordPress — кожен біт тексту готовий для перекладу. Якщо мова вашого сайту англійський, по всій видимості, вам не потрібна ця функція — чи все — таки потрібно?

Фільтр gettext може виявитися корисним в декількох випадках. Давайте розглянемо цікавий приклад.

Приклад: виправимо граматичні помилки попереднього розробника!

Припустимо, ви знайшли хороший плагін для роботи, але розумієте, що його розробник говорить по-англійськи не дуже добре і помічаєте текст з помилками в межах коду. На щастя, ці рядки переказуються і їх можна змінити за допомогою gettext.

Дивимося як саме:

Підчищаємо текст

WordPress використовує функцію з ім’ям sanitize_title() щоб підчищати заголовки, вона замінює прогалини дефісом і робить їх готовими для використання в якості назви посади. З допомогою фільтра sanitize_title (так, ім’я таке ж) ви можете розширити функцію.

Приклад: прибираємо артикль «The» з позначок

Хочете позбутися від артикля «The» мітках? Дивіться нижче код:

Просте і елегантне рішення.

Встановлюємо виключення форматування для шорткодов

Цей корисний фільтр дозволяє вказати, які шорткоди не будуть схильні форматування функцією wptexturize()». Витяг з Кодексу WordPress.

Приклад: виключаємо ваш шорткод зі списку для форматування

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

Легко? Простіше простого!

Вбудований фільтр перевірки коментарів

WordPress має свою власну систему перевірки коментарів (наприклад, для захисту від спаму). Перш, ніж коментар буде допущений до публікації, він повинен пройти модерацію, і, якщо це не спам, бути затвердженим.

Фільтр pre_comment_approve може дещо полегшити попередню модерацію.

Приклад: помічаємо коментарі з довгими іменами авторів як спам

Спамери зазвичай використовують дуже довгі імена, іноді в ім’я включають посилання на сам ресурс.

З допомогою фрагмента коду, наведеного нижче, ви зможете добитися автоматичного виключення спамерів, які використовують такі імена, як «доставка всередині країни та за кордон за дуже низькими цінами (Натисніть для отримання додаткової інформації)»:

75 ) ? ‘spam’ : $approved;
}
// Джерело прикладу: https://gist.github.com/norcross/5468979
?>

Підказка бонусом: Якщо ви хочете позбутися від спаму, перевіряючи довжину URL – адреси автора коментаря, використовуйте ‘comment_author_url’ замість ‘comment_author’.

Налаштовуємо можливість «Публікація за допомогою email»

Чи знаєте ви, що ви можете публікувати записи у блозі WordPress за допомогою електронної пошти? Функція використовується досить рідко і фільтр enable_post_by_email_configuration дозволяє включити або вимкнути її.

Приклад: включаємо і вимикаємо можливість «Публікація через Email»

З якоїсь причини (безпека сайту, як приклад) ви можете відключити цю функцію. І можете зробити це за допомогою всього одного рядка коду:

Або ж якщо у вас WordPress працює в режимі Multisite і вам потрібно включити цю можливість (тому як в режимі Multisite за замовчуванням вона відключена), ви можете використовувати функцію __return_true():

Фільтр заголовків сторінок

Функція wp_title() виводить заголовки сторінок, ті, які ми бачимо у вкладках браузера. І вона ж дозволяє нам попрацювати з цими назвами.

Приклад: переписуємо заголовки сторінок вірним методом

Так як wp_title є фільтром, то у нас є можливість зробити користувальницький хук, який буде визначати схему відображення заголовків не тільки абсолютно точно, але головне коректно:

= 2 || $page >= 2 )
$title = sprintf( __( ‘Page %s’, ‘tuts_filter_example’ ), max( $paged, $page ) ) . «$sep $title»;
return $title;
}
// Джерело прикладу: http://tommcfarlin.com/filter-wp-title/
?>

Обробка коментарів перед збереженням у базі даних

Якщо вам потрібно змінити які-небудь дані коментаря (ID публікації, ім’я автора, адреса електронної пошти, веб-сайт автора, тип коментарів, ідентифікатор користувача, якщо коментатор є користувачем, тип коментаря або ж зміст коментаря) – використовуйте фільтр preprocess_comment.

Приклад: наводимо в порядок коментарі

У ВАС В БЛОЗІ БАГАТО КОМЕНТАРІВ ЗАЛИШЕНО ВЕЛИКИМИ ЛІТЕРАМИ? Якщо так і є, ви можете швидко зробити їх малими:

Чудово, правда?

Налаштовуємо переадресацію після входу

Цей маленький фільтр дозволяє нам встановити і налаштувати переадресацію (за винятком сторінки входу в панель адміністрування) після процесу входу, котра може бути дуже корисна в деяких випадках.

Приклад: перенаправлення користувачів на домашню сторінку

Якщо ви не хочете, щоб авторизовавшиеся користувачі (в нашому випадку з роллю «Subscriber») бачили панель адміністрування після входу, ви можете перекинути їх на головну сторінку сайту:

roles ) && is_array( $user->roles ) ) {
if ( in_array( ‘subscriber’, $user->roles ) ) {
return home_url();
} else {
return $redirect_to;
}
}
return;
}
?>

У Кодексі WordPress є попередження про одну річ: «Переконайтеся, що ви використовуєте add_filter, а не is_admin(), оскільки ця функція не доступна, коли використовується фільтр«.

Створення посилань у налаштуваннях плагінів

Якщо ви розробляєте плагін ви, має бути, зацікавилися, як іншим розробникам вдалося додати посилання під назвами своїх плагінів на сторінці «Плагіни» Вони просто використовували цей фільтр.

Приклад: додаємо посилання «Налаштування» для відображення на сторінці «Плагіни»

Щоб додати користувача посилання під назвою плагіна в списку на сторінці «Плагіни» використовуйте функцію, підключену до фільтру:

Зауважте, що ми використовуємо константу __FILE__ для прив’язки функції до фільтру. Кльово?

Використовуйте це рішення обережно: безліч посилань в налаштуваннях плагіна не збільшать його функціональності.

Фільтрація контенту всередині редактора повідомлень

Вам коли-небудь приходила ідея предзаполненных постів в редакторі? Щоб починати публікацію готового шаблону? Або залишати замітки вашим авторам? Це можна зробити за допомогою фільтра the_editor_content.

Приклад: залишаємо «нагадувалки» авторам

Давайте спробуємо зробити «нотатки авторам«: якщо у вас є багато нагадувань авторам вашого блогу, ви можете заповнити початкове поле запису в HTML — редакторі використовуючи код, наведений нижче:

  • Проставити потрібні теги,
  • Час публікації установи на 8:00 завтрашнього ранку
  • Мітки зроби придатними для СЕО-
  • І не забудь видалити цей текст.
  • ‘. «nn»;
    $template .= ‘Поки!’;
    return $template;
    } else
    return $content;
    }
    // Джерело прикладу: http://wpfilte.rs/the_editor_content/
    ?>

    Змінну $template міняйте під свої потреби і застосовуйте на своєму ресурсі!

    Кінець другої частини

    Стаття підійшла до кінця, і, я думаю, ви знайшли щось корисне для себе, а приклади були цікаві. Побачимося на наступному уроці!

    Мені цікаві ваші відгуки! Не соромтеся залишати коментарі нижче і, якщо вам сподобалася стаття, не забудьте їй поділитися!

    Переклад статті «50 Filters of WordPress: Filters 11-20» був підготовлений дружною командою проекту Сайтостроение від А до Я.