По умолчанию WordPress предлагает выводит записи на главной и в RSS либо полностью, либо автоматически созданным анонсом с многоточием в конце. Первый - приводит к многочисленным дублям. А второй (который можно включить и специальной функцией feedburner для отдачи в фид) превращает записи в нечто ужасное и неудобоваримое в плане читабельности.
Неплохое решение - использование уже привычного ката, под который можно прятать все то, что надо скрыть внутри поста. При этом сам анонс будет хорошо отформатирован, понятен, и можно будет легко добавлять текст тизера и ссылки на блог.
По умолчанию это срабатывает при использовании псевдотега <!--more-->
в тексте поста в нужном месте, а чтобы избавиться от унылых “дальше”, можно легко вносить в анкор ката свой текст - вписывая его прямо перед закрывающей последовательностью. Например, так: <!--moreТысяча ссылок-->
, благо движок с помощью нехитрых регэкспов это предусматривает. Все это можно делать, конечно, только в невизуальном редакторе. Все равно он удобней.
В результате в RSS-ленту будут отдаваться полные посты. И в случае кросспостинга есть большая вероятность того, что в ЖЖ или лиру уйдет полный текст поста. Тут даже поисковик может задуматься о том, кто первоисточник - никому не известный стэндэлон-блог или же Живой Журнал. А если дальнейший кросспост по сервисам идет не с RSS блога, а из ЖЖ, то полный текст разойдется вообще по всем Интернетам.
Исправлений в коде WordPress будет минимум (правда, обновляться уже нежелательно), точнее все, что потребуется - одно условное выражение в соответствующем месте.
Залазим в файл post-template.php и находим вот такой код в функции get_the_content():
if ($more){
$output .= '<span id="more-'.$id.'"></span>'.$content[1];
И правим его до такого состояния:
if ($more && !is_feed()){
$output .= '<span id="more-'.$id.'"></span>'.$content[1];
В настройках (”Чтение”), конечно же, устанавливаем отдачу “Полный текст”. Вуаля - в фиде будет только то, что нам надо.
Однако беда в том, что плагин ljxp (в русификации Арсения Иванова, да и оригинал тоже) не захочет учитывать наши изменения. Точнее, если поставить в настройках “до тега more” он попробует работать, но заткнется, если вы попробуете использовать свой анкор ката. Все потому, что создатель не учел регэкспы.
Его код:
if(strpos($post->post_content, "<!--more-->") === false){
$the_event .= apply_filters('the_content', $post->post_content);
}
else{
$content = explode("<!--more-->", $post->post_content, 2);
...
Должен превратиться в:
if(preg_match('/<!--more(.*?)?-->/', $post->post_content, $matches)){
$content = explode($matches[0], $post->post_content, 2);
...
}
else{
$the_event .= apply_filters('the_content', $post->post_content);
}
Ну и, конечно, до кучи надо, чтобы в ЖЖ выводился и сам анкор ката, введущий на ваш блог, вместо унылого “Read the rest of this entry”.
if (!empty($matches[1]))
$more_link_text = strip_tags(wp_kses_no_null(trim($matches[1])));
...
$the_event .= sprintf('<p><a href="%s#more-%s">', get_permalink($post_id), $post_id) .
__($more_link_text.' »', LJXP_DOMAIN) .
'</a></p>';
Все, пока блог не вырастет до того состояния, что можно будет отказаться от кросспоста - будет прекрасно работать.
Меню сайта
![]() Как убрать многоточие в анонсе поста на WordPress |