В предыдущей части этой серии мы начали 50 действий WordPress, отобранных из сотен, и мы начали с рассмотрения 10 из них. В этом уроке мы рассмотрим другой пакет и приведем примеры с каждым.
Давайте начнем!
Обработка стандартных стилей WordPress
В WordPress есть много CSS-файлов для использования в качестве внутреннего и внешнего интерфейса. С действием wp_default_styles
мы можем использовать стили WordPress по умолчанию.
Удаление ie.css
из админ панели 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()
, вам не нужно искать дальше — вы можете использовать действие с тем же именем, get_footer
!
Внедрение встроенного JavaScript в нижний колонтитул
Допустим, у вас есть некоторые достоинства 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/
?>
|
Закомментируйте или удалите ненужные строки, и все готово!
Работа с функцией wp()
Давайте посмотрим, что документация говорит об этом действии:
«Выполняется после синтаксического анализа запроса и загрузки сообщений, но перед выполнением любого шаблона внутри главной функции WordPress wp (). Полезно, если вам нужен доступ к данным публикации, но вы не можете использовать шаблоны для вывода».
Короче говоря, он запускается после загрузки запроса. Просто, как и его имя.
Быстрый способ составить график работы Cron в WordPress
В то время как задания 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()
, в качестве ее третьего параметра.
Управление <head>
на страницах панели администратора
Существуют различные хуки (действия и фильтры), в именах которых есть «переменные». Действие 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 действий в этой статье. Надеюсь, вам понравилось и узнало что-то новое. Увидимся в следующем!
Я тоже хочу услышать ваши мысли. Что вы думаете об этих действиях? Оставьте свои комментарии ниже. Если вам понравилась статья, не забудьте поделиться ею!