Вопрос или проблема
Привет, мне нужно отобразить только заголовки постов, пожалуйста, помогите. Вот мой код 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(); ?> -->
Заключение
Теперь при просмотре архивных страниц вы увидите только заголовки постов, красиво оформленные и с ссылками на полные посты. Эти изменения позволят вам иметь более чистый и стильный вид на страницах категорий и архивов.
Если у вас возникнут дополнительные вопросы, не стесняйтесь спрашивать!