Для облегчения жизни разработчиков предлагаем несколько решений для сайта помогающих решить задачи при выводе контента на страницах. Функции для 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.