今天给另一个网站增加一个文章归档功能,步骤如下:
1、复制page.php,改名为archive.php,并在最顶部添加以下代码,告诉wordpress这是一个模板
/*
Template Name: Archives
*/
2、把page.php中间输出内容的部分换成我们的归档代码。
完整代码如下:
<?php
/*
Template Name: Archives
*/
get_header(); ?>
<style>
.monthly-posts {
list-style-type: none;
/* 去掉默认的列表样式 */
padding-left: 0;
/* 去掉外边距 */
}
.monthly-posts li {
margin-left: 20px;
/* 为每个文章项添加左侧缩进 */
line-height: 1.8;
/* 增加行高让显示更清晰 */
margin-left: 20px;
line-height: 1.6;
margin-bottom: 5px;
/* 增加每个列表项之间的间距 */
}
.monthly-posts li a {
font-weight: bold;
/* 强调文章标题 */
}
.monthly-posts li span.post-date {
font-size: 0.9em;
color: #666;
/* 设置日期的颜色 */
margin-left: 10px;
}
/* 针对 <p> 标签样式进行调整 */
.monthly-posts p.post-excerpt {
font-size: 1em;
color: #444;
/* 设置摘要文本颜色 */
margin-top: 5px;
line-height: 1.6;
margin-left: 40px;
/* 添加左侧缩进 */
}
h3 {
font-size: 1.2em;
color: #333;
margin-top: 20px;
margin-bottom: 10px;
}
.post-count {
margin-top: 30px;
font-size: 1.2em;
font-weight: bold;
color: #333;
text-align: center;
}
</style>
<div id="primary" class="site-content">
<div id="content" role="main">
<?php
// 获取按月归档的日期
$archives = $wpdb->get_results("
SELECT DISTINCT YEAR(post_date) AS year, MONTH(post_date) AS month
FROM $wpdb->posts
WHERE post_status = 'publish'
ORDER BY post_date DESC
");
// 遍历每个月的归档
if ($archives) :
foreach ($archives as $archive) :
// 获取当前月份的文章
$year_month = $archive->year . '-' . str_pad($archive->month, 2, '0', STR_PAD_LEFT);
// 设置自定义查询来列出该月的文章
$query = new WP_Query(array(
'year' => $archive->year,
'monthnum' => $archive->month,
'posts_per_page' => -1 // -1 表示列出该月所有文章
));
// 如果该月有文章,显示月份和文章列表
if ($query->have_posts()) :
echo '<h3>' . $archive->year . '年' . $archive->month . '月</h3>';
echo '<ul class="monthly-posts">';
while ($query->have_posts()) : $query->the_post();
// 获取文章的发布日期
$post_date = get_the_date('Y年m月d日'); // 修改为你想要的日期格式
echo '<li><a href="' . get_permalink() . '" title="' . get_the_title() . '">' . get_the_title() . '</a> <span class="post-date">- ' . $post_date . '</span></li>';
// 输出文章摘要
echo '<p class="post-excerpt">' . get_the_excerpt() . '</p>';
endwhile;
echo '</ul>';
endif;
// 重置查询
wp_reset_postdata();
endforeach;
else :
echo '<p>没有按月归档的文章。</p>';
endif;
?>
<?php
// 获取已发布文章的数量
$post_count = wp_count_posts()->publish;
?>
<div class="post-count">
<p>总共写了 <?php echo $post_count; ?> 篇文章。</p>
</div>
</div><!-- #content -->
</div><!-- #primary -->
<?php get_sidebar(); ?>
<?php get_footer(); ?>
3、把archive.php传到服务器主题目录下,并新建一个页面,在该新建页面里面选择模板,选择Archives,保存即可。