Как отображать только заголовки постов на страницах категорий

Вопрос или проблема

Привет, мне нужно отобразить только заголовки постов, пожалуйста, помогите. Вот мой код archive.php

<?php global $theme; get_header(); ?>

<div id="main">

    <?php $theme->hook('main_before'); ?>

    <div id="content">

         <?php $theme->hook('content_before'); ?>

          <h2 class="page-title"><?php

          /* Если это дневной архив */
          if (is_day()) {
               printf( __( 'Дневные архивы: <span>%s</span>', 'themater' ), get_the_date() );

          /* Если это месячный архив */
          } elseif (is_month()) {
              printf( __( 'Месячные архивы: <span>%s</span>', 'themater' ), get_the_date('F Y') );

          /* Если это годовой архив */
          } elseif (is_year()) {
              printf( __( 'Годовые архивы: <span>%s</span>', 'themater' ), get_the_date('Y') );

          /* Если это общий архив */
          } else {
              _e( 'Архив блога', 'themater' );
          }
          ?>
          </h2>

        <?php
        if (have_posts()) : while (have_posts()) : the_post();

            /**
            * Будет использовано стандартное форматирование постов из файла post.php.
            * Если вы хотите настроить форматирование постов для ваших архивных страниц:
            *
            * - Создайте новый файл: post-archive.php
            * - Скопируйте/Вставьте содержимое из post.php в post-archive.php
            * - Отредактируйте и настройте файл post-archive.php под ваши нужды.
            *
            * Узнайте больше о функции get_template_part(): http://codex.wordpress.org/Function_Reference/get_template_part
            */

            get_template_part('post', 'archive');
        endwhile;

        else :
            get_template_part('post', 'noresults');
        endif;

        get_template_part('navigation');
    ?>

    <?php $theme->hook('content_after'); ?>

    </div><!-- #content -->

    <?php get_sidebars(); ?>

    <?php $theme->hook('main_after'); ?>

</div><!-- #main -->

<?php get_footer(); ?>

Вот файл post.php

<?php global $theme; ?>

<div <?php post_class('post clearfix'); ?> id="post-<?php the_ID(); ?>">

    <div class="postmeta-primary">

        <span class="meta_date"><?php echo get_the_date(); ?></span>
        <span class="meta_categories"><?php the_category(', '); ?></span>

        <?php if(comments_open( get_the_ID() )) { ?>
            <span class="meta_comments"><?php comments_popup_link( __( 'Нет комментариев', 'themater' ), __( '1 комментарий', 'themater' ), __( '% комментариев', 'themater' ) ); ?></span>
        <?php } ?>
    </div>

    <h2 class="title">" title="<?php printf( esc_attr__( 'Постоянная ссылка на %s', 'themater' ), the_title_attribute( 'echo=0' ) ); ?>" rel="bookmark"><?php the_title(); ?></h2>

    <div class="entry clearfix">

    <?php if(has_post_thumbnail()) { ?>">
        <?php the_post_thumbnail(
            array($theme->get_option('featured_image_width'), $theme->get_option('featured_image_height')),
            array("class" => $theme->get_option('featured_image_position') . " featured_image") ); ?>
    <?php } ?>

    <?php the_content(''); ?>

</div>

<?php if($theme->display('read_more')) { ?>
    <div class="readmore">
        #more-<?php the_ID(); ?>" title="<?php printf( esc_attr__( 'Постоянная ссылка на %s', 'themater' ), the_title_attribute( 'echo=0' ) ); ?>" rel="bookmark">
        <?php $theme->option('read_more'); ?>
    </div>
<?php } ?>

</div><!-- Post ID <?php the_ID(); ?> -->

Этот небольшой кусочек кода в вашем post.php отображает заголовок:

 <h2 class="title">" title="<?php printf( esc_attr__( 'Постоянная ссылка на %s', 'themater' ), the_title_attribute( 'echo=0' ) ); ?>" rel="bookmark"><?php the_title(); ?></h2>

Чтобы быть более точным, эта часть делает:

<?php the_title(); ?>

Итак, если вы хотите, чтобы только заголовки постов отображались только в archive.php, просто замените строку:

get_template_part('post', 'archive');

на:

the_title();

Или, что еще лучше. Скопируйте post.php в post-archive.php и удалите все, что вам не нужно, из post-archive.php.

post-archive.php будет выглядеть примерно так:

<div <?php post_class('post clearfix'); ?> id="post-<?php the_ID(); ?>">
    <h2 class="title">" title="<?php printf( esc_attr__( 'Постоянная ссылка на %s', 'themater' ), the_title_attribute( 'echo=0' ) ); ?>" rel="bookmark"><?php the_title(); ?></h2>

</div><!-- Post ID <?php the_ID(); ?> -->

Ответ или решение

Чтобы отображать только заголовки постов на страницах категорий в WordPress, вам нужно внести некоторые изменения в ваш файл archive.php. Давайте разберёмся, как это сделать.

Шаг 1: Обновите файл archive.php

В вашем коде archive.php вы используете функцию get_template_part('post', 'archive'), чтобы загружать шаблон для каждого поста. Чтобы изменить это, просто замените эту строку следующим кодом:

the_title('<h2 class="title"><a href="' . esc_url(get_permalink()) . '" rel="bookmark">', '</a></h2>');

Это выведет только заголовки постов и добавит ссылку на каждый заголовок. Итак, ваш обновлённый фрагмент archive.php будет выглядеть так:

<?php global $theme; get_header(); ?>

<div id="main">

    <?php $theme->hook('main_before'); ?>

    <div id="content">

         <?php $theme->hook('content_before'); ?>

          <h2 class="page-title"><?php
          if (is_day()) {
               printf( __( 'Daily Archives: <span>%s</span>', 'themater' ), get_the_date() );
          } elseif (is_month()) {
              printf( __( 'Monthly Archives: <span>%s</span>', 'themater' ), get_the_date('F Y') );
          } elseif (is_year()) {
              printf( __( 'Yearly Archives: <span>%s</span>', 'themater' ), get_the_date('Y') );
          } else {
              _e( 'Blog Archives', 'themater' );
          }
          ?></h2>

        <?php
        if (have_posts()) : while (have_posts()) : the_post();
            the_title('<h2 class="title"><a href="' . esc_url(get_permalink()) . '" rel="bookmark">', '</a></h2>');
        endwhile;
        else :
            get_template_part('post', 'noresults');
        endif;

        get_template_part('navigation');
    ?>

    <?php $theme->hook('content_after'); ?>

    </div><!-- #content -->

    <?php get_sidebars(); ?>

    <?php $theme->hook('main_after'); ?>

</div><!-- #main -->

<?php get_footer(); ?>

Шаг 2: Опционально – создайте post-archive.php

В качестве хорошей практики, вместо того чтобы изменять непосредственно post.php, вы можете создать новый файл шаблона, например, post-archive.php. Скопируйте содержимое post.php в post-archive.php, а затем удалите все, кроме заголовка. Ваш файл post-archive.php должен выглядеть так:

<div <?php post_class('post clearfix'); ?> id="post-<?php the_ID(); ?>">
    <h2 class="title"><a href="<?php echo esc_url(get_permalink()); ?>" rel="bookmark"><?php the_title(); ?></a></h2>
</div><!-- Post ID <?php the_ID(); ?> -->

Заключение

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

Если у вас возникнут дополнительные вопросы, не стесняйтесь спрашивать!

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

Капча загружается...