Вывод анонса записи в wordpress блоге
Выводить анонс записи на блоге нужно обязательно. Для чего это делать? Ну во-первых для того чтобы посетители блога могли выбрать для себя наиболее необходимые им материалы.
Во-вторых, если анонс не выводить вообще, то получится сайт-страшилка, очень похожий на новостной сайт (лены новостей).
В-третьих, вывод полной записи (встречал и такое) – дублирует контент на сайте, посетители не будут заходить во внутренние страницы, да и вообще будут ли заходить? Если можно прочитать всю запись в RSS ленте.
К тому же тогда главная страница блога превращается в огромную веб страницу, напичканную материалами, картинками, таблицами и прочей ерундой. Кстати, поисковые боты не очень любят большие страницы.
Выводить анонс записи можно разными способами, всего я знаю их три. Поэтому я сейчас и приведу вам эти способы.
1. Стандартный способ вывода анонса wordpress
Этот способ предусмотрен разработчиками wordpress. Для этого достаточно поставить тег <!–more–> в HTML коде записи, либо нажав кнопочку «Вставить тег Далее» в визуальном редакторе, скриншот ниже.

2. Вывода анонса при помощи функции the_excerpt
Стандартная функция для вывода записи в wordpress the_content, ее можно заменить функцией the_excerpt, для этого достаточно пройтись по файлам шаблона (темы) и вручную заменить функцию.
Данная функция выводит 55 первых слов записи, причем форматирование теряется. Например если ваша запись в начале имеет два маленьких абзаца, то они сольются в один абзац. Еще одна неприятность – после последнего слова выведется троеточие с квадратными скобками [...] – хотя это легко исправить с помощью пользовательской функции.
1 2 3 4 | function new_excerpt_more($excerpt) { return str_replace('[...]', '...', $excerpt); } add_filter('wp_trim_excerpt', 'new_excerpt_more'); |
Эту функцию надо добавить в файл functions.php, который находится внутри папки вашей темы. Он изменяет убирает квадратные скобки благодаря функции str_replace(). Вуаля, теперь можно автоматом генерировать анонс записи и при этом не ставить никаких тегов внутри записи.
3. Вывода анонса при помощи пользовательской функции
Назовем эту функцию shorten_text(), она вызывается так – shorten_text(350), цифра 350 – это количество символов которое выведется функцией. Также в конце анонса выведется троеточие. Чтобы вывести что-то другое тогда требуется вызвать функцию вот так – shorten_text(350,’далее…’).
1 2 3 4 5 6 7 8 9 | function shorten_text( $iChars = 22, $szTail = "...", $bPrint = true ) { global $post; $szText = strip_tags( trim( $post->post_content ) ); $szText = substr( $szText, 0, $iChars ); $szText = substr( $szText, 0, strrpos( $szText , ' ' ) ) . $szTail; apply_filters('the_excerpt', $szText); if ( $bPrint == true ) echo $szText; else return $szText; } |
Красивый женский журнал для милых леди, женские статьи про здоровье, беременность, моду, красоту, кулинарию и детей.
| This entry was posted by Арни Веб Дизайн on 21 Март 2010 at 19:20, and is filed under Wordpress. Follow any responses to this post through RSS 2.0. Вы можете оставить комментарий или трэкбэк с вашего сайта. |
1 год назад
Последняя функция почему-то не работает…
1 год назад
У меня работает, может подставили неправильно?
1 год назад
Все работает прекрасно. подскажите как написать вызов пользовательской функции после нажатия ’далее…’ для вывода остального текста и скрытия кнопки ’далее…’.
1 год назад
Я хочу спросить про 3 способ. Я так понимаю показанный код внести в function.php? Если так, то что внести в контент шаблона?
1 год назад
Есть еще куда более удобная продвинутая модификация 3-го варианта:
function the_content_limit($max_char, $more_link_text = ‘(Читать полностью →)’, $stripteaser = 0, $more_file = ») {
$content = get_the_content($more_link_text, $stripteaser, $more_file);
$content = apply_filters(‘the_content’, $content);
$content = str_replace(‘]]>’, ‘]]>’, $content);
$content = strip_tags($content);
if ((strlen($_GET['p']) > 0) && ($espacio = strpos($content, » «, $max_char ))) {
$content = substr($content, 0, $espacio);
$content = $content;
echo «»;
echo $content;
echo « «.»Далее »«;
echo «»;
}
else if ((strlen($content)>$max_char) && ($espacio = strpos($content, » «, $max_char ))) {
$content = substr($content, 0, $espacio);
$content = $content;
echo «»;
echo $content;
echo «…»;
echo « «.$more_link_text.»«;
echo «»;
}
else {
echo «»;
echo $content;
echo « «.»Далее »«;
echo «»;
}
}
Ну, и вывод в шаблоне:
<?php the_content_limit(330, «читать дальше»); ?>
Преимущество в том, что предусмотрены нюансы «обрезания» текста.
1 год назад
Не могу найти информацию по вопросу, работает ли функция excerpt автоматически?
При добавлении текста в графу «цитата» ничего не происходит. Работает ли это функция без тега more?
1 год назад
Круто, а я парился с этими непонятными анонсами, а потом забил и просто ставил тег More..
9 месяцев назад
А вывод похожих тем с картинками как сделать ??
8 месяцев назад
а как быть если нужно вывести не в сайдбаре текст до more нескольких новостей определённой категории?