Как сделать, чтобы шаблон категории отображал полные записи вместо частичных?

19 сент. 2010 г., 04:28:39
Просмотры: 15.6K
Голосов: 1

Я использую WordPress 3.0.1 с темой Twenty Ten. Я пытаюсь изменить способ отображения записей в представлении категории (например, по адресу типа mywebsite.com/category/mycategory). В настоящее время записи в категории показывают только первую часть поста, но я хочу изменить это, чтобы отображался весь текст.

В файле шаблона категории (category.php) есть несколько строк кода, которые, похоже, отвечают за генерацию данных категории:

/* Запускаем цикл для страницы категории, чтобы вывести записи.
 * Если вы хотите переопределить это в дочерней теме, то включите файл
 * под названием loop-category.php, и он будет использоваться вместо этого.
 */
get_template_part( 'loop', 'category' );
?>

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

Из комментариев я понял, что мне нужно создать файл loop-category.php с моей собственной реализацией, но я не знаю, какой код нужно поместить в этот файл. Что мне нужно добавить в loop-category.php, чтобы в категориях отображались полные записи блога?

ПРИМЕЧАНИЕ: Хотя я использую WordPress уже довольно давно, это мое первое погружение в кастомизацию тем. Любая помощь будет очень ценной.

1
Комментарии

у кого-то есть хороший опыт работы с выбором категорий в PHP? panabar@yahoo.co.uk yahoo messenger свяжитесь со мной

User User
23 мар. 2014 г. 02:53:17
Все ответы на вопрос 2
3

@Ben,

Если вы посмотрите на строку 132 файла loop.php в теме Twentyten, вы найдёте условное выражение, которое указывает WordPress отображать the_excerpt только в архивах категорий. Сразу после <?php else : ?> находится код, который отвечает за отображение всех записей, которые не находятся на странице архива, в категории asides или в категории gallery. (Категории asides и gallery задаются в начале loop.php)

<?php if ( is_archive() || is_search() ) : // Отображаем краткое содержание только для архивов и поиска. ?>
            <div class="entry-summary">
                <?php the_excerpt(); ?>
            </div><!-- .entry-summary -->
    <?php else : ?>
            <div class="entry-content">
                <?php the_content( __( 'Читать далее <span class="meta-nav">&rarr;</span>', 'twentyten' ) ); ?>
                <?php wp_link_pages( array( 'before' => '<div class="page-link">' . __( 'Страницы:', 'twentyten' ), 'after' => '</div>' ) ); ?>
            </div><!-- .entry-content -->
    <?php endif; ?>

В вашем файле loop-category.php проще всего скопировать и вставить весь файл loop.php и изменить приведённый выше участок кода на:

<?php if ( is_search() ) : // Отображаем краткое содержание только для поиска. ?>
            <div class="entry-summary">
                <?php the_excerpt(); ?>
            </div><!-- .entry-summary -->
    <?php else : ?>
            <div class="entry-content">
                <?php the_content( __( 'Читать далее <span class="meta-nav">&rarr;</span>', 'twentyten' ) ); ?>
                <?php wp_link_pages( array( 'before' => '<div class="page-link">' . __( 'Страницы:', 'twentyten' ), 'after' => '</div>' ) ); ?>
            </div><!-- .entry-content -->
    <?php endif; ?>

Обратите внимание, что мы просто удалили is_archive из условного выражения, и теперь архивы категорий будут отображаться с помощью кода после else, который содержит the_content вместо the_excerpt.

19 сент. 2010 г. 05:33:28
Комментарии

Это действительно круто; всё сработало идеально! Сначала я не понял, что нужно скопировать всё содержимое loop.php в loop-category.php. Кажется, я начинаю понимать, как работают дочерние темы, и это довольно интересная концепция.

Ben McCormack Ben McCormack
19 сент. 2010 г. 06:32:05

Мы могли бы просто изменить loop.php, но эти изменения перезаписались бы при следующем обновлении.

Chris_O Chris_O
19 сент. 2010 г. 07:14:33

Можно было бы так же кастомизировать loop.php — файлы в дочерней теме не перезаписываются при обновлении родительской темы (в этом, собственно, и смысл :). Кроме того, если использовать loop-category.php, то условный оператор if ( is_search() )... можно вообще убрать, потому что этот цикл будет вызываться только на страницах категорий.

Rarst Rarst
19 сент. 2010 г. 11:31:32
0

Я просто удалил второе вхождение "is_archive() ||" из файла loop.php, и теперь полные записи отображаются на страницах категорий (category/catslug). Мне не пришлось создавать файл loop-category.php. Я бы не смог это сделать без инструкций Chris_O. Спасибо, Крис!!

1 дек. 2011 г. 08:44:17