Статьи

Пятьдесят действий WordPress — 50 примеров (от 41 до 50)

Если вы следили за нами в этой серии, то вы знаете, что мы находимся в поиске 50 наших действий WordPress. Для тех, кто только что присоединился к нам, я призываю вас ознакомиться с предыдущей статьей (так как она начинается там, где она остановилась), а также со статьями, на которые есть ссылки из каждой предыдущей статьи.

Это поможет вам быстрее понять, куда мы направляемся.

Давайте начнем!

У плагинов тоже есть свои потребности: им могут понадобиться внутристраничные сценарии или стили для их собственных страниц параметров. С помощью действия 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() 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' , сайт будет закрыт для всех, кроме администраторов.

Действие 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 действий в этой статье. Надеюсь, вам понравилось и узнало что-то новое. В следующей статье мы кратко рассмотрим увиденное и завершим серию.

Я тоже хочу услышать ваши мысли. Что вы думаете об этих действиях? Оставьте свои комментарии ниже. Если вам понравилась статья, не забудьте поделиться ею!