Если вы следили за нами в этой серии, то вы знаете, что мы находимся в поиске 50 наших действий WordPress. Для тех, кто только что присоединился к нам, я призываю вас ознакомиться с предыдущей статьей (так как она начинается там, где она остановилась), а также со статьями, на которые есть ссылки из каждой предыдущей статьи.
Это поможет вам быстрее понять, куда мы направляемся.
Давайте начнем!
Внедрение в <head>
страниц администрирования плагина
У плагинов тоже есть свои потребности: им могут понадобиться внутристраничные сценарии или стили для их собственных страниц параметров. С помощью действия admin_head-(plugin_page)
вещи в <head>
для определенных страниц плагина.
Добавление стилей на страницу администрирования вашего плагина
Если вам когда-нибудь понадобится добавить некоторые стили CSS на страницу настроек вашего плагина, приведенный ниже код поможет вам в этом:
01
02
03
04
05
06
07
08
09
10
11
12
13
|
<?php
add_action( ‘admin_head-tools_page_myplugin/myplugin’, ‘admin_head_plugin_page_example’ );
function admin_head_plugin_page_example() {
echo ‘<style type=»text/css»>’
.
.
}
// Example Source: https://codex.wordpress.org/Plugin_API/Action_Reference/admin_head-(plugin_page)
?>
|
Замените закомментированную строку своим CSS-кодом, замените вторую часть имени действия ( tools_page_myplugin/myplugin
) своим собственным плагином, и все tools_page_myplugin/myplugin
!
Обработка пингов до их обработки
«Ping» — одна из самых старых функций WordPress, и действие pre_ping
позволяет нам обрабатывать ping до их обработки.
Отключить пинг
WordPress не отличает внутренние ссылки от внешних ссылок, когда дело доходит до пингов. Чтобы отключить самозахваты, вы можете использовать этот удобный небольшой фрагмент кода:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
|
<?php
add_action( ‘pre_ping’, ‘pre_ping_example’ );
function pre_ping_example( &$links ) {
foreach ( $links as $l => $link ) {
if ( 0 === strpos( $link, get_home_url() ) ) {
unset( $links[ $l ] );
}
}
}
// Example Source: http://wpdevsnippets.com/remove-slef-pings/
?>
|
С этого момента ваша установка WordPress не будет пинговать свои собственные сообщения.
Работа с get_header()
Действие get_header
вызывается, когда шаблон вызывает get_header()
, что делает его идеальным для функций, которые изменяют заголовок get_header()
WordPress.
Активировать простой режим обслуживания
Если вы спешите и у вас нет времени установить плагин «режима обслуживания» и установить его параметры, вы можете просто использовать приведенный ниже код и выдать wp_die()
всем, кроме администраторов:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
|
<?php
add_action( ‘get_header’, ‘get_header_example’ );
function get_header_example() {
if ( ! current_user_can( ‘activate_plugins’ ) ) {
wp_die( ‘The website will be back soon.’ );
}
}
// Example Source: http://wp-snippets.com/articles/7-code-snippets-you-should-use-on-every-site/
?>
|
Поскольку только администраторы (и супер-администраторы) имеют возможность 'activate_plugins'
, сайт будет закрыт для всех, кроме администраторов.
Подделка <head>
страницы входа
Действие login_head
помогает нам контролировать <head>
на странице входа.
Удаление эффекта встряхивания для неверных учетных данных
Если вам не нравится этот эффект «встряхивания», когда пользователь отправляет неверную информацию для входа в систему, вы можете использовать функцию ниже, чтобы удалить ее:
01
02
03
04
05
06
07
08
09
10
|
<?php
add_action( ‘login_head’, ‘login_head_example’ );
function login_head_example() {
remove_action( ‘login_head’, ‘wp_shake_js’, 12 );
}
// Example Source: http://wordpress.org/support/topic/plugin-simplemodal-login-remove-shake-effect
?>
|
Мне нравится эффект, хотя.
Работа с нижним колонтитулом приборной панели
Иногда нам может понадобиться контролировать нижний колонтитул наших административных панелей — не сам нижний колонтитул, а часть перед </body>
. Действие admin_footer
делает именно это.
Добавление быстрых стилей для статусов сообщений
Наличие согласованного набора цветов является одной из причин, по которой панель администратора WordPress становится красивой, но я не думаю, что есть какая-то опасность в некоторой цветовой кодировке для вещей, которые необходимо разделить визуально — например, различные статусы постов.
Если вы похожи на меня и хотите отличать опубликованные сообщения от черновиков или других статусов сообщений, используйте код ниже:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
|
<?php
add_action( ‘admin_footer’, ‘admin_footer_example’ );
function admin_footer_example() {
echo ‘<style type=»text/css»>
.status-draft { background-color: #FCE3F2;
.status-pending { background-color: #87C5D6;
.status-future { background-color: #C6EBF5;
.status-private { background-color: #F2D46F;
</style>’;
}
// Example Source: http://wpsnipp.com/index.php/functions-php/change-admin-postpage-color-by-status-draft-pending-published-future-private/
?>
|
Сценарии и стили на странице входа
Мы можем ставить вещи во wp_enqueue_scripts
интерфейс с помощью wp_enqueue_scripts
, а мы можем ставить вещи в конец с помощью admin_enqueue_scripts
. А как насчет страницы входа? Вы уже догадались: на этот раз login_enqueue_scripts
— наш хук!
Изменение логотипа над формой входа
Мне нравится логотип WordPress, но я не думаю, что он должен отображаться каждый раз, когда мои пользователи заходят на мои сайты. Если вы думаете так же, вы можете заменить логотип WordPress своим собственным, используя следующий фрагмент кода:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
|
<?php
add_action( ‘login_enqueue_scripts’, ‘login_enqueue_scripts_example’ );
function login_enqueue_scripts_example() {
echo ‘<style type=»text/css»>’
.
.
.
.
.
}
// Example Source: http://wpsnippy.com/add-custom-login-logo-in-your-wordpress-blog/
?>
|
Поместите файл login-logo.png
в папку /images/
вашей темы, и все готово!
Добавление пользовательских столбцов в список пользователей
Вам известен список пользователей на странице «Все пользователи» в админ-панели? Действие manage_users_custom_column
позволяет нам добавлять новые пользовательские столбцы в этот список с помощью сопровождающего фильтра.
Отображение дат регистрации пользователей в столбце
Предположим, вам нужно увидеть даты регистрации ваших участников оптом. Вы можете проверять записи базы данных каждый раз, когда вам нужна эта информация, или вы можете использовать этот фрагмент кода, чтобы добавить дополнительный столбец в список пользователей:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
<?php
add_action( ‘manage_users_custom_column’, ‘manage_users_custom_column_example’, 10, 3 );
add_filter( ‘manage_users_columns’, ‘manage_users_columns_example’ );
// create a new column named «Zip Code»
function manage_users_columns_example( $columns ) {
$columns[‘user_registered’] = __( ‘Registration Date’, ‘theme-name’ );
return $columns;
}
// fill the column cells with the registration dates
function manage_users_custom_column_example( $value, $column_name, $user_id ) {
if ( ‘user_registered’ == $column_name ) {
$userdata = get_userdata( $user_id );
return $userdata->user_registered;
}
}
// Example Source (Idea): http://tommcfarlin.com/add-custom-user-meta-during-registration/
?>
|
Теперь вы знаете больше о своих участниках.
Работа с активациями плагина
Что вы делаете, когда вам нужно проверить, активирован ли плагин в WordPress? Ну, вы используете ловушку activ_plugin: это небольшое полезное действие запускается при активации плагина.
Отправка электронной почты администратору каждый раз, когда плагин активирован
Предположим, у вас есть множество клиентских веб-сайтов (которые были установлены с вашим адресом электронной почты), и вам необходимо знать, когда клиенты устанавливают и активируют новый плагин на своих веб-сайтах.
Просто используйте эту функцию и подключите ее к activated_plugins
и все готово:
01
02
03
04
05
06
07
08
09
10
11
12
13
|
<?php
add_action( ‘activated_plugin’, ‘activated_plugin_example’, 10, 2);
function activated_plugin_example( $plugin, $network_activation ) {
$to = get_option( ‘admin_email’ );
$subject = ‘A plugin has been activated’;
$body = «Hey,\n\nThe following plugin has just been activated:\n\n$plugin\n\nCheers!»;
wp_mail( $to, $subject, $body );
}
?>
|
Обработка параметров цветовой схемы
Начиная с WordPress 3.0, у нас есть «цветовые схемы» для панели администратора, и мы можем редактировать, добавлять или удалять цветовые схемы. А действие admin_color_scheme_picker
позволяет пользователям изменять цветовую схему.
Удаление опции для изменения цветовой схемы
Этот пример не нуждается в особом представлении: если вам когда-либо понадобится отобрать право на изменение цветовой схемы у ваших пользователей (скажем, потому что у вас есть специальная цветовая схема, и вы не хотите, чтобы ваши пользователи вернули ее на стандартную ), используйте фрагмент кода ниже, чтобы удалить параметр:
1
2
3
4
5
6
7
8
9
|
<?php
if( is_admin() ) {
remove_action( ‘admin_color_scheme_picker’, ‘admin_color_scheme_picker’ );
}
// Example Source: http://wpsnipp.com/index.php/functions-php/remove-admin-color-scheme-picker-from-profile/
?>
|
Эй, мы только что удалили функцию из ловушки действий с тем же именем. Я знаю, это странно.
Обработка процесса выхода из системы
Пользователи входят в систему, пользователи выходят из системы, и когда они выходят из системы, wp_logout
действие wp_logout
.
Перенаправление пользователя на домашнюю страницу после выхода из системы
Выйти из веб-сайта WordPress довольно странно: вы перенаправлены на страницу входа в систему, как будто WordPress требует, чтобы вы снова вошли в систему. Вот как вы можете исправить ситуацию и перенаправить пользователей на домашнюю страницу, когда они выходят из системы:
01
02
03
04
05
06
07
08
09
10
11
12
|
<?php
add_action( ‘wp_logout’, ‘wp_logout_example’ );
function wp_logout_example() {
wp_redirect( home_url() );
exit();
}
// Example Source: http://wpsnippy.com/auto-redirect-users-after-logout/
?>
|
Теперь каждый раз, когда пользователь выходит из системы, он видит домашнюю страницу вместо формы входа.
Конец пятой части
Мы только что завершили последний пакет из 50 действий в этой статье. Надеюсь, вам понравилось и узнало что-то новое. В следующей статье мы кратко рассмотрим увиденное и завершим серию.
Я тоже хочу услышать ваши мысли. Что вы думаете об этих действиях? Оставьте свои комментарии ниже. Если вам понравилась статья, не забудьте поделиться ею!