§ WordPress шпаргалка — 5 необходимых функций на каждый день

В статье рассмотрим 5 необходимых функций WordPress, которые, по моему мнению, наиболее часто участвуют в разработке.

Содержание статьи:

  • Подключение скриптов (js) и стилей (css) в functions.php.
  • Регистрация и вывод кастомного меню.
  • Регистрация и вывод собственной панели виджетов.
  • Создание пользовательского типа записи.
  • Регистрация шорткодов.
  • Бонус: mu-plugins (обязательные плагины).

1. Подключение скриптов (js) и стилей (css) в functions.php.

При разработке сайта, очень часто бывает необходимо подключить сторонний скрипт, либо файл стилей. Можно конечно пойти по старинке — прикручивать все это дело прямо в шапке (header), но с этим потом возникнут трудности при переносе на хостинг, да и в целом не красиво. Давайте узнаем как это делается на примере подключения bootstrap версии 3.3.7. Все действия делаем в файле functions.php активной темы. Сами файлы bootstrap’a будут располагаться в папке /активная_тема/bootstrap/.

1
2
3
4
5
function bootstrap_scripts() {
    wp_enqueue_style( 'bootstrap-css', get_template_directory_uri() . '/bootstrap/css/bootstrap.css', array(), '3.3.7' );
    wp_enqueue_script( 'bootstrap-js', get_template_directory_uri() . '/bootstrap/js/bootstrap.min.js', array(), '3.3.7' );
}
add_action( 'wp_enqueue_scripts', 'bootstrap_scripts' );

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

2. Регистрация и вывод кастомного меню.

Регистрация кастомных меню возможна функцией register_nav_menus(). Можно создавать сразу несколько дополнительных меню и выводить их на сайте на свое усмотрение. Следующий код следует разместить в файле functions.php активной темы.

1
2
3
4
5
6
add_action('after_setup_theme', function(){
    register_nav_menus( array(
        'main_menu' => 'Основное меню',
        'additional_menu' => 'Дополнительное меню'
    ) );
});

Таким образом, мы создали два новых меню: основное и дополнительное.

WordPress - register_nav_menus

Теперь нужно настроить их в админке и вывести на сайте. Вывод осуществляется в любом месте сайта функцией wp_nav_menu().

1
2
3
4
5
6
7
8
<?php 
    wp_nav_menu ( array (
        'theme_location'  => 'main_menu', //Идентификатор меню, мы его регистрировали ранее.
        'container' => '', //Оберточный контейнер для нашего меню. Пусто, либо false выведет меню без контейнера.
        'depth' => '2', //Сколько показывать уровней вложенности. 0 - показывать все.
        'menu_id' => 'primary-menu', //Значение id у списка меню.
    )); 
?>

3. Регистрация и вывод собственной панели виджетов.

register_sidebar() — регистрирует собственную панель виджетов.

1
2
3
4
5
6
7
8
9
10
11
12
13
add_action( 'widgets_init', 'my_widgets_panel' );
function my_widgets_panel(){
    register_sidebar( array(
        'name'          => 'Моя панель виджетов', //Название панели виджетов. 
        'id'            => "my_widgets_panel", //Идентификатор.
        'description'   => '', //Описание.
        'class'         => '', //CSS класс панели виджетов.
        'before_widget' => '', //Текст или html код, который будет показываться до панели.
        'after_widget'  => '', //Текст или html код, который будет показываться после панели.
        'before_title'  => '', //Текст перед заголовком панели.
        'after_title'   => '', //Текст после заголовка панели.
    ) );
}

Результат:

WordPress - регистрация и вывод собственной панели виджетов

Выводим в любом месте сайта с помощью следующего кода:

1
2
3
4
5
<?php
    if ( function_exists('dynamic_sidebar') ) {
        dynamic_sidebar('my_widgets_panel');
    } 
?>

4. Создание пользовательского типа записи.

Создание пользовательских типов записей подразумевает расширение функционала вордпресса. Следующий код создаст произвольные типы записей «фильмы».

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
// Пользовательский тип записи "фильмы"
add_action( 'init', 'create_post_type' );
function create_post_type() {
    register_post_type( 'films',
         array(
                'labels' => array(
                    'name' => _x('Фильмы', 'post type general name'), //Основное название типа записи.
                    'singular_name' => _x('Фильм', 'post type singular name'), //Название для одиночного элемента.
                    'add_new' => _x('Новый фильм', 'Event'), //Имя для кнопки создания нового элемента.
                    'add_new_item' => __('фильм'), //Имя в верхней админ панели.
                    'edit_item' => __('Редактировать фильм'), //Имя для редактирования элемента.
                    'new_item' => __('Новый фильм'), //Имя для создания нового элемента.
                    'view_item' => __('Посмотреть фильм'), //Имя для кнопки просмотра элемента.
                    'search_items' => __('Искать фильм'), //Имя для поиска по элементам.
                    'not_found' =>  __('Ничего не найдено'), //Текст для пустого результата поиска.
                    'not_found_in_trash' => __('Корзина пуста'), //Текст для пустой корзины.
                ),
                'menu_position'       => 5, //Позиция в меню.
                'menu_icon'           => 'dashicons-video-alt', //Иконка. Полный набор иконок доступен по ссылке: https://developer.wordpress.org/resource/dashicons/
                'public' => true,
                'capability_type' => 'post',
                'supports' => array( //Включаем поддержку стандартного функционала: изображения записи, цитату и тп. Все значения: title','editor','author','thumbnail','excerpt','trackbacks','custom-fields','comments','revisions','page-attributes','post-formats'.
                    'title',
                    'thumbnail',
                    'editor',
                    'excerpt',
                ),
                'has_archive'   => false,
            ));
}

Результат:

WordPress - пользовательский тип записи

Вывод таких постов возможно с помощью WP_Query, заменив post на films.

5. Регистрация шорткодов.

Шорткоды в вордпрессе позволяют выводить функции прямо в тексте статьи, массово используются плагинами (например: contact form 7, meta slider и др.) и позволяют выводить функции php или js прямо в тексте статьи. Для примера, зарегистрируем шорткод показа рекламных объявлений Adsense. Как всегда правим файл functions.php активной темы.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// Регистрация шорткода Adsense
function add_adsense_shortcode() {
    return '
        <div id="google-adsense">
        <ins class="adsbygoogle"
             style="display:block; text-align:center;"
             data-ad-layout="in-article"
             data-ad-format="fluid"
             data-ad-client="ca-pub-3865389427490622"
             data-ad-slot="9907310963"></ins>
        <script>
             setTimeout(function(){(adsbygoogle = window.adsbygoogle || []).push({})}, 1000);
        </script>
        </div>
    ';
}
add_shortcode( 'adsense-article', 'add_adsense_shortcode' );

Использование:

1
[adsense-article]

Такой шорткод позволит выводить рекламу adsense в любом месте статьи.

Бонус: mu-plugins (обязательные плагины).

Мало кто знает о существовании такой полезной штуки как mu-plugins, по русски — обязательные плагины. Они работают так же как и обычные плагины за рядом отличий: обязательные плагины не требуют активации (по умолчанию активны всегда), их нельзя отключить, лежат в папке /wp-content/mu-plugins, должны состоять всего из одного файла и никогда не будут обновляться. Их использование подразумевает что сайт без их функционала работать не будет. Очень полезная штука при работе с заказчиками, которые везде суют свой нос.

WordPress - mu-plugins (обязательные плагины)

04 апреля
Теги: ,