Удобные функции для WordPress

06.08.2017
browser cache

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

1 – Функция преобразования тайтла в ‘slug’.

Необходимость в этом часто возникает при выводе контента по мета-тэгам или названию. Как вывести название – всем понятно 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.

2 – Вывод фрагмента текста в цикле.

Иногда при вызове анонсов нескольких постов, а возможно и одного (в зависимости от дизайна) необходимо вывести ограниченное количество слов для каждого поста.
Чтобы не создавать дополнительного поля для такой фразы или выводить отрывок – “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); ?>

1 Комментарий

Оставьте комментарий

Your email address will not be published. Required fields are marked *

90 − 85 =