Для облегчения жизни разработчиков предлагаем несколько решений для сайта помогающих решить задачи при выводе контента на страницах. Функции для WordPress. Post excerpt. Slugify. Body class. «Контакт форм 7» — дата-атрибут.
Функция преобразования тайтла в ‘slug’ — Slugify.
Необходимость в этом часто возникает при выводе контента по мета-тэгам или названию. Как вывести название — всем понятно the_title
, но для реализации некоторых задач необходимо вывести это название в виде слага. Такая ситуация может возникнуть при подключении фильтра на страницах или при других условиях. Особенно приходится ломать голову, когда это название или мета-тэг написаны в оригинале на кирилице и состоят из двух слов.
Например два слова «Каталог продуктов» надо преобразовать в слаг «catalog-productov».
В файл functions.php вставьте такую функцию:
function slugify($text) { $text = preg_replace('~[^\pL\d]+~u', '-', $text); $text = iconv('utf-8', 'us-ascii//TRANSLIT', $text); $text = preg_replace('~[^-\w]+~', '', $text); $text = trim($text, '-'); $text = preg_replace('~-+~', '-', $text); $text = strtolower($text); if (empty($text)) { return 'n-a'; } return $text; }
Для вывода слага в нужном месте просто вставьте
<?php echo slugify(the_title); ?>
Вместо тайтла как в примере можно вывести любое значение, например
<?php echo slugify($term->name); ?>
— если используются какие-то метаданные.
Результат работы функции можно посмотреть здесь, для каждого блока и вкладки меню, тайтл мета-поля преобразован в slug.
Вывод фрагмента текста в цикле (Post excerpt).
Иногда при вызове анонсов нескольких постов, а возможно и одного (в зависимости от дизайна) необходимо вывести ограниченное количество слов для каждого поста.
Чтобы не создавать дополнительного поля для такой фразы или выводить отрывок — «the_excerpt» который надо будет заполнять для каждого поста, вставьте в файл function.php следующий код:
function excerpt($limit) { $excerpt = explode(' ', get_the_excerpt(), $limit); if (count($excerpt)>=$limit) { array_pop($excerpt); $excerpt = implode(" ",$excerpt).'...'; } else { $excerpt = implode(" ",$excerpt); } $excerpt = preg_replace('`\[[^\]]*\]`','',$excerpt); return $excerpt; }
И в том месте, где надо вывести отрывок вставьте
<?php echo excerpt(30); ?>
Добавление класса к тегу BODY
Для стилизации блоков в зависимости от страницы на которой находится посетитель или для других случаев желательно добавить класс с тегу <body>
на целевой странице. Добавьте в файл functions.php представленный ниже код:
function add_slug_body_class( $classes ) { global $post; if ( isset( $post ) ) { $classes[] = $post->post_type . '-' . $post->post_name; } return $classes; } add_filter( 'body_class', 'add_slug_body_class' );
Эта функция добавит к тегу <body> классы ID страницы и название шаблона страницы.
Исправляем ошибку в консоли браузера, когда элемент страницы с атрибутом aria-hidden=«true»
содержит фокусируемые элементы при закрытии модального окна Bootstrap.
используйте код представленный ниже:
document.addEventListener('hide.bs.modal', function (event) { // Снимаем фокус с активного элемента if (document.activeElement) { document.activeElement.blur(); } });
Добавляем дата-атрибут к инпуту в форме «Contact Form 7».
Для выполнения скриптов или взаимодействия пользователя с формой бывают необходимы дополнительные данные которые обычно добавляются через data-attribute
в полях формы.
По умолчанию плагин «Contact Form 7» удалит все неофициальные теги. Чтобы всё сработало вставьте в файл functions.php вашей темы следующий код.
add_filter( 'wpcf7_form_tag', function ( $tag ) { $datas = []; foreach ( (array)$tag['options'] as $option ) { if ( str_starts_with( $option, 'data-' ) ) { $option = explode( ':', $option, 2 ); $datas[$option[0]] = apply_filters('wpcf7_option_value', $option[1], $option[0]); } } if ( ! empty( $datas ) ) { $id = uniqid('tmp-wpcf'); $tag['options'][] = "class:$id"; add_filter( 'wpcf7_form_elements', function ($content) use ($id, $datas) { return str_replace($id, $name, str_replace($id.'"', '"'. wpcf7_format_atts($datas), $content)); }); } return $tag; } );
В нужном поле добавьте атрибут в следующем виде: [textarea your-message data-height:60 placeholder "Ваше сообщение"]
.
Теперь дата-атрибут будет добавлен в нужном поле. Чтобы увидеть результат, откройте контактную форму на этом сайте, кнопка «Контакты» в хедере и в панели разработчика обратите внимание на текстовое поле — к нему добавлен атрибут data-height="60"
. Для этого поля написан скрипт изменяющий высоту поля в зависимости от количества набираемого текста.
Добавить копирайт разработчика в футер админ-панели WordPress.
Чтобы ссылка на страницу или просто упоминание разработчика отображалось в подвале админ-панели сайта WordPress, добавьте в файл функций темы следующий код.
add_filter( 'admin_footer_text', function ( $footer_text ) { // Измените текст в строке на свои данные $footer_text = 'Powered by <a href="https://www.wordpress.org" target="_blank" rel="noopener">WordPress</a> | Developed by: <a href="https://toffi-design.com" target="_blank" rel="noopener norefferer">Toffi Design</a>'; return $footer_text; } );
В Авторскую ссылку вставьте свои данные, а ссылку на WordPress оставляем из уважения. Ну или как хотите.
Does your site have a contact page? I’m having a tough time
locating it but, I’d like to send you an e-mail. I’ve
got some suggestions for your blog you might be interested in hearing.
Either way, great website and I look forward to seeing it
grow over time.