Новачкам у світі WordPress буває важко повною мірою зрозуміти, наскільки різним і податливим може бути WordPress. Звичайно, вам доступні буквально десятки тисяч тем і плагінів і, напевно, здається, що WordPress майже безмежний, але якщо ви нічого не знаєте про action- і filter-хуки, то будете здивовані наскільки більше ви можете зробити за допомогою цієї дивовижної системи керування контентом .
Дивіться також:
- Посібник з URL перенаправлень для WordPress сайтів
- Перенаправлення на цю сторінку в залежності від ролі користувача WordPress
- Як перенаправляти користувачів на випадковий запис у WordPress
- Як оновити URL-адреси при перенесенні WordPress-сайту
- Як зберегти ваші WordPress-посилання при зміні структури Permalink-ів
У цьому посібнику ми розповімо про використання фільтрів WordPress, щоб змінити сторінку переадресації після різних дій.
Приступимо!
Як налаштувати WordPress за допомогою хуків Actions та Filters
Прочитавши вступ, ви, напевно, думаєте, що ми перебільшуємо. Можемо вас запевнити, що ні. Без тіні сумнівів, хуки є основною причиною такої гнучкості WordPress. Без системи хуків, не тільки теми були б «жорсткішими», але і, що важливіше, багатьох плагінів WordPress просто не існувало б. Розробники вигадували б менше плагінів і тим, а світ WordPress був би черговою нудною системою керування контентом.
Сенс назви хуків (з англійської — гаки, зачіпки) дуже правильний. Вони хіба що чіпляються за певні функції WordPress. Хуки дії (Actions) виконують функції до або після певної дії, а хуки фільтрів (Filters) обробляють дані перед виведенням. (У цій статті ми сфокусуємось на фільтрах.) Ось чому більшість плагінів в управлінні WordPress покладаються на хуки, а в темах створюються власні хуки для інших плагінів, щоб дозволити їм розширювати теми.
Нам не вдалося знайти достовірну інформацію про першу появу хуків у WordPress, але в анонсі версії 1.2 на WordPress.org було оголошено про створення нової архітектури плагінів і сказано, що "тепер плагіни можна прив'язувати майже до кожної дії на WordPress". І якщо це була перша згадка хуків WordPress, то можна вважати, що вони народилися навесні 2004, на рік пізніше появи на світ першої версії WordPress.
Якщо ви хочете дізнатися більше про дії та фільтри WordPress, у нас є статті на цю тему: 50 Filters of WordPress и 50 Actions of WordPress.
Управління переадресацією WordPress для різних ситуацій
Як і обіцяли, зараз ми розповімо про фільтри. Сьогодні ми розглянемо 7 із них: 2 для входу та виходу із системи, 1 для скидання пароля, 1 для коментарів та 2 для нещодавно оновленої властивості «Press This».
Примітка: Ви можете використовувати фрагменти коду цієї статті у файлі functions.php вашої теми швидше навчитися використовувати хуки, але не найкращою ідеєю буде редагувати файли теми для поліпшення функціональних можливостей. Натомість, краще створити плагін спеціально під вашу тему.
Перенаправлення користувачів після успішної реєстрації
Зазвичай нових користувачів переадресовують до сторінки з таким повідомленням: «Реєстрація завершена. Будь ласка, перевірте вашу електронну пошту. Ми можемо це змінити за допомогою фільтра registration_redirect.
Допустимо, ви хочете представити технічні характеристики вашого продукту новим користувачам. Використовуючи наведений нижче фрагмент коду, ви можете надіслати користувача на сторінку з посиланням для їх скачування:
<?php add_filter( 'registration_redirect', 'redir_new_users' ); function redir_new_users() { // change the slug below with your own page's slug return home_url( '/white-paper/' ); } ?>
Відредагуйте «білий папір» на префікс своєї сторінки та готово!
Перенаправлення користувачів після входу та виходу з системи
Після кожного входу користувачів переадресовує до Консолі. Якщо з якоїсь причини вашим користувачам не потрібно її бачити, ви можете залишити їх на фронтенді сайту за допомогою фільтра login_redirect.
У наступному прикладі ми перевіримо роль користувача та перенаправимо тільки Передплатників до початкової сторінки:
<?php add_filter( 'login_redirect', 'send_subscribers_home', 10, 3 ); function send_subscribers_home( $location, $request, $user ) { global $user; if ( isset( $user->roles ) && is_array( $user->roles ) ) { if ( in_array( 'subscriber', $user->roles ) ) { return home_url(); } else { return $redirect_to; } } return; } ?>
Таку саму функцію має і фільтр logout_redirect. Тільки замість надсилання користувачів до початкової сторінки, ви можете відправити їх до «прощальної» сторінки, де вони зможуть підтвердити вихід:
<?php add_filter( 'logout_redirect', 'goodbye_subscribers', 10, 3 ); function goodbye_subscribers( $location, $request, $user ) { global $user; if ( isset( $user->roles ) && is_array( $user->roles ) ) { if ( in_array( 'subscriber', $user->roles ) ) { // change the slug below with your own page's slug return home_url( '/goodbye/' ); } else { return $redirect_to; } } return; } ?>
Перенаправлення користувачів після скидання пароля
За замовчуванням користувачі, які ввели свої логіни або імейли в полі «Зміна пароля», переадресовуються назад до електронного бланку реєстрації з повідомленням про перевірку електронної пошти для зміни пароля. А фільтр lostpassword_redirect допоможе нам змінити цю сторінку.
Для більшості веб-сайтів WordPress повідомлення «Перевірте вашу поштову скриньку і перейдіть за посиланням, вказаним у листі» цілком достатньо, але якщо вам потрібно додати інформацію про зміну пароля (наприклад: «Перевірте папку спам» або «Зателефонуйте за цим номером, якщо ви не отримали листа»), ви можете надіслати користувача на спеціальну сторінку:
<?php add_filter( 'lostpassword_redirect', 'lostpassword_message' ); function lostpassword_message( $location ) { // change the slug below with your own page's slug return '/lost-password-notice/'; } ?>
Перенаправлення користувачів після залишення коментарів
За допомогою фільтра comment_post_redirect Ви можете змінити сторінку, на яку користувач потрапляє після того, як залишить коментар.
Це, напевно, найкраща порада у цьому списку, оскільки допомагає збільшити кількість передплатників на розсилки новин. Наприклад, ви можете надіслати їх на сторінку «Дякую за коментар, і не забудьте підписатися на наші новини», використовуючи наступні рядки коду:
<?php add_filter( 'comment_post_redirect', 'redirect_to_newsletter' ); function redirect_to_newsletter( $location ) { // change the slug below with your own page's slug return '/subscribe-to-our-newsletter/'; } ?>
Перенаправлення користувачів після використання "Press This"
«Press This» — це простий інструмент швидкої публікації або збереження записів, але він має деякі обмеження. Наприклад, після використання «Press This» вас повертає до сторінки, якою ви ділитеся, у спливаючому вікні, коли та сторінка вже відкрита у браузері. Дивно ми знаємо.
На щастя, ми можемо змінити це за допомогою фільтрів press_this_redirect_in_parent и press_this_save_redirect. Використання наступного коду змусить інструмент «Press This» закрити спливаючі вікна (перший фільтр) та поверне вас на початкову сторінку вашого сайту (другий фільтр):
<?php // use the built-in __return_true() WordPress function to simply return a "true" boolean statement add_filter( 'press_this_redirect_in_parent', '__return_true' ); // return the home URL to redirect the author to the homepage add_filter( 'press_this_save_redirect', function( $url, $id, $status ) { return home_url(); }, 10, 3 ); ?>
Маленька підказка: Ви помітили, що ми використовуємо анонімну функцію? Ви можете створити анонімну функцію PHPякщо ваш сервер працює з PHP від версії 5.3.0.
Підсумки
Система хуків є одним із найбільш функціональних властивостей WordPress, і допомагає створювати величезну кількість відмінних плагінів та тем. Не побоїмося сказати, що без хуків дій та фільтрів WordPress навряд чи використовувався б для створення кожного четвертого веб-сайту. І хочемо подякувати тому, кому на думку спала ця ідея.
А що ви думаєте про фільтри, описані вище? Може ви знаєте їм найкраще застосування? Чи ми пропустили якийсь класний хук? Поділіться своїми думками, досвідом та ідеями в коментарях. І якщо вам сподобалася ця стаття, поділіться нею з друзями та колегами!
Коментарі до запису: 1
А про «Спасибі за коментар» російською мовою і більш зрозуміло для новачка де можна почитати? Дякую!