The excerpt wordpress


I’ve recently answered a few questions regarding excerpts, so I’m going to give a detailed explanation covering as much as I can.


There seems to be a couple of questions arising from this answer on where the code should go, and the answer is, it is really up to you and how you see fit. There are are a couple of options where you can place the code (if not explicitly stated):

  • In your theme’s functions.php or any file use as a functions file. Just remember when you do this, if the theme is not your own, all changes will be lost when you upgrade your theme

  • A better way would be to use the code in a child theme. As above, in the functions.php or functions related file

  • Use the code in a plugin. This is the prefered way as this makes the code available across all themes. If you switch themes, you don’t have to worry about rewriting the same code.

I hope this clears things up a bit 🙂


the_excerpt() first of all doesn’t accept any parameters, so nothing can be passed to it. It is a fact that the_excerpt() trims the content to 55 words, and all HTML tags are stripped before returning the text. the_excerpt() is located in wp-includes/post-template.php. To allow certain or all HTML tags in the excerpt, a new excerpt has to be created.

First of all, the original function needs to be removed first, and then the new function needs to be hooked to get_the_excerpt. Please take note, this new excerpt will still be callable as the_excerpt() in template files, no need to change that. get_the_excerpt() is located in wp-includes/post-template.php.

The excerpt uses wp_trim_excerpt to return the trimmed text, so we need to remove wp_trim_excerpt first from the excerpt filter. wp_trim_excerpt() is located in wp-includes/formatting.php, line 2355. This is how:

remove_filter('get_the_excerpt', 'wp_trim_excerpt'); 

You can now add your new excerpt to get_the_excerpt

add_filter('get_the_excerpt', 'wpse_custom_wp_trim_excerpt'); 

To allow html tags/formatting, we will need to specify which tags you will need to allow. You can use the following strip_tags

statement to achieve that

$wpse_excerpt = strip_tags($wpse_excerpt, wpse_allowedtags()); 

The second argument wpse_allowedtags() is a small function that is used to add the tags the_excerpt() will allow. For a complete list of valid HTML 5 tags, go and check it out here. Here is function, add any html tags to this that you need to allow/keep

function wpse_allowedtags() { // Add custom tags to this string  return '<script>,<style>,<br>,<em>,<i>,<ul>,<ol>,<li>,<a>,<p>,<img>,<video>,<audio>';  } 

If you need to allow all HTML tags, that is, no stripping of any tags, the strips_tags() function can be omitted/removed completely.

A point to note however, when html tags are allowed, these tags are counted as words, so your word count for excerpts with tags and without tags will not be the same. To correct that, you will need to remove these tags from the actual word count first so that only words are counted.

I have written an excerpt that will allow all tags, count only words as words, and complete a sentence after the set amount of words (so the text won’t be trimmed mid-sentence) and add a read more text after the last word.

Here is the complete code

function wpse_allowedtags() {  // Add custom tags to this string  return '<script&.  

r_replace(']]>', ']]&gt;', $wpse_excerpt); $wpse_excerpt = strip_tags($wpse_excerpt, wpse_allowedtags()); /*IF you need to allow just certain tags. Delete if all tags are allowed */ //Set the excerpt word count and only break after sentence is complete. $excerpt_word_count = 75; $excerpt_length = apply_filters('excerpt_length', $excerpt_word_count); $tokens = array(); $excerptOutput = ''; $count = 0; // Divide the string into tokens; HTML tags, or words, followed by any whitespace preg_match_all('/(<[^>]+>|[^<>s]+)s*/u', $wpse_excerpt, $tokens); foreach ($tokens[0] as $token) { if ($count >= $excerpt_length && preg_match('/[,;?.!]s*$/uS', $token)) { // Limit reached, continue until , ; ? . or ! occur at the end $excerptOutput .= trim($token); break; } // Add words to complete sentence $count++; // Append what's left of the token $excerptOutput .= $token; } $wpse_excerpt = trim(force_balance_tags($excerptOutput)); $excerpt_end = ' <a href="'.

c_url( get_permalink() ) . '">' . '&nbsp;&raquo;&nbsp;' . sprintf(__( 'Read more about: %s &nbsp;&raquo;', 'wpse' ), get_the_title()) . '</a>'; $excerpt_more = apply_filters('excerpt_more', ' ' . $excerpt_end); //$pos = strrpos($wpse_excerpt, '</'); //if ($pos !== false) // Inside last HTML tag //$wpse_excerpt = substr_replace($wpse_excerpt, $excerpt_end, $pos, 0); /* Add read more next to last word */ //else // After the content $wpse_excerpt .= $excerpt_more; /*Add read more in new paragraph */ return $wpse_excerpt; } return apply_filters('wpse_custom_wp_trim_excerpt', $wpse_excerpt, $raw_excerpt); } endif; remove_filter('get_the_excerpt', 'wp_trim_excerpt'); add_filter('get_the_excerpt', 'wpse_custom_wp_trim_excerpt');

You can just remove the ‘//’ from functions that you need extra.


Sometimes you need to display simple excerpts of different lengths and it is not viable to write an excerpt for every post/function/page. Here is a nice small little function using wp_trim_words

function wpse_custom_excerpts($limit) {  return wp_trim_words(get_the_excerpt(), $limit, '<a href="'. esc_url( get_permalink() ) . '">' . '&nbsp;&hellip;' . __( 'Read more &nbsp;&raquo;', 'wpse' ) . '</a>'); } 

What this little function does is taking get_the_excerpt

, trimming it to $limit set by the user, and returning the text with a read more link at the end.

You can call this excerpt as follow in your template

echo wpse_custom_excerpts($limit); 

where $limit will be your word count, so an excerpt of 30 words will be

echo wpse_custom_excerpts(30); 

Just one thing to remember here, if you set your limit to more that 55 words, only 55 words will be returned as the excerpt is only 55 words in length. If longer excerpts are needed, use get_the_content instead.


If you just need to alter the length of the_excerpt(), you can use the following function

function wpse_excerpt_length( $length ) {  return 20; } add_filter( 'excerpt_length', 'wpse_excerpt_length', 999 ); 

Remember, you will need to set a priority bigger than 10 so that your custom function executes after the default.


All text returned by the excerpt have the hated [...] at the end that is not clickable. To add a read more text in the place of the hellips, use this function

 function wpse_excerpt_more( $more ) {  return ' <a class="read-more" href="'. get_permalink( get_the_ID() ) . '">' . __('Read More', 'your-text-domain') . '</a>'; } add_filter( 'excerpt_more', 'wpse_excerpt_more' );   


Excerpt first paragraph

I want to keep this complete, so here is the excerpt that trims after the first paragraph.

Here is a function that keeps HTML tags in tact, adds a «Read More» link at the end of the excerpt and trims the excerpt after the first paragraph.

if ( ! function_exists( 'wpse0001_custom_wp_trim_excerpt' ) ) :    function wpse0001_custom_wp_trim_excerpt($wpse0001_excerpt) {  global $post;  $raw_excerpt = $wpse0001_excerpt;  if ( '' == $wpse0001_excerpt ) {   $wpse0001_excerpt = get_the_content('');  $wpse0001_excerpt = strip_shortcodes( $wpse0001_excerpt );  $wpse0001_excerpt = apply_filters('the_content', $wpse0001_excerpt);  $wpse0001_excerpt = substr( $wpse0001_excerpt, 0, strpos( $wpse0001_excerpt, '</p>' ) + 4 );  $wpse0001_excerpt = str_replace(']]>', ']]&gt;', $wpse0001_excerpt);   $excerpt_end = ' <a href="'. esc_url( get_permalink() ) . '">' . '&nbsp;&raquo;&nbsp;' . sprintf(__( 'Read more about: %s &nbsp;&raquo;', 'pietergoosen' ), get_the_title()) . '</a>';   $excerpt_more = apply_filters('excerpt_more', ' ' . $excerpt_end);    //$pos = strrpos($wpse0001_excerpt, '</');  //if ($pos !== false)  // Inside last HTML tag  //$wpse0001_excerpt = substr_replace($wpse0001_excerpt, $excerpt_end, $pos, 0);  //else  // After the content  $wpse0001_excerpt .= $excerpt_more;   return $wpse0001_excerpt;   }  return apply_filters('wpse0001_custom_wp_trim_excerpt', $wpse0001_excerpt, $raw_excerpt);  }  endif;   remove_filter('get_the_excerpt', 'wp_trim_excerpt'); add_filter('get_the_excerpt', 'wpse0001_custom_wp_trim_excerpt'); 

EDIT 29-10-2015

For anyone that need a workaround to not display the read more link after the excerpt when the excerpt is shorter that the amount of words set, please see the following question and answer

  • Read more tag shows up on EVERY post

Всем привет! Сегодня на SEO Маяк я буду рассказывать о том как, правильно выводить анонсы статей на WordPress. О том, какие теги отвечают за их формирование и вывод на страницы, а также постараюсь подробно разъяснить, как вообще все это дело работает.

Вроде бы, чего нового можно здесь сказать, ведь в сети полно статей о теге more, да и тег the_excerpt довольно подробно описан.

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

За последнее время, в мой адрес поступило много просьб рассказать о том, как убрать злополучные […] на конце анонсов статей и заменить их на привычные: «Читать далее», «Читать полностью» или объяснить почему не работает тег more и т.д.

vyvod anonsov statei

Вот я и решил написать этот пост, в помощь моим читателям и всем начинающим веб-мастерам.

А если Вы дочитаете статью до конца, то узнаете как подружит теги more и  the_excerpt и как организовать их совместное использование.

А начну я, как не странно, с мифов про тег more, которыми полна поисковая выдача. Поехали!

Мифы о теге more

Миф №1. Тег more создает дубли страниц.

Мне не раз задавали вопросы, типа — как избавиться или чем заменить тег more, чтобы он не создавал дубли страниц.

Полная чушь! Тег more является обычным якорем и создавать дубли он в принципе не может. Если следовать логике вопроса, то все якорные ссылки на сайте создают дубли. У меня на блоге около 40 — 60 якорных ссылок, конечно не считая самого more. Это что получается, все страницы, на которые ведут данные ссылки — дубли? Смех да и только.

Миф №2. Ключевые слова в теге more способствуют продвижению.

Бродя по просторам всемирной паутины я не раз встречал сайты, на которых вместо общепринятых анкоров тега more, таких как: «Далее», «Читать Далее» или «Читать полностью», используются анкоры, содержащие ключевые слова.

В HTML режиме редактора WordPress это выглядит так:

<--moreКлючевое слово-->

При виде сей «seo-карикатуры», у меня всегда появлялась улыбка на лице и я даже испытывал некоторое сочувствие к веб-мастерам, которые не жалея своего труда и времени, вписывали ключи в тег more.

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

«Девушка, а вы давно заглядывали в файл robots.txt вашего ресурса? А ведь у Вас там стоят запреты на индексацию: категорий, постраничной навигации, архивов и т.д.»

Очень даже правильные директивы, призванные на борьбу с частичными дублями контента. Но тогда какой смысл писать ключи на страницах запрещенных к индексации? Продолжать не буду. Идем дальше.

Тег the_excerpt()

Наверное некоторые начинающие веб-мастера даже не подозревают о существовании тега the_excerpt.

И что это за тег такой, ведь нет такой кнопки в стандартном редакторе WordPress? Как он тогда выводит анонсы статей?

Примерно такими вопросами я озадачился, когда в свое время  первый раз столкнулся с использованием в шаблоне тега the_excerpt.

Как строится работа данной функции? Допустим, в моей теме для вывода анонсов используется тег the_excerpt.  В файлах шаблона, таких как: index.php, category.php, arhive.php и т.д, он будет выглядеть так:

<?php the_excerpt(); ?>

В скобки можно добавлять различные параметры, но об этом я расскажу как-нибудь в другой раз, так что не примените подписаться на обновления блога.

Я написал статью и опубликовал ее, конечно не забыв поставить тег more в нужное место. Что в данном случаи происходит… Тег the_excerpt() отправляет запрос в свой «центр управления», который находиться по адресу /wp-includes/post-template.php. 

Центр управления принимает сигнал, обрабатывает его, проверяет его на наличие дополнительных директив от файла funtions.php и если таковых нет, то дает указание WordPress вывести анонс длиной в 55 слов.

Стоп! Почему 55 слов? Я ведь поставил тег more на 5 абзаце и в анонсе должно быть не 55 слов, а как минимум 100?

Дело в том, что функция the_excerpt() игнорирует тег more, так сказать, он для нее не авторитет и руководствуясь своими собственными соображениями, которые заложены в функцию по умолчанию, выводит анонс в 55 слов.

При этом в самом конце она обязательно проставляет свой «фирменный знак», в виде […], а такие привычные и приятные глазу «Читать далее» или Читать полностью» просто исчезают в небытие.

Злой какой-то этот тег и «Мама» его тоже злая! Но на самом деле тег the_excerpt вовсе не злой, а призван он выполнять самые благие функции, просто его неправильно используют.

Внимание! Тег the_excerpt способен выводить уникальные анонсы статей!

Как это так? Разве такое возможно? Он что сам анонсы пишет?

Конечно ничего он не пишет. Вернемся к тому моменту, когда я опубликовал новенький пост.

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

Как с помощью тега the_excerpt вывести уникальные анонсы статей

Тег the_excerpt действительно способен выводить уникальные анонсы статей. Давайте разберемся как это дело реализовать.

Открываем любую запись, в самом верху страницы жмем на вкладку «Настройки экрана» и ставим галочку возле пункта «Цитата»:

anonsy statei1

После проведенных манипуляций, ниже редактора должен появится новый раздел:

anonsy statei2

В появившиеся поле вписываем краткое описание статьи или любой другой уникальный текст.

И вот оно счастье! Анонс стал полностью уникальным! SEO торжествует!

Самое время будет сказать, что при неправильном использовании тега the_excerpt(), все ссылки из той части статьи, что попала под действие тега, превращаются в простой текст. А вот если вставить ссылку в поле «Цитаты», в формате <a href=»URL страницы»>анкор</a>, то она благополучно пройдет фильтрацию и отобразиться в анонсе статьи. Вот такие дела товарищи!

Теперь вернемся к мифу №2. Я там описывал историю с добавлением ключевых слов в тег more.

Так вот, если в качестве главной на блоге использовать статическую страницу и в файле robots.txt разрешить индексацию категорий, то при использовании тега the_excerpt, в поле цитаты можно вставлять ссылки с уникальными анкорами-ключами, ведущими на саму запись.

Вот такой способ внутренней перелинковки вполне оправдан. Идем дальше.

Тег the_content() и его производная — тег more

Мы тут все говорили про тег more, а оказывается это просто производная от другого тега?

Давайте об всем по порядку. Тег the_content используется в файлах шаблона, аналогично тегу the_excerpt, но в отличии от последнего, имеет своего «агента» в редакторе WordPress  —  more. Попробую дать более развернутое определение.

Допустим, в моем шаблоне используется тег the_content, в файлах он прописывается следующим образом:

<?php the_content(); ?>

В скобках также могут указываться дополнительные параметры, в том числе анкор «Читать полностью», который будет выводить тег more. Например:

<?php the_content('Читать полностью &raquo;');?>

Об других параметрах the_content я расскажу в будущих статьях, посвященных непосредственно тегам шаблона.

Итак, я написал статью, поставил тег more в нужном мне месте и нажал кнопочку — «Опубликовать». Что происходит в этот момент в глубине «сознания» WordPress?

Если объяснять человеческим языком, то сей процесс со стороны будет выглядеть так:

Тег the_content, при виде нового текста, тут же отправляет срочную депешу своему начальнику, а именно функции  the_content(), что находиться по знакомому нам адресу /wp-includes/post-template.php.

Функция the_content(), в свою очередь, делает контрольный звонок генеральному директору — функции  get_the_content().

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

Функция the_content(), руководствуясь своими инструкциям, дает команду тегу the_content, вывести в качестве анонса тот участок текста, на который указал «агент» more. Просто шпионские страсти какие-то.

Внимание! Функция the_content() не видит цитаты и не выводит их в качестве анонсов!

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

По каким это это своим каналам, генеральная функция get_the_content() проверяла поступившие данные?

Как вывести уникальный анонс статьи с помощью тега more

Конечно основным информатором функции get_the_content() является файл functions.php, что расположен в корне шаблона и о возможностях которого, я расскажу в самом конце статьи.

Но допустим основной информатор не располагает какими-то нибыло важными сведениями. Где тогда «Маме» брать нужную информацию? Неужели детективная история на этом просто заканчивается?

В большинстве случаев так и происходит. Сигнал от тега the_content, пройдя по цепочке, возвращается к нему с указаниями вывести анонс по линии обрыва и все! Основная масса блогов работает именно по такой схеме.

Но развязка может быть совершенно иной, если в игру вступит еще один секретный агент, который подчиняется напрямую «Маме» и скрывается под псевдонимом — тег noteaser.

Уверен! Многие веб-мастера даже не слышали о существовании такого тега, но он есть и призван помогать тегу more в выполнении очень интересного задания, а именно — выводить уникальные анонсы записей.

Давайте я не буду тянуть и расскажу как это реализовать, тем более, что сложного в этом, ну вообще, ничего нет.

Возвращаемся к тому моменту, когда я написал статью и в нужном месте поставил тег more. Итак, для того чтобы анонс был уникальным, надо к тегу more добавить тег noteaser.

В HTML режиме редактора WordPress, сия конструкция должна выглядеть так:


Что происходит в этом случаи? Как тег noteaser делает анонс уникальным?

Дело в том, что тег more выводит анонс по линии обрыва, а тег noteaser запрещает тексту анонса возвращаться обратно в статью. Т.е, участок текста, что попал в анонс становиться на 100% уникальным, так как он уже не будет повторятся на странице с записью. Вот такая история получается!

На заметку! В некоторых случаях, для вывода анонсов записей, используется еще один тег — the_content_rss.

В фалах шаблона он выглядит так:

<?php the_content_rss(); ?>

Который работает по схожему принципу с тегом the_content, но в отличии от последнего, в качестве обработчика сигнала использует фильтр apply_filters(), что находится по адресу /wp-includes/plugin.php.

Применяется тег the_content_rss в основном для вывода RSS ленты, но в некоторых шаблонах используется для вывода анонсов. Наглядный пример работы тега the_content_rss я приводил в статье, о способах вывода миниатюр на главной странице.

Наверное пришло время рассказать, какими возможностями обладает файл functions.php и как он может помочь нам с выводом анонсов статей.

Как настроить вывод анонсов в файле functions.php

Итак, если в Вашем шаблоне за вывод анонсов отвечает тег the_excerpt, то в файле functions.php для него можно прописать корректировочную функцию, в которой указать желаемое количество слов до обрыва записи.

Выглядеть функция будет следующим образом:

function mayak_segment_length($length) {  	return 20;  }  add_filter('excerpt_length', 'mayak_segment_length');

Где цифра 20 — количество слов до обрыва.

Также можно изменить пресловутую конструкцию […], которую тег the_excerpt создает в конце анонса и заменить ее на что-то более симпатичное, например на французскую кавычку,

Для этого в файл functions.php вставляем такую функцию:

function mayak_segment_more($more) {  	return ' &raquo;';  }  add_filter('excerpt_more', 'mayak_segment_more');

Теперь вместо […] появится такой символ »

Можно использовать любые символы из таблицы Юникода на Ваше усмотрение.

Давайте пойдем еще дальше и заставим тег the_excerpt выводит в анонсе ссылку с анкором «Читать полностью »»:

function mayak_segment_more($more) {   global $post;  	return '<a href="'. get_permalink($post->ID) . '">Читать полностью »</a>';  }  add_filter('excerpt_more', 'mayak_segment_more');

Ну а теперь кульминация поста!

Как подружить тег the_excerpt и тег more

Для того, чтобы тег the_excerpt наконец признал существование тега more и учитывал его при обрыве контента, а тег море стал видеть цитаты, надо в файл functions.php надо вставить следующую функцию:

function mayak_segment_length ($length) {   return 100;   }   function mayak_segment_more($more) {   return '...';   }     function mayak_announcement($length_callback='', $more_callback='') {   global $post;   add_filter('excerpt_length', $length_callback);   add_filter('excerpt_more', $more_callback);   $output = get_the_excerpt();   $output = apply_filters('wptexturize', $output);   $output = apply_filters('convert_chars', $output);   $output = ''.$output.'';   echo $output;   }

Затем, открываем файлы шаблона, где прописаны теги the_excerpt или the_content и в место них вставляем такой код:

<?php mayak_announcement(' mayak_segment_length', 'mayak_segment_more' ); ?>  <a href="<?php the_permalink(); ?>"><span class="mayak-more">Читать полностью »</span></a>

Далее, открываем файл style.css и вписываем в него стили для класса mayak-more. Данный класс я специально задал для анкора «Читать полностью», чтобы управлять его внешним видом и позиционированием на странице:

.mayak-more {   cursor: pointer; /* курсор в виде руки */  	padding: 8px; /* внутренние отступы */  	float: right; /* положение на странице справа*/  	margin-right: 15px; /* внешний отступ справа */  	color:#2D89A7; /* цвет */  	font-size: 14px; /* размер шрифта */  	font-weight: bold; /* жирность */  }

И все же, чего мы добьемся померив эти два тега?

1. Как я уже сказал, функция the_excerpt() будет учитывать тег more Т.е. при написании статьи мы можем по прежнему вставлять тег more в нужное место и обрыв статьи будет происходить ровно по этой строчке или абзацу.

2. Функция the_excerpt() включится в том случаи, если до тега more будет меньше слов, чем указанно в настройках функции:

function mayak_segment_length(($length) {   return 100;   }

Из этого следует, что в случаи, если мы забудем поставить тег more, то обрыв записи все равно произойдет, но уже по сигналу тега the_excerpt и при этом останется ссылка «Читать полностью». Вот видите, как два неприменимых тега могут работать вместе и при этом подстраховывая друг друга.

3. Для вывода анонсов мы можем использовать цитаты.

P.S. Анонсы статей являются важной составляющей продвижения любого проекта на WordPress и важно знать, как правильно использовать теги more и the_excerpt

Да встречи!

С уважением, Виталий Кириллов

Здравствуйте, уважаемые читатели блога! Перехожу к теме оптимизации и продвижения сайта и сегодня пост будет посвящен тому, как можно настроить WordPress блог таким образом, чтобы корректно вывести на страницу рубрик (категорий) анонсы статей с помощью функции the excerpt таким образом, чтобы избежать даже частичных дублей, этой головной боли всех вебмастеров.


Кроме того, любое время от времени проводимое изменение юзабилити (usability) сайта, в том числе редактирование дизайна, способно улучшить показатели так называемых поведенческих факторов ранжирования. Читатели, даже порой сами того не замечая, задерживаются дольше обычного на ресурсе, если появляется что-то новенькое, особенно если это что-то эксклюзивное, ну а если это помогает SEO оптимизации проекта, то, как говорится, сам бог велел.

Итак, для того, чтобы предотвратить появление неполных дублей на страницах рубрик (категорий) блога WordPress, нужно воспользоваться функцией the excerpt. В общем случае шаблон темы устроен изначально таким образом, что на главную страницу и страницы рубрик выводятся анонсы статей с помощью тега more, который обрезает тексты постов в нужном месте. Таким образом сделан шаг на пути к неповторимости контента страниц (кстати, ознакомьтесь, как проверить текст на уникальность в онлайн сервисах).

Я боюсь предположить, что у кого-то не так. Неужели есть те, на сайтах которых выводятся на главную и web-страницы категорий полностью статьи? Тогда вам надо бить тревогу и сразу бегом ликвидировать это безобразие, поскольку такие вебстраницы представляют собой полные дубли , на которые поисковые системы смотрят весьма враждебно. Отличная индексация сайта в этом случае будет недостижима.

Значит, проведу небольшой ликбез для совсем начинающих, кто еще не озаботился обрезать свои творения и выводить вместо полных статей их отрывки (анонсы). Для того, чтобы осуществить это действие, в редакторе админ панели сайта WordPress там, где пишите статьи, находится по умолчанию кнопка «more». Отмечаете курсором то место, в котором хотите обрезать пост и нажимаете ее.


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

Ну-с, теперь переходим непосредственно к теме. Для начала хочу отметить, что, по моему мнению, в правильно составленном файле robots.txt для WordPress рубрики (категории) следует оставлять открытыми, в то время как страницы с тегами (метками) надо закрывать от индексации и использовать их только для удобства читателей.

Это не значит, что это догма и ей нужно следовать неукоснительно. Некоторые делают наоборот на вполне успешных проектах, однако ни в коем случае не открывайте и рубрики, и web-страницы с метками для индексации во избежание лишнего дублирования, это я могу сказать совершенно точно. В любом случае, чтобы избежать неполных дублей, которые дают текст анонса вместе с картинкой, воспользуемся богатым функционалом Вордпресс, который предлагает в этом смысле широкие возможности.

Оптимизация WordPress для улучшения его продвижения

Получается, что практически любые действия, совершаемые вами для повышения функциональности и удобства пользования вашим проектом, в конечном счете могут довольно существенно повлиять на его позиции в выдачах Яндекса или Гугла, что приведет к увеличению посещаемости за счет трафика с поисковиков («большой брат» следит за нами). Да и сами пользователи, оценив ваши труды, будут чаще заходить на огонек.

Сегодня я хочу поговорить про оптимальную структуру Html тегов заголовков, которые используются в вашей теме оформления и про то, какой способ вывода статей в рубриках (категориях), архивах тегов или же временных архивах будет наиболее приемлемым именно для вашего блога. Эти настройки, пожалуй, не являются первостепенными и многими попросту игнорируются, что, на мой взгляд, не правильно.

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

Вам, наверное, известно, что по общепринятому мнению заголовок статьи должен быть заключен в тег H1 и, что немаловажно, он должен быть «голым», т.е. его Html тег не должен включать в себя различные CSS классы или ID, а так же не должен быть и ссылкой, что довольно часто встречается в WordPress блогах.

В этой статье мы рассмотрим, как довольно просто и наглядно можно увидеть заголовки всех уровней, которые у вас используются, а так же рассмотрим, как можно устранить замеченные несоответствия в настройках вашей темы. Для многих пользователей Вордпресса эти вопросы и их решения уже не вызывают каких-либо сложностей, но для начинающих блогеров, думаю, материал будет интересен (я и сам в первую очередь озаботился именно этими вопросами).

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

Делается это во избежании замусоривания индекса неполными дублями контента. Ведь поисковики могут обидиться и понизить ваш ресурс в выдаче, тем самым уменьшив трафик и общую посещаемость блога. А ведь нам совсем не хочется этого, поэтому аккуратненько ставим себе незаменимый SEO плагин под названием All in One SEO Pack и внимательно читаем тут инструкцию по его настройке.

Именно All in One SEO Pack позволит вам сделать самые основные и судьбоносные SEO настройки WordPress, позволяющие существенно улучшить внутреннюю оптимизацию вашего блога и тем самым заслужить расположение поисковиков (они во всяком случае от вас не отвернутся).

Ну, а если вы при написании каждой новой статьи будете еще и добавлять уникальное и релевантное контенту содержимое мета тегов Title и Description (окно с этими полями добавит упомянутый плагин в админку), то и вообще у вас все здорово будет в плане внутренней поисковой оптимизации блога.

The excerpt wordpress

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

Настройка правильных заголовков H1, H2, H3 в Вордпрессе

Есть очень удобный в использовании плагин для браузера Firefox под названием Web Developer, описанный здесь. Он может сильно облегчить вам работу, ибо включает в себя массу инструментов на все случаи жизни верстальщика.

Есть в Web Developer так же возможность выделить все заголовки на открытой в браузере вебстранице с указанием их уровня. Для этого вам, после установки плагина, нужно будет найти на его панели пункты «Контуры» — «Контуры заголовков», и если в это время у вас была открыта страничка вашего же блога в браузере, то вы наглядно увидите в каком месте вашей темы какие уровни заголовков используются.

The excerpt wordpress

У меня, как вы можете видеть, все не совсем так, как я вам только что рассказывал. H1 у меня является одинаковым для всех страниц, а заголовки статей заключены в H2. Но сам тег H2 у меня «голый» и не является ссылкой, хотя изначально был ею, что довольно часто встречается во многих темах для Вордпресса.

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

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

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

Все, этого будет достаточно для попадания в топ по НЧ. Да, конечно же, трафик по ним будет не велик, но ведь и статей у вас на проекте будет не одна штука.

Так вот, все, что я говорил про настройку заголовков в теме WordPress, в первую очередь относится к страницам со статьями. Именно для них нам нужно будет убрать ссылку с заголовка статьи и сделать его H1 в случае, если это не так.

Настроить уровни довольно просто. Для этого вам потребуется подключиться по FTP к блогу и открыть на редактирование файл из темы оформления WordPress (здесь подробно описано их устройство, так что в случае непоняток не примените ознакомиться), отвечающий за формирование страниц со статьями — single.php, который вы сможете найти в каталоге:

/wp-content/themes/папка с темой/

В оригинальном single.php используемом мною были прописаны для заголовков материалов теги H3, что было совсем не хорошо для оптимизации моего блога. Кроме этого, внутри H3 был еще прописан код ссылки, ведущей на эту же самую статью:

<h3 class="title" id="post-<?php the_ID(); ?>"><a href="<?php echo get_permalink() ?>" rel="bookmark" title="Постоянная ссылка: <?php the_title(); ?>">  <?php the_title(); ?>  </a></h3>

Было достаточно всего лишь заменить H3 на H1 и убрать Html код гиперссылки, описанный тут, и получилось все как надо:

<h2>  <?php the_title(); ?>  </h2>

Не смотрите, что у меня стоят теги H2 вместо разрекламированных H1 — это я просто ступил в самом начале работы над своим блогом, а исправлять сейчас сложившуюся ситуацию стремно, ибо не знаю как отреагируют на это поисковые системы и в особенности Google, т.к. очень уж он капризно ведет себя в последнее время.

В общем, девиз SEO настроек темы WordPress таков — долой ссылки из заголовка статьи и да здравствует H1 в заголовках. Ура, товарищи. Давайте теперь плавно перейдем ко второй теме сегодняшней статьи — настройка вывода категорий.

Просмотров: 3 406

Функция the_excerpt, позволяет в цикле выводить определенную часть содержимого заметок блога на движке WordPress. Но, как правило, средства WordPress позволяют с ее помощью выводить, какое-то определенное число символов (25, 33, и.т.д.)

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

Привожу здесь решение, которое сам использовал для решения этой задачи:

В файл functions.php необходимо внести следующий код:

function excerpt_read_more_link($output) {  global $post;  $output = preg_replace('/(.*?[?!.](?=s|$)).*/', '\1', $output);  if(mb_strlen($output) > 150) {  $output = mb_substr($output, 0, 150);  }  return $output . '<br><a href="'. get_permalink($post->ID) . '"> Читать полностью...</a>';  }  add_filter('the_excerpt', 'excerpt_read_more_link');

Выбор первого предложения происходит с помощью регулярного выражения:

$output = preg_replace('/(.*?[?!.](?=s|$)).*/', '\1', $output);


if(mb_strlen($output) > 150) {  $output = mb_substr($output, 0, 150);  }

Отвечает за то, чтобы обрезать слишком длинные предложения, если количество символов в этом предложении больше 150.

Надеюсь, что этот код сэкономит вам время на решении подобных задач. Успехов.

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

Подробнее здесь.

Научитесь делать это самостоятельно и НЕ платите сторонним разработчикам.

Этот пост больше предназначен для тех, кто любит самостоятельно ковырять шаблоны для WordPress блога.

Функция the_excerpt() отвечает за вывод сокращенной версии поста, например сокращенный вывод постов, чаще всего настраивают на страницах архивов, категорий или тегов.

Изначально эта функция показывает первые 55 слов из записи, после чего пишет […] для дальнейшего прочтения записи, Вам необходимо щелкнуть на заголовке записи.

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

Практически в любом случае, нужно просто добавить кусочек кода в файл functions.php в папке с шаблоном блога.

Регулируем количество слов:

function new_excerpt_length($length) {
return 20;
add_filter('excerpt_length', 'new_excerpt_length');

В данном случае цифрой 20 задается количество слов, которое будет выводить функция the_excerpt ().

Или другой вариант:

В файл functions.php WordPress-темы необходимо вставить следующий код:

function do_excerpt($string, $word_limit) {
$words = explode(' ', $string, ($word_limit + 1));
if (count($words) > $word_limit)
echo implode(' ', $words).' ...';

После этого в то место шаблона, где нужно отобразить анонсы постов, вставить вот такой код:

<?php do_excerpt(get_the_excerpt(), 50); ?>

Здесь цифра 50 — это количество слов, которым мы хотим ограничить длину анонса.

Играем с троеточием:

Для блогов которые работают на WordPress > 2.9 код выглядит вот так:

function new_excerpt_more($more) {
return '[.....]';
add_filter('excerpt_more', 'new_excerpt_more');

Попробуйте изменить […..]

Для блогов на WordPress < 2.8 этот же код будет выглядеть вот так:

function new_excerpt_more($excerpt) {
return str_replace('[...]', '...', $excerpt);
add_filter('wp_trim_excerpt', 'new_excerpt_more');

В данном случае функцией str_replace меняется «[…]» на «…» собственно вместо обычного троеточия, можно поставить что угодно.

Как нам известно, функция эта выводит краткую версию поста, но не выводит ссылку типа «Читать далее…», для этого воспользуемся следующим хаком:

function new_excerpt_more($more) {
return '<a href="'. get_permalink($post->ID) . '">' . ' читать далее ..' . '</a>';
add_filter('excerpt_more', 'new_excerpt_more');

Не забываем, что этот код добавляется в файл functions.php в папке шаблона WordPress блога, если такого файла не существует, создайте его самостоятельно.


<?php the_excerpt()?>

Данная функция выводить тизер — часть текста, вне зависимости используете ли Вы тег more или нет. Это очень удобно, У Вас во всех тизерах одинаковое количество слов и все записи выглядят одинаково на главной.

Чтобы выставить количество слов в тизере смотрите этот УРОК

Данным способом пользуюсь и я. Мне было лень в ручную отмечать и примерно угадывать какой величины сделать тизер благодаря тегу more .

Но в данной функции есть маленький нюанс. В конце текста по умолчанию ставится вот это […] Многим это не нравится, для этого и применяем следующий не хитрый способ.
Открываем в папке Вашей темы файл functions.php и допишем в него следующий код:

  function new_excerpt_more($more) {  	 global $post;  	return '';  }  add_filter('excerpt_more', 'new_excerpt_more');  

Данная функция не убирает три точи, а просто заменяет на то что вы укажите. В третьей строке return »; между скобок ‘Сюда вставляем что хотим’. В примере там ничего нет, поэтому три точки просто пропадут.

Но если туда вставить например ссылку на запись, то мы решим вторую задачу — это кнопка Читать дальше

Что надо сделать для этого?

Все просто добавляем в скобки такой вот код:

<a class="more_link" href="'. get_permalink($post->ID) . '">Читать дальше</a>

В результате чего получим вот такой вот код в целом:

  function new_excerpt_more($more) {  	 global $post;  	return ' <a class="more_link" href="'. get_permalink($post->ID) . '">Читать дальше</a>';  }  add_filter('excerpt_more', 'new_excerpt_more');  

Теперь после текста сразу будет кнопка Читать дальше.

Если же кнопку надо разместить как-то по особенному или придать ей стилей, то в коде видно что мы присвоили ссылке класс more_link. Так что просто задайте стили и настройте тот вид, который Вас устроит.

На этом все, спасибо за внимание ?

We already shared how to display post excerpts in WordPress themes. By default WordPress shows only 55 words as an excerpt. This post is to discuss, how to change the length of post excerpts in WordPress and what are the advantages of doing so.

change post excerpt length in wordpress

Why you need to change the default  length of excerpts?

Default length is 55 words but sometimes 55 words aren’t enough to give a meaningful gist to the content. In such scenarios, you should change it to give a better idea to the readers about the post’s content. There are two popular ways to do it as explained below:

There are two methods to change the except length:

  1. Manual method
  2. Using WordPress plugin

Manual method

Open the theme’s functions.php file and add the below code. It would change the default limit of 55 words to the new words limit of 120.

/* New excerpt length of 120 words*/ function my_excerpt_length($length) { return 120; } add_filter('excerpt_length', 'my_excerpt_length');

If you are not ok with the limit of 120, you can change to to any integer number you like. For example, if you want the excerpt length of 150 words rather than 120 then the above code can be re-written as:

/* Changed excerpt length to 150 words*/ function my_excerpt_length($length) { return 150; } add_filter('excerpt_length', 'my_excerpt_length');

Using WordPress plugin

If you do not prefer to edit the theme’s files then you always have a option to use the plugins, which does the job for you. For changing the excerpt length we have a plugin called advanced excerpt, which provides the feature to customize the excerpt length along with few more advanced features, which makes your post excerpts look attractive. Download advanced excerpt plugin and install it.


It is always good to change the default excerpt length to make the excerpt somewhat meaningful so that the users can understand the content just by looking at the excerpt.  We always prefer to do the things without using plugins but we have provided both the methods so that even if you are not comfortable with the coding stuff, you would be able to do the things by using a plugin.

Let us know if you need any further help on this. Do let us know if you have any other method of changing the excerpt length in WordPress, share your thoughts via comments.

You May Also Like

About the Author: admind

Добавить комментарий

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

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.