Удобные функции для 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); ?>

(79)

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

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *

+ 15 = 16