Если вы новичок в экосистеме WordPress, вам может быть немного сложно понять, насколько гибким может быть WordPress. Конечно, есть буквально десятки тысяч тем и плагинов, которые вы можете использовать, и вы можете подумать, что WordPress является чрезвычайно расширяемым, но если вы не знаете о «действиях» и «фильтрах», которые предоставляет WordPress, вы Вы будете удивлены, насколько больше вы можете сделать с этой удивительной системой управления контентом.
В этом уроке я расскажу вам, как использовать фильтры WordPress для изменения страниц для перенаправления на различные действия.
Давайте начнем!
Использование гибкости WordPress с действиями и фильтрами
С смелой проповедью, которую я дал во введении, вы можете подумать, что я немного преувеличивал Уверяю вас, я не сделал. Крюки, без тени сомнения, являются реальной причиной гибкости WordPress. Без системы хуков темы были бы более жесткими и, что более важно, большинство плагинов WordPress даже не существовало бы . Это заставит разработчиков разрабатывать меньше плагинов и тем, и мир WordPress станет намного меньше, что сделает его еще одной унылой системой управления контентом.
Крючки предназначены для того, что они назвали в честь: перехватывать вещи. Есть два типа зацепок, зацепок за действие и зацепок для фильтра. Перехватчики действий запускают функции до или после определенных действий, а перехватчики фильтров обрабатывают данные перед их выводом. (В этом руководстве мы сосредоточимся на хуках фильтров.) Поэтому большинство плагинов полагаются на хуки для управления WordPress, а темы создают свои собственные хуки для других плагинов, чтобы позволить другим расширять темы.
Я не смог найти надежного источника, когда хуки были введены в WordPress, но в сообщении о версии 1.2 на WordPress.org интегрирована новая архитектура плагинов, в которой говорится, что «плагины теперь могут подключаться практически ко всем действиям WordPress». , Если это самое начало введения хуков WordPress, это означает, что хуки родились весной 2004 года, через год после выпуска первой версии WordPress.
Если вы хотите узнать больше о действиях и фильтрах в WordPress, у меня есть одна серия для каждого типа хуков: « 50 фильтров WordPress » и « 50 действий WordPress ». Если вы заинтересованы, не забудьте проверить их!
Управление перенаправлением WordPress для разных сценариев
Как и обещал, я собираюсь сейчас перейти к фильтрам WordPress. В этом руководстве мы изучим семь фильтров WordPress: один для регистрации, два для входа и выхода, один для сброса пароля, один для комментариев и два для недавно обновленной функции «Нажмите это».
Примечание. Вы можете использовать фрагменты кода в этом руководстве в файле functions.php
вашей темы, чтобы быстро их использовать, но редактирование файлов темы в целях функциональности считается плохой практикой. ( Ознакомьтесь с моим руководством по «территории плагинов». ) Вместо этого вы должны создать для этого плагин для конкретного сайта. ( Посмотрите видеоурок Рэйчел о создании плагина. )
Перенаправление пользователя после успешной регистрации
Обычно новые пользователи перенаправляются в форму входа с таким уведомлением: «Регистрация завершена. Проверьте свою электронную почту». С помощью фильтра registration_redirect
мы изменим это.
Допустим, у вас есть специальный технический документ о вашей области знаний, и вы предлагаете его новым пользователям на своем веб-сайте. Используя приведенный ниже фрагмент кода, вы можете отправить новых пользователей на страницу со ссылкой для загрузки на свой технический документ:
01
02
03
04
05
06
07
08
09
10
|
<?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/’ );
}
?>
|
Отредактируйте слаг «white-paper» с помощью слага вашей собственной страницы, и все готово!
Перенаправление пользователя при входе и выходе
После каждого входа пользователи отправляются на панель инструментов. Если вашим пользователям по какой-либо причине не нужно (или не нужно) видеть панель инструментов, вы можете сохранить их в интерфейсе, используя фильтр login_redirect
.
В следующем примере мы собираемся проверить роль пользователя и перенаправить «подписчиков» на домашнюю страницу:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
|
<?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
фильтра logout_redirect
. Вместо того, чтобы отправлять их на домашнюю страницу, вы можете перенаправить их на «до свидания» страницу, где они могут подтвердить, что они вышли из системы:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
|
<?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, но если вам нужно поделиться дополнительной информацией о процессе сброса паролей (например, «Проверить папку со спамом» или «Позвоните по этому номеру, если у вас нет»). У меня нет электронной почты «), вы можете перенаправить пользователей на определенную страницу:
01
02
03
04
05
06
07
08
09
10
|
<?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
позволяет вам изменить страницу, на которую переходят ваши комментаторы после отправки комментария.
Это может быть лучшим советом в этом уроке, потому что это может увеличить количество подписчиков вашей рассылки. Например, вы можете отправить их на страницу «Спасибо за комментарии и не забудьте подписаться на нашу рассылку», используя следующие строки кода:
01
02
03
04
05
06
07
08
09
10
|
<?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_redirect_in_parent
и press_this_save_redirect
. Использование следующего кода заставит инструмент «Нажать на это» закрыть всплывающее окно (первый фильтр) и вернуться на домашнюю страницу вашего собственного сайта (второй фильтр):
01
02
03
04
05
06
07
08
09
10
11
|
<?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 );
?>
|
Micro tip: Вы заметили, что я использовал анонимную функцию ? Правильно: вы можете передать анонимную функцию PHP, если ваш сервер работает под управлением PHP v5.3.0 или новее.
Заворачивая все
Система «хуков» является одной из самых мощных функций WordPress, и она помогла сообществу создать гигантскую массу великолепных плагинов и тем, которые мы используем сегодня. Без «ловушек действий» и «ловушек фильтров», вероятно, было бы невозможно достичь такого уровня расширяемости. И я думаю, можно с уверенностью сказать, что без этих хуков WordPress не будет использоваться в каждом четвертом веб-сайте . Кто бы ни придумал идею этих «крючков», спасибо!
Что вы думаете о фильтрах, которые мы прошли в этом уроке? Можете ли вы придумать лучшие варианты использования для них? Или вы думаете, я пропустил крючок, который можно было бы упомянуть в этом посте? Поделитесь своими мыслями, опытом и идеями с нами в разделе комментариев ниже. И если вам понравилось читать эту статью, не забудьте поделиться ею с друзьями и коллегами!
По всем вопросам, не связанным с этой статьей, вы можете связаться со мной по адресу @BarisUnver_EN (английский) и @BarisUnver (турецкий) в Twitter.
Спасибо за прочтение!