Для облегчения жизни разработчиков предлагаем несколько функций для сайта на WordPress, помогающих решить задачи при выводе контента на страницах. Post excerpt. Slugify.
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); ?>
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.