Шпаргалка по интеграции на Wordpress
Эта шпаргалка содержит основные коды и функции для интеграции HTML-шаблона на WordPress. Здесь собраны наиболее часто используемые решения при разработке тем WordPress. Каждый раздел содержит подробное объяснение и примеры использования.
Начальная настройка
Стартовый пустой шаблон WordPress
При начале разработки темы WordPress вам понадобится базовый шаблон. Есть два основных варианта:
- Скачать базовый шаблон - минимальный набор файлов для быстрого старта
- underscores.me - более полный вариант с подробной документацией
После скачивания:
- Удалите все стили из файла
style.cssшаблона - Перенесите все файлы и папки вашей верстки в папку шаблона
- Убедитесь, что структура папок соответствует стандартам WordPress
Настройка functions.php
Этот файл - главный центр управления вашей темой. Здесь подключаются все необходимые функции и настройки:
1
2
// Подключение поддержки миниатюр
add_theme_support('post-thumbnails');
Этот код нужен для:
- Добавления возможности загружать миниатюры к постам
- Используется в админке WordPress в разделе “Запись” -> “Установить миниатюру”
- Часто нужен для блогов, каталогов товаров, портфолио
1
2
// Подключение поддержки title-tag
add_theme_support('title-tag');
Этот код:
- Автоматически добавляет тег
<title>в<head> - Важен для SEO
- Используется на всех страницах сайта
1
2
3
4
5
6
7
8
// Подключение поддержки HTML5
add_theme_support('html5', array(
'search-form',
'comment-form',
'comment-list',
'gallery',
'caption',
));
Этот код:
- Включает поддержку HTML5 для форм и галерей
- Нужен для современных форм поиска и комментариев
- Используется в стандартных шаблонах WordPress
Подключение стилей и скриптов
Этот раздел отвечает за правильное подключение всех CSS и JavaScript файлов. Важно использовать функции WordPress для подключения ресурсов, а не прямые теги в HTML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
function load_style_script() {
// Подключение стилей
wp_enqueue_style('qam-css', get_template_directory_uri() . '/css/main.min.css');
// Подключение скриптов
wp_deregister_script('jquery-core');
wp_deregister_script('jquery');
wp_register_script('jquery-core', get_template_directory_uri() . '/js/jquery.js', false, null, true);
wp_register_script('jquery', false, array('jquery-core'), null, true);
wp_enqueue_script('jquery');
wp_enqueue_script('qam-js', get_template_directory_uri() . '/js/app.min.js', array('jquery'), true);
}
add_action('wp_enqueue_scripts', 'load_style_script');
Этот код:
- Правильно подключает CSS и JS файлы
- Корректно работает с jQuery (важно для многих плагинов)
- Используется на всех страницах сайта
- Важен для производительности (скрипты загружаются в конце страницы)
Работа с шаблонами
Создание шаблона страницы
Шаблоны страниц позволяют создавать уникальные макеты для разных типов страниц:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
/*
Template Name: Моя страница шаблона
*/
get_header();
?>
<div class="content">
<?php while (have_posts()) : the_post(); ?>
<?php the_content(); ?>
<?php endwhile; ?>
</div>
<?php
get_footer();
Этот код:
- Создает новый шаблон страницы
- Появляется в админке при создании/редактировании страницы
- Используется для создания уникальных страниц с особой версткой
Получение URL шаблона
Часто нужно получить путь к файлам темы:
1
<?php echo get_template_directory_uri(); ?>
Используется для:
- Подключения изображений
- Работы с файлами темы
- Правильных путей к ресурсам
Пример использования:
1
<img src="<?php echo get_template_directory_uri(); ?>/images/dist/logo.svg" alt="Logo">
Работа с меню
Регистрация меню
Регистрация меню позволяет создавать разные меню для разных частей сайта:
1
2
3
4
5
6
add_action('after_setup_theme', function() {
register_nav_menus([
'header_menu' => 'Меню в шапке',
'footer_menu' => 'Меню в подвале'
]);
});
Этот код:
- Создает два меню в админке WordPress
- Позволяет управлять меню через админку
- Используется для создания многоуровневых меню
Удаление контейнера у меню
Часто нужно убрать лишние обертки у меню:
1
2
3
4
5
add_filter('wp_nav_menu_args', 'my_wp_nav_menu_args');
function my_wp_nav_menu_args($args = '') {
$args['container'] = false;
return $args;
}
Этот код:
- Убирает лишние div-обертки у меню
- Нужен для чистоты HTML
- Используется для соответствия верстке
Вывод меню
Вывод меню с нужными параметрами:
1
2
3
4
5
6
7
8
<?php
wp_nav_menu([
'theme_location' => 'header_menu',
'container' => false,
'menu_class' => 'menu',
'fallback_cb' => false
]);
?>
Этот код:
- Выводит меню в нужном месте
- Добавляет нужные классы
- Отключает fallback-меню
Работа с ACF
Advanced Custom Fields - популярный плагин для создания дополнительных полей. Вот основные способы работы с ним:
Вывод поля ACF
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
// Простое поле
echo get_field('field_name');
// Повторитель
if(have_rows('repeater_field')):
while(have_rows('repeater_field')) : the_row();
echo get_sub_field('sub_field');
endwhile;
endif;
// Группа
$group = get_field('group_field');
echo $group['sub_field'];
?>
Этот код:
- Выводит значения полей ACF
- Работает с повторителями
- Работает с группами полей
Условный вывод
Часто нужно проверять наличие поля перед выводом:
1
2
3
4
5
<?php if(get_field('field_name')): ?>
<div class="field-content">
<?php echo get_field('field_name'); ?>
</div>
<?php endif; ?>
Этот код:
- Проверяет наличие поля
- Выводит контент только если поле заполнено
- Предотвращает ошибки
Работа с WooCommerce
WooCommerce - популярный плагин для создания интернет-магазинов. Вот основные способы работы с ним:
Вывод товаров
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
$args = array(
'post_type' => 'product',
'posts_per_page' => 8,
'tax_query' => array(
array(
'taxonomy' => 'product_cat',
'field' => 'slug',
'terms' => 'category-slug'
)
)
);
$products = new WP_Query($args);
if($products->have_posts()):
while($products->have_posts()): $products->the_post();
wc_get_template_part('content', 'product');
endwhile;
wp_reset_postdata();
endif;
?>
Этот код:
- Выводит товары из определенной категории
- Использует стандартный шаблон товара
- Правильно обрабатывает запрос
Кастомные хуки WooCommerce
Часто нужно изменить стандартное поведение WooCommerce:
1
2
3
4
5
6
7
8
9
10
11
// Изменение цены
add_filter('woocommerce_get_price', 'custom_price', 10, 2);
function custom_price($price, $product) {
return $price * 1.2; // Увеличиваем цену на 20%
}
// Изменение кнопки "Добавить в корзину"
add_filter('woocommerce_product_add_to_cart_text', 'custom_add_to_cart_text');
function custom_add_to_cart_text() {
return 'Купить';
}
Этот код:
- Изменяет цену товара
- Меняет текст кнопки
- Использует хуки WooCommerce
Оптимизация изображений
Автоматическая оптимизация
1
2
3
4
5
6
7
8
9
10
11
// Добавление размеров изображений
add_image_size('custom-thumbnail', 300, 200, true);
// Отключение создания лишних размеров
add_filter('intermediate_image_sizes_advanced', 'remove_default_image_sizes');
function remove_default_image_sizes($sizes) {
unset($sizes['thumbnail']);
unset($sizes['medium']);
unset($sizes['large']);
return $sizes;
}
Этот код:
- Создает нужные размеры изображений
- Отключает ненужные размеры
- Оптимизирует хранение
Ленивая загрузка
1
2
3
4
5
6
// Включение ленивой загрузки
add_filter('wp_get_attachment_image_attributes', 'add_lazy_loading');
function add_lazy_loading($attributes) {
$attributes['loading'] = 'lazy';
return $attributes;
}
Этот код:
- Включает ленивую загрузку изображений
- Улучшает производительность
- Экономит трафик
Работа с формами
Contact Form 7
1
2
3
4
5
6
7
8
9
10
11
12
// Вывод формы
<?php echo do_shortcode('[contact-form-7 id="123" title="Контактная форма"]'); ?>
// Кастомная валидация
add_filter('wpcf7_validate_text', 'custom_text_validation', 10, 2);
function custom_text_validation($result, $tag) {
$value = isset($_POST[$tag->name]) ? trim($_POST[$tag->name]) : '';
if($value == '') {
$result->invalidate($tag, 'Поле обязательно для заполнения');
}
return $result;
}
Этот код:
- Выводит форму Contact Form 7
- Добавляет кастомную валидацию
- Обрабатывает ошибки
Кастомная форма
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<form method="post" action="<?php echo esc_url(admin_url('admin-post.php')); ?>">
<?php wp_nonce_field('custom_form_action', 'custom_form_nonce'); ?>
<input type="hidden" name="action" value="custom_form_submit">
<input type="text" name="custom_field">
<button type="submit">Отправить</button>
</form>
<?php
add_action('admin_post_custom_form_submit', 'handle_custom_form');
add_action('admin_post_nopriv_custom_form_submit', 'handle_custom_form');
function handle_custom_form() {
if(!isset($_POST['custom_form_nonce']) ||
!wp_verify_nonce($_POST['custom_form_nonce'], 'custom_form_action')) {
wp_die('Ошибка безопасности');
}
// Обработка формы
$custom_field = sanitize_text_field($_POST['custom_field']);
// Дальнейшая логика
}
?>
Этот код:
- Создает безопасную форму
- Обрабатывает отправку
- Проверяет nonce
Полезные функции
Получение ID страницы по slug
1
2
3
4
function get_page_id_by_slug($slug) {
$page = get_page_by_path($slug);
return $page ? $page->ID : null;
}
Используется для:
- Получения ID страницы по URL
- Работы с динамическими страницами
- Создания ссылок
Проверка активного пункта меню
1
2
3
function is_menu-item_active($menu_item) {
return in_array('current-menu-item', $menu_item->classes);
}
Используется для:
- Подсветки активного пункта меню
- Создания навигации
- Улучшения UX
Получение URL изображения миниатюры
1
2
3
4
5
6
function get_thumbnail_url($post_id = null, $size = 'full') {
if(!$post_id) {
$post_id = get_the_ID();
}
return get_the_post_thumbnail_url($post_id, $size);
}
Используется для:
- Получения URL миниатюры
- Работы с изображениями
- Создания галерей
Очистка кеша при обновлении поста
1
2
3
4
5
6
add_action('save_post', 'clear_cache_on_save');
function clear_cache_on_save($post_id) {
if(defined('WP_CACHE') && WP_CACHE) {
wp_cache_flush();
}
}
Используется для:
- Очистки кеша
- Обновления данных
- Оптимизации производительности
Заключение
После внедрения этих оптимизаций вы должны увидеть значительное улучшение производительности вашего сайта:
- Время загрузки страниц уменьшится до 0.5-1 секунды
- Улучшится пользовательский опыт
- Снизится нагрузка на сервер
- Улучшится индексация поисковыми системами
Если у вас есть проблемы с производительностью, начните с этих базовых шагов. Если нужна помощь с конкретными компонентами или настройками, пишите в комментариях - поделимся опытом и знаниями.
