WordPress анонсы под контролем.

9
2249

Причины к написанию данной статьи были весьма тривиальны. В моей текущей теме вывод анонсов осуществлялся таким образом, который меня не устраивал. Конкретней – текст обрезался вовсе не там где я этого желал. После решения возникшей проблемы  – принял решение осветить сей момент и пробежаться в общем по данной теме. А именно — каким-же образом устроены в WordPress анонсы.

По сути , в базовом движке, анонсы в WP имеют два вида:

  1. Автоматическая обрезка статьи. Попросту задано количество символов анонса.
  2. Вывод полной статьи.

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

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

Где же копать и как править ?

Итак как же они выглядят в коде, эти самые анонсы ? Отвечаю ^_^

the_content() — это полная запись

the_excerpt () – это вывод анонсов на автомате.

Искать сей заветный текст следует начать с файла index.php .

Соответственно поменяв одно значения на другое вы измените вывод анонсов на желаемый.

В любом случае, всегда делайте бэкап файлов! Это самое главное.

Поменяв здесь значение Вы добьётесь нужного Вам результата для главной страницы. Если же после этих действий посмотреть какую-то рубрику отдельно, вы скорей всего заметите, что “здесь” всё по старому. За изменения конкретно взятой рубрики файл index.php не в ответе.

У меня это файл archive.php, у Вас функция вывода  анонсов может находиться в другом файле. Бывают несколько специфичные темы, поэтому возможно придётся поискать.

Вывод анонсов посредством the_excerpt ().

По умолчанию первые 55 символов попадают в виде анонса на главную страницу и после следует обрезка в виде троеточия […].

Чтобы увеличить количество символов анонса.

Нужно добавить в файл functions.php используемой темы —

[codesyntax lang="php"]
<?php
function new_excerpt_length($length) {
	return 55;
}
add_filter('excerpt_length', 'new_excerpt_length');
?>

[/codesyntax]

Где 55 следует заменить на нужное число символов выводимых в анонсе.

Чтобы заменить троеточие […] в анонсе.

Поменяем к примеру три точки на символ »»».

Также снова потревожим файл functions.php и добавим:

[codesyntax lang="php"]
function new_excerpt_more($excerpt) {
	return str_replace('[...]', '»»»', $excerpt); }
add_filter('wp_trim_excerpt', 'new_excerpt_more');

[/codesyntax]

Заменяем троеточие[…] на ссылку “читать далее”.

Для этого по аналогии с предыдущими пунктами следует добавить код:

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

[/codesyntax]

Вывод анонсов посредством the_content().

При использования заветной кнопочки редактора wordpress или редактора блогов Windows Live (подробнее здесь), more —

Wordpress анонсы.Wordpress анонсы

обрезка задаётся вручную, ровно там где этого пожелает автор. Этот вывод анонсов мне более сипатиШен. =)

 

Переводим <!—more—>.

Следующий пункт это заветные слова под анонсом записи – “читать далее” или что-то вроде.

Существует несколько способов перевода стандартной надписи.

1. Постоянная надпись.

В файле где меняли функции the_content() и the_excerpt () , немного видоизменяем их вид

[codesyntax lang="php"]
<?php the_content('Читать далее...'); ?>

[/codesyntax]

Теперь именно эта надпись будет у Вас в блоге под анонсом.

2.Постоянная надпись. Вариант 2.

Если по каким-то причинам у Вас с первым вариантом что-то не получилось можете можете попробовать следующее.

Добавить в файл functions.php.

[codesyntax lang="php"]
function my_more_link($more_link, $more_link_text) {
    return str_replace($more_link_text, '... читать далее', $more_link);
}
add_filter('the_content_more_link', 'my_more_link', 10, 2);

[/codesyntax]

Результат по сути тот-же.

3. Меняем надпись для каждого поста индивидуально.

Тут вообще всё просто, стандартный тэг

[codesyntax lang="php"]
<!--more-->

[/codesyntax]

дополняем подобным образом

[codesyntax lang="php"]
<!--more Вписываем нужный текст-->

[/codesyntax]

Это наверно самый лучший подход к отображению анонсов wordpress. Мы и от шаблонности избавляемся, и, при правильном подходе, получаем ссылку с нужным анкором к каждому отдельно взятому анонсу .  Но, нужно каждый раз лезть в исходный код статьи.

А как вы оформляете свои статьи?  Делитесь секретами Улыбка.

Спасибо за внимание. С уважением OlegS9.^_^

9 КОММЕНТАРИИ

  1. А я вообще не пользуюсь этим тегом :)
    Зачем? Настроил вывод последних 3-ех статей на главной и все)

    А если кто-то волнуется по поводу дублирования контента в пределах домена (сама статья, навигация на главной и рубрики) — делайте, как я.

    Я вообще закрыл в роботс от индексации все, кроме отдельных страниц и отдельных статей. В индексе только полезные страницы, хлам не присутствует)

  2. Пользуюсь тегом more из стандартной таблицы при создании новой записи.Не подскажете,а как там же в таблице дать отбой этому тегу?И почему извлекаю статью из рубрики(сокращенную).Пытаюсь развернуть,а мне выдает просто все последние записи(еще вдобавок и не развернутые).Кодами пока не научился пользоваться.Будет возможность,подскажите пожалуйста.

    • Удалить разрыв страницы можно в визуальном режиме — выделение мышью + кнопка Del.
      Либо перейдите в html режим и удалите конкретно эти символы один в один — [codesyntax lang=»php»] < !–more–>[/codesyntax]

  3. Здравствуйте.А вот у меня другая проблема…У меня установлен плагин PageNavi,пытаюсь уже 2 месяца вывести анонсы статей с постраничной навигацией на главную-не получается!Выводятся все,а мне надо 5,в рубриках,метках все нормально,а вот с главной проблемы.Может подскажете,как быть?

  4. Спасибо Огромное! В теме забыли сделать одинаково вывод постов на главной и в странице с блогом.
    Получалось что в блоге красиво все подрезает, все посты одинаковые красивые. А на главной когда вывод постов, там на всю длину, а если вставить тег он то резал, но не так…

    Вообщем заменил всего одно слово в теме файл index.php

    Было

    Сделал

ОСТАВЬТЕ ОТВЕТ