Довольно часто при использовании CMS WordPress, в качестве движка сайта самой разной тематики встречаются задачки, которые не заслуживают разработки отдельного приложения или плагина. И вот тогда на помощь приходит сниппетએ — фрагмент исполняемого кода, вставленный в нужное место. Для WP это нужное место файл function.php активной темы. Здесь несколько небольших фрагментов кода на PHP, актуальность которых не вызывает никаких сомнений в силу острой необходимости их функционала.
Показываем верхнюю панель всегда для всех пользователей
Использование admin-bar для всех читателей WP довольно удобно (по умолчанию она показывается только залогиненным читателям). Панель всегда вверху экрана, её можно раскрасить в соответствии с дизайном вашего сайта (что вы здесь наблюдаете), добавить свои меню, уже есть поисковая строка и многое другое. Так, например, популярный плагин BoddyPress показывает её всегда после установки и активирования.
function wks_login_adminbar( $wp_admin_bar) {
if ( !is_user_logged_in() )
$wp_admin_bar->add_menu( array( 'title' => 'Вход/Регистрация',
'href' => wp_login_url() ) );
}
add_action( 'admin_bar_menu', 'wks_login_adminbar' );
add_filter( 'show_admin_bar', '__return_true', 1000 );
Кстати, очень частый вопрос: как «раскрасить» верхнюю панель? — Довольно просто… В файл style.css темы этого сайта вставлен следующий код:
/* Постоянный админбар */
#wpadminbar .ab-icon, #wpadminbar .ab-item:before, #wpadminbar>#wp-toolbar>#wp-admin-bar-root-default .ab-icon {
font: 400 1.4em/1 dashicons;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
#wpadminbar {
background: #99B2DD;
height: 3em;
padding: 0.3em;
}
#wpadminbar .quicklinks .ab-empty-item, #wpadminbar .quicklinks a, #wpadminbar .shortlink-input {
font-family: BebasNeueBook;
color: white;
}
#wpadminbar .ab-label {
font-family: BebasNeueBook;
}
Думаю принцип понятен. Для элемента с именем wpadminbar можно определить параметры селекторов и объектов, которые относятся к родительскому.
Убираем меню WordPress (logo menu) из admin-bar
Как я уже говорил, использование admin-bar для всех читателей WP довольно удобно. Но есть одно НО! На admin-bar обязательно присутствует меню WP, содержащее ссылки на ресурсы движка. Это многих раздражает, они нужны только разработчику, а не любопытствующему читателю. Да и с точки зрения безопасности не есть cool, зачем сразу подсказывать злодеям о том, что у вас под капотом и как эффективнее поломать сайт. Надо бы его убрать! Но как? Есть два варианта — 1) подправить исходные файлы движка, но при автообновлении WP высока вероятность просмотреть этот момент, и 2) вставить в файл function.php вашей темы следующий код:
function my_admin_bar_render() {
global $wp_admin_bar;
$wp_admin_bar->remove_menu('wp-logo');
}
add_action( 'wp_before_admin_bar_render', 'my_admin_bar_render' );
В переводе с PHP на русский получается — На «крючок» wp_before_admin_bar_render вешается обработчик my_admin_bar_render, где из глобального объекта $wp_admin_bar удаляется меню с именем wp‑logo. Понятно? Всё просто, не правда ли?
Добавляем собственное меню в админбар
Немного кода для для размещения своего собственного меню в admin bar:
class MyLinksMenu {
function MyLinksMenu() {
add_action('admin_bar_menu', array($this, "my_links"));
}
function add_root_menu($name, $id, $href = FALSE) {
global $wp_admin_bar;
$wp_admin_bar->add_menu( array(
'id' => $id,
'title' => $name,
'href' => $href ) );
}
function add_sub_menu($name, $link, $root_menu, $meta = FALSE) {
global $wp_admin_bar;
$wp_admin_bar->add_menu( array(
'parent' => $root_menu,
'title' => $name,
'href' => $link,
'meta' => $meta) );
}
function my_links() {
$this->add_root_menu(' ❀ ', 'mylnk');
$this->add_sub_menu("НИУ Южно-Уральский государственный университет", "http://susu.ru", "mylnk");
$this->add_sub_menu("Высшая школа экономики и управления", "http://hsem.susu.ru", "mylnk");
$this->add_sub_menu("Кафедра Информационные технологии в экономике", "http://is.susu.ru", "mylnk");
$this->add_sub_menu("Бизнес-информатика в Челябинске", "http://business-inform.susu.ru", "mylnk");
$this->add_sub_menu(get_bloginfo('name'), home_url(), "mylnk");
}
}
add_action("init", "myLinkMenuInit");
function myLinkMenuInit() {
global $myLnk;
$myLnk = new MyLinksMenu();
}
Склонение слов после числительных
Жутко не люблю, когда при построении фразы с использованием числительных слова после них не склоняются. Нередко, особенно в локализованных для России приложениях, можно увидеть такие фразы: «До истечения лицензии осталось 2 дней» или «В вашем заказе 1 товаров». Как Вам? — Неправильно это!
Так что, эта задачка встречается практически всегда при написании своих приложений. Вот вам код, который успешно справляется с ней:
$_plural_years = array('год', 'года', 'лет');
$_plural_months = array('месяц', 'месяца', 'месяцев');
$_plural_days = array('день', 'дня', 'дней');
$_plural_times = array('раз', 'раза', 'раз');
$_plural_days = array('день', 'дня', 'дней');
$_plural_students = array('студент', 'студента', 'студентов');
function plural_type($n) {
return ($n%10==1 && $n%100!=11 ? 0 : ($n%10>=2 && $n%10<=4 && ($n%100<10 || $n%100>=20) ? 1 : 2));
}
Идея проста, для каждого слова, которое требует склонения после числительных, создаётся массив с тремя словоформами, для 1, 2 и 5. После чего, описанную выше функцию можно использовать в нужном месте:
ПРИМЕР ИСПОЛЬЗОВАНИЯ: $var = 1; echo $var.' '.$_plural_years[plural_type($var)]; //1 год $var = 3; echo $var.' '.$_plural_days[plural_type($var)]; //3 дня $var = 5; echo $var.' '.$_plural_months[plural_type($var)];//5 месяцев $var = 8; echo $var.' '.$_plural_times[plural_type($var)];//8 раз
Кстати, эту идею можно транслировать на любой язык программирования высокого уровня, java, javascripp, C, C++ и прочее, прочее, прочее …
Собственный логотип на странице входа

Логотип Worgpress на форме подключения, как правило, раздражает владельцев сайтов. Он явно намекает, что владелец не вложил особых трудов в кодирование, предпочитает типовой функционал и не желает тратиться на что-то оригинальное. Ну, и кроме того, это наносит ощутимый урон бренду владельца. Поэтому, на всех своих сайтах я обязательно заменяю логотип WP на свой, оригинальный. Посмотрите, как это выглядит.
function my_custom_login_logo(){
echo '';
}
add_action('login_head', 'my_custom_login_logo');
add_filter( 'login_headertitle', create_function('', 'return "' . get_bloginfo('name') . '";') );//меняем title логотипа
add_filter( 'login_headerurl', create_function('', 'return get_home_url();') );//меняем ссылку с wordpress.org на свой
Редирект на главную страницу после подключения
Сразу после подключения к сайту на WP пользователь попадет в консоль административной панель, что у рядовых пользователей вызывает шок. Особенно в первый раз, сайт с красивым дизайном превращается в невыразительную серую консоль с совершенно непонятным меню, отличным от главного меню сайта и какими-то панельками с не совсем ясными комментариями. Избежать этого и вернуть читателя на фронт-энд позволит следующий код:
function redirect_to_home($url) { return get_option('home'); }
add_filter('login_redirect','redirect_to_home');
Скрываем фрагменты текста от всех, кроме зарегистрированных читателей
Довольно часто бизнес-процессы сайта требуют скрыть статью и часть статьи от незарегистрированных читателей, например, вы заинтриговали своим контентом и хотите превратить просто читателя в подписчика. Так вот, если нужно создать содержание, которое смогут просматривать только зарегистрированные пользователи, то следующий короткий код поможет решить задачу. Скопируйте код в файл functions.php своей темы:
function wks_member_check_shortcode( $atts, $content = null ) {
$str = '
Требуется регистрация для доступа к контенту. Регистрация, если Вы уже зарегистрированы — подключитесь';
if ( is_user_logged_in() && !is_null( $content ) && !is_feed() )
return $content;
return $str;
}
add_shortcode( 'hide', 'wks_member_check_shortcode' );
Теперь можно использовать короткий код в тексте записи или страницы для защиты содержания:
[member]Этот текст будет выводиться только зарегистрированным читателям.[/member]
Успехов в эксплуатации WordPress!
7 сниппетов, которые всегда есть в моих сборках WordPress, опубликовано К ВВ, лицензия — Creative Commons Attribution-NonCommercial 4.0 International.
Респект и уважуха

