Статьи

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

В предыдущей части этой серии мы начали 50 действий WordPress, отобранных из сотен, и мы начали с рассмотрения 10 из них. В этом уроке мы рассмотрим другой пакет и приведем примеры с каждым.

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

В WordPress есть много CSS-файлов для использования в качестве внутреннего и внешнего интерфейса. С действием wp_default_styles мы можем использовать стили WordPress по умолчанию.

Если вы единственный, кто использует панель администрирования вашего веб-сайта WordPress, и вы не используете Internet Explorer, нет необходимости загружать CSS-файл IE-fixer, верно?

Вы можете использовать код ниже, чтобы избавиться от ie.css :

1
2
3
4
5
6
7
8
9
<?php
 
add_action( ‘wp_default_styles’, ‘wp_default_styles_example’ );
 
function wp_default_styles_example( $wp_styles ) {
    $wp_styles->remove( ‘ie’ );
}
 
?>

На самом деле, я даже не уверен, что WordPress больше нужен этот файл — в конце концов, ie.css исправляет вещи, которые выглядят плохо в IE7 и ниже, и, насколько я знаю, процент использования IE7 упал ниже 1%.

Мы должны предложить патч , не так ли?

Если вам нужно работать с get_footer() , вам не нужно искать дальше — вы можете использовать действие с тем же именем, get_footer !

Допустим, у вас есть некоторые достоинства jQuery, которые нужно печатать в нижней части ваших веб-страниц. Вы можете использовать эти кусочки кода, чтобы заставить его работать:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
<?php
 
add_action( ‘get_footer’, ‘get_footer_example’ );
 
function get_footer_example( $name ) {
    if ( ‘new’ == $name ) { ?>
        <script>
            (function( $ ) {
                //put all your jQuery goodness in here.
            })( jQuery );
        </script>
    <?php
    }
}
 
// Example Source: http://codex.wordpress.org/Plugin_API/Action_Reference/get_footer
 
?>

Там. Мы использовали некоторый код JavaScript для этого примера, но вы можете практически запустить любой код в нижнем колонтитуле.

Эта удобная маленькая функция запускается каждый раз, когда посещается страница администратора, поэтому она имеет много разных применений. Проявите творческий подход!

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

01
02
03
04
05
06
07
08
09
10
11
12
13
14
<?php
 
add_action( ‘admin_init’, ‘admin_init_example’, 1 );
 
function admin_init_example() {
    if ( ! current_user_can( ‘manage_options’ ) && ( ! defined( ‘DOING_AJAX’ ) || ! DOING_AJAX ) ) {
        wp_redirect( site_url() );
        exit;
    }
}
 
// Example Source: http://codex.wordpress.org/Plugin_API/Action_Reference/admin_init
 
?>

Если вы хотите, вы можете изменить адрес переадресации со своей домашней страницы на что-то другое: просто удалите site_url() и введите нужный адрес в одинарных кавычках (например, 'http://www.google.com/' ).

Встроенная документация определяет это действие просто следующим предложением: «Запускается для аутентификации пользователя при входе в систему».

WordPress не позволяет пользователям входить со своими адресами электронной почты — вы должны запомнить свое имя пользователя. Если ваша база пользователей склонна забывать свои имена пользователей, вы можете использовать приведенный ниже фрагмент кода и сообщить своим пользователям, что они также могут войти со своими адресами электронной почты:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
<?php
 
add_action( ‘wp_authenticate’, ‘wp_authenticate_example’ );
 
function wp_authenticate_example( $username ) {
    $user = get_user_by( ’email’, $username );
    if ( ! empty( $user->user_login ) ) {
        $username = $user->user_login;
    }
    return $username;
}
 
// Example Source: http://bavotasan.com/2011/log-in-to-wordpress-using-an-email-address/
 
?>

Теперь ваши пользователи могут вводить свои адреса электронной почты вместо имен пользователей.

Действие login_form позволяет нам управлять выводом классической формы входа WordPress.

В предыдущем примере мы показали, как разрешить пользователям использовать их адреса электронной почты вместо имен пользователей. Однако если вы не являетесь поклонником такого поведения, вы можете предупредить своих пользователей о том, что они не могут использовать свои адреса электронной почты:

1
2
3
4
5
6
7
8
9
<?php
 
add_action( ‘login_form’, ‘login_form_example’ );
 
function login_form_example() {
    echo ‘<p><strong>Remember:</strong> You must enter your username, not your email address!</p>’;
}
 
?>

Конечно, вы можете поместить другие предупреждения, такие как «Не устанавливайте флажок« Запомнить меня », если вы находитесь на компьютере с общим доступом!» или забавный, такой как «Если вам угрожает грабитель, когда вы входите в систему, введите свой пароль задом наперед, и WordPress автоматически вызовет полицию — но подождите, если вы читаете это, тогда плохой парень прочитает» это тоже … БЕГ! « Вы также можете использовать HTML.

Определяемый как «запускается после создания базовой структуры меню панели администратора», действие admin_menu позволяет нам добавлять или удалять элементы меню (и элементы подменю) в / из меню панели администратора WordPress.

Это знакомый сценарий для внештатных разработчиков WordPress: клиенту необходим доступ к странице «Параметры» определенного плагина, но он не должен касаться каких-либо настроек на собственных страницах «Параметры» WordPress.

Короче говоря, есть страницы, к которым клиенты должны получить доступ, и есть страницы, к которым они не должны обращаться. Пример ниже помогает нам удалить пункты меню из главного меню администратора:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
 
if ( ! current_user_can( ‘manage_options’ ) ) {
    add_action( ‘admin_menu’, ‘admin_menu_example’ );
}
 
function admin_menu_example() {
  remove_menu_page( ‘index.php’ );
  remove_menu_page( ‘edit.php’ );
  remove_menu_page( ‘upload.php’ );
  remove_menu_page( ‘edit.php?post_type=page’ );
  remove_menu_page( ‘edit-comments.php’ );
  remove_menu_page( ‘themes.php’ );
  remove_menu_page( ‘plugins.php’ );
  remove_menu_page( ‘users.php’ );
  remove_menu_page( ‘tools.php’ );
  remove_menu_page( ‘options-general.php’ );
   
}
 
// Example Source: http://wpsnippy.com/remove-top-level-wordpress-dashboard-menu/
 
?>

Закомментируйте или удалите ненужные строки, и все готово!

Давайте посмотрим, что документация говорит об этом действии:

«Выполняется после синтаксического анализа запроса и загрузки сообщений, но перед выполнением любого шаблона внутри главной функции WordPress wp (). Полезно, если вам нужен доступ к данным публикации, но вы не можете использовать шаблоны для вывода».

Короче говоря, он запускается после загрузки запроса. Просто, как и его имя.

В то время как задания cron обычно подключаются к подключению активации плагинов , мы также можем использовать действие wp для привязки наших заданий cron. Давайте посмотрим на пример, предоставленный Кодексом:

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
<?php
 
add_action( ‘wp’, ‘prefix_setup_schedule’ );
 
/**
 * On an early action hook, check if the hook is scheduled — if not, schedule it.
 */
function prefix_setup_schedule() {
    if ( ! wp_next_scheduled( ‘prefix_hourly_event’ ) ) {
        wp_schedule_event( time(), ‘hourly’, ‘prefix_hourly_event’);
    }
}
 
add_action( ‘prefix_hourly_event’, ‘prefix_do_this_hourly’ );
 
/**
 * On the scheduled action hook, run a function.
 */
function prefix_do_this_hourly() {
    // do something every hour
}
 
// Example Source: http://codex.wordpress.org/Function_Reference/wp_schedule_event
 
?>

Обратите внимание, что есть другое действие с именем prefix_hourly_event — это действие создается автоматически в том же фрагменте кода, прямо внутри функции wp_schedule_event() , в качестве ее третьего параметра.

Существуют различные хуки (действия и фильтры), в именах которых есть «переменные». Действие admin_head-(page_name) является одним из них, которое вызывается в <head> для конкретной страницы администратора, определенной в переменной.

Я использую 22-дюймовый монитор и, начиная с версии 3.8 WordPress, я вынужден использовать 4-колоночную панель инструментов, что меня раздражает. Я не уверен, почему я не могу установить количество столбцов, как раньше, но я нашел быстрое решение проблемы:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
<?php
 
add_action( ‘admin_head-index.php’, ‘admin_head_index_php_example’ );
 
function admin_head_index_php_example() {
    add_screen_option(
        ‘layout_columns’,
        array(
            ‘max’ => 3,
            ‘default’ => 3
        )
    );
}
 
// Example Source: http://wpsnippy.com/bring-back-dashboard-screen-layout-options-wordpress-3-8/
 
?>

Теперь я могу изменить количество столбцов, как мы привыкли — до тех пор, пока позволяет ширина моего экрана. Я все еще не могу выбрать более 2 колонок на своем ноутбуке, но я думаю, что могу с этим жить.

Панель инструментов WordPress, бывшая админ-панель, является отличным и полезным элементом навигации, который помогает нам как во внешней, так и в серверной части. А действие wp_before_admin_bar_render помогает нам взаимодействовать с ним до его рендеринга.

Если вы хотите, чтобы ваши клиенты могли с вами связаться, вы можете использовать эти строки кода, чтобы добавить ссылку на панель инструментов своего сайта:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
<?php
 
add_action( ‘wp_before_admin_bar_render’, ‘wp_before_admin_bar_render_example’ );
 
function wp_before_admin_bar_render_example() {
    global $wp_admin_bar;
    $wp_admin_bar->add_node( array(
        ‘id’ => ‘contact-designer’,
        ‘title’ => ‘Contact Designer’,
        ‘href’ => ‘http://barisunver.com.tr/contact/’,
        ‘meta’ => array( ‘target’ => ‘_blank’ )
    ) );
}
 
?>

Легко, правда? Вы можете снова использовать add_node() чтобы создать столько ссылок, сколько захотите.

Хук profile_update позволяет нам получать и работать с пользовательскими данными сразу после их обновления в базе данных.

Допустим, вы хотите информировать пользователей каждый раз, когда они обновляют свои профили. С помощью нашего удобного действия и небольшой функции вы можете сделать это:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
<?php
 
add_action( ‘profile_update’, ‘profile_update_example’ );
 
function profile_update_example( $user_id ) {
    $site_url = get_bloginfo( ‘name’ );
    $user_info = get_userdata( $user_id );
    $user_name = $user_info->display_name;
    $user_email = $user_info->user_email;
    $subject = «Profile updated»;
    $message = «Hello $user_name,\n\nYour profile has been updated! Please contact us if you’re not the one who changed your profile.\n\nThank you for visiting $site_name.»;
    wp_mail( $user_email, $subject, $message );
}
 
// Example Source: http://wpsnipp.com/index.php/functions-php/send-email-notification-when-profile-updates/
 
?>

На мой взгляд, это простая, но эффективная мера безопасности. Тем не менее, это не будет эффективно, если потенциальный хакер изменит адрес электронной почты пользователя, так как письмо будет отправлено на новый адрес электронной почты.

Мы прошли вторую партию из 50 действий в этой статье. Надеюсь, вам понравилось и узнало что-то новое. Увидимся в следующем!

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