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

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 комментарий

  • 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.

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

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