给wordpress添加归档页面

今天给另一个网站增加一个文章归档功能,步骤如下:

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,保存即可。