Какие изменения нужно ввести в тему WordPress Diary/Notebook, чтоб довести до ума идею ежедневника на этой теме.
О том, как выводить краткое содержание поста в ВордПресс уже достаточно подробно было здесь
В теме WordPress Diary/Notebook, по сути, весь код вывода сосредоточен в одном файле основного шаблона — index.php
И так как это снова задача реализации ежедневника, поэтому пришлось менять еще и порядок вывода записей. Как вывести записи в обратном порядке — тоже весьма подробно здесь
В единственном файле основного шаблона для вывода различных лент: архивов, категорий, авторов, тегов просто стоит проверка, что за тип ленты, и там уже соответствующий вывод данных. Для ежедневника нас интересуют только категории и теги, поэтому для начала будем делать выборку постов в обратном порядке:
Для категорий вместо
<?php if(is_category()) { ?>
<div id="archive-title">
Поставить так:
<?php if(is_category()) { ?>
<?php query_posts($query_string . "&order=ASC"); ?>
<div id="archive-title">
Для тегов (меток) вместо
<?php if(is_tag()) { ?>
<div id="archive-title">
Поставить так:
<?php if(is_tag()) { ?>
<?php query_posts($query_string . "&order=ASC"); ?>
<div id="archive-title">
Разобравшись с порядком, немного ниже есть вывод самого поста. И изначально это выглядит так:
<section class="postText">
<?php the_content('Read more »'); ?>
</section>
НО так как у меня ни в одном посте нет тега «Далее» (тега — в смысле HTML-разметки, оно же MORE, а не метки и ключевого слова), то во всех лентах посты выводятся целиком.
Мне хотелось бы для категорий (месяцы) выводить посты в ленте кратко, но для отдельной метки, тега — полное содержание поста в ленте.
Поэтому добавим небольшую проверку:
<section class="postText">
<?php if(is_category()) { ?>
<?php $content = get_the_content();
$trimmed_content = wp_trim_words( $content, 40, '<a href="'. get_permalink() .'"> <b style="color:red">...Далее</b></a>' );
echo $trimmed_content; ?>
<?php } else {
the_content('Read more »'); } ?>
</section>
Здесь получается, что если это категория…
мы берем каждый пост $content = get_the_content();
обрезаем функцией wp_trim_words на 40 слов и добавляем в конце ссылочку «Далее» — красненькую, чтоб было видно) И не забываем ее вывести на экран. Вот так:
$trimmed_content = wp_trim_words( $content, 40, '<a href="'. get_permalink() .'"> <b style="color:red">...Далее</b></a>' );
echo $trimmed_content;
ВОТ и все!
P.S. Особенно приятно делать это на два различных ежедневника сразу, реализованных на WordPress-мультисайт. Я меняла файл шаблона только один раз в консоли управления сетью в редакторе тем.