Полезные функции при создании темы Wordpress
При создании новой темы в Wordpress пригодятся следующие функции. Их нужно добавить в файл functions.php своей текущей темы.
Скачать заготовку пустой темы Wordpress
Отключение админбара для публичной части сайта
Для отключения админбара в публичной части сайта нужно добавить специальную команду в файл темы fubctions.php
add_filter('show_admin_bar', '__return_false');
Подключение javascript-файла
add_action( 'wp_enqueue_scripts', 'enqueue_custom_scripts_with_jquery' );
function enqueue_custom_scripts_with_jquery() {
// Регистрируем и подключаем script.js с зависимостью от jQuery
wp_enqueue_script(
'main-script', // Уникальный идентификатор скрипта
get_template_directory_uri() . '/js/script.js', // Путь к script.js
array('jquery'), // Зависимость от jQuery
null, // Версия (null для автоматического обновления)
true // Подключение в footer
);
}
Регистрация новых размеров изображений
Если на страницах сайта нужен специальный размер для изображений, например, для записей произвольного типа.
function custom_image_sizes() {
add_image_size('small-image', 500, 300, true);
add_image_size('vert-image', 500, 800, true);
add_image_size('gallery-image', 600, 600, true);
add_image_size('large-image', 1200, 800, true);
}
add_action('after_setup_theme', 'custom_image_sizes');
function add_custom_image_sizes_to_media_library($sizes) {
return array_merge($sizes, array(
'small-image' => __('Малое изображение для анкеты (500х300)'),
'vert-image' => __('Вертикальное изображение для анкеты (500х800)'),
'gallery-image' => __('Изображения галереи (600х600)'),
'large-image' => __('Большое изображение для анкеты (1200х800)')
));
}
add_filter('image_size_names_choose', 'add_custom_image_sizes_to_media_library');
Регистрация меню для темы Wordpress
Зарегистрировав новое меню в него можно добавить новые пункты через админку и вывести его в шаблоне специальной командой
function register_custom_menus() {
register_nav_menus( array(
'main_menu' => 'Основное меню',
) );
}
add_action( 'after_setup_theme', 'register_custom_menus' );
Вывод зарегистрированного меню в шаблоне
Для вывода зарегистрированного меню в шаблоне нужно использовать следующий код:
<?php wp_nav_menu( [
'container_class' => 'menu-header',
'theme_location' => 'primary'
] ); ?>
Полезные функции для форматирования номера телефона
Функция при водит номер телефона вида 89137654321 а виду +7 (913) 765-43-21
function format_phone_number($phone) {
$phone = preg_replace('/\D/', '', $phone);
if (strlen($phone) === 11 && $phone[0] === '8') {
$phone = '+7 (' . substr($phone, 1, 3) . ') ' . substr($phone, 4, 3) . '-' . substr($phone, 7, 2) . '-' . substr($phone, 9, 2);
}
return $phone;
}
Функция может быть вызвана, например, для форматирования поля плагина ACF, в шаблоне следующим образом:
$phone = format_phone_number(get_field('phone'));
Следующая функция преобразует номер телефона для использования в ссылке и приводит телефон вида 89137654321 а виду +79137654321:
function format_phone_for_link($phone) {
$phone = preg_replace('/\D/', '', $phone);
if (strlen($phone) === 11 && $phone[0] === '8') {
$phone = '+7' . substr($phone, 1);
}
return $phone;
}
Вызов функции в файле шаблона:
$phone_link = format_phone_for_link(get_field(‘phone’));
Вывод галереи изображений, созданной плагином ACF
Если создано произвольное поле типа «Фотогалерея», то его можно вывести в шаблоне следующим образом:
$images = get_field('fotogalereya');
<?php if( $images ): ?>
<?php foreach( $images as $image ): ?>
<a href="<?php echo esc_url($image['url']); ?>">
<img src="<?php echo esc_url($image['sizes']['gallery-image']); ?>" alt="<?php echo esc_attr($image['alt']); ?>" />
</a>
<?php endforeach; ?>
<?php endif; ?>
Подключение файла с фрагментом шаблона
В примере подключается файл nav.php из директории template-parts
<?php get_template_part('/template-parts/nav'); ?>
Вывод url до текущей темы
<?php echo get_template_directory_uri(); ?>
Создание шаблона для страницы
<?php /* Template Name: Мой шаблон страницы Template Post Type: post, page, product */ // … остальной код шаблона
Вывод текущего года с копирайтом в футере
[crayon-6ac9204587090978520713 lang=»html»]
© 2023– Webdp. Все права защищены.
[crayon-6ac920458709b411417485]


