学习 搜索引擎

给WordPress添加文章存档页面的方法

2020年2月8日

今天上午的时候给小站又添加了一个小功能,一篇随机文章的展示,有兴趣的朋友,可以根据这篇文章来试试。

添加完这功能,把详细的教程整理了一下,又发现别的博主的网站都带着全部文章的存档页面,我也就想着办法也要做一个存档页面。

存档页面可以做什么?

  • 存档页面可以当时网站地图使用。
  • 存档页面方便用户查找某篇文章。
  • 存档页面可以提高网站浏览量。
  • 存档页面可以更好的SEO。
  • 存档页面可以……

总之存档页面好处多多。在经过一番努力之下,终于找到了一篇好教程。虽然发布时间又点老,但是亲测通用。

大家可以访问一下本站的存档页面。

http://www.7-18.com/archives

WordPress添加文章存档详细教程

1。在主题的 functions.php页面中添加一下代码:

function zfl_archives_list() {
	if( !$output = get_option('zfl_db_cache_archives_list') ){
		$output = '<div class="archives"><p>一天科技文章存档页面,大家可以利用Ctrl + F 查找关键词寻找文章</p>';
		$args = array(
			'post_type' => 'post', //如果你有多个 post type,可以这样 array('post', 'product', 'news')  
			'posts_per_page' => -1, //全部 posts
			'ignore_sticky_posts' => 1 //忽略 sticky posts

		);
		$the_query = new WP_Query( $args );
		$posts_rebuild = array();
		$year = $mon = 0;
		while ( $the_query->have_posts() ) : $the_query->the_post();
			$post_year = get_the_time('Y');
			$post_mon = get_the_time('m');
			$post_day = get_the_time('d');
			if ($year != $post_year) $year = $post_year;
			if ($mon != $post_mon) $mon = $post_mon;
			$posts_rebuild[$year][$mon][] = '<li class="archives_li">'. get_the_time('d日: ') .'<a href="'. get_permalink() .'">'. get_the_title() .'</a> <em>('. get_comments_number('0', '1', '%') .')</em></li>';
		endwhile;
		wp_reset_postdata();

		foreach ($posts_rebuild as $key_y => $y) {
			$output .= '<h3>'. $key_y .' 年</h3><ul>'; //输出年份
			foreach ($y as $key_m => $m) {
				$posts = ''; $i = 0;
				foreach ($m as $p) {
					++$i;
					$posts .= $p;
				}
				$output .= '<li class="archives_yue">'. $key_m .' 月 <em> ( '. $i .' 篇文章 )</em><ul>'; //输出月份
				$output .= $posts; //输出 posts
				$output .= '</ul></li>';
			}
			$output .= '</ul>';
		}

		$output .= '</div>';
		update_option('zfl_db_cache_archives_list', $output);
	}
	echo $output;
}
function clear_db_cache_archives_list() {
	update_option('zfl_db_cache_archives_list', ''); // 清空 zww_archives_list
}
add_action('save_post', 'clear_db_cache_archives_list'); // 新发表文章/修改文章时

添加完成之后,复制主题的page.php页面。重新命名为:archives.php,

然后archives.php页面,在页面顶部添加代码

<?php
/*
Template Name: Archives
*/
?>

添加完成然后在

<?php get_template_part( 'content', 'page' ); ?>

代码下面添加调用代码:

<?php zfl_archives_list(); ?>

保存上传到主题目录下。

然后在WordPress后台新建页面

命名为:文章存档 模板选择 archives.php,内容不用写。自己写好页面的固定地址保存即可访问。

大家可以通过自己编写主题样式来定义文章存档页面显示。

我是根据 zwwooooo 作者分享的存档页面自己修改的。原来作者写的不太合适本站主题。所以自己做了一部分修改。

有代码基础的朋友或者爱折腾的,可以按照原文来试试。

zwwooooo 原文地址: https://zww.me/wordpress-archive-page-template-wp-primary-function-2014-edition.z-turn

此代码加入了数据缓存,不会每次访问都更新存档页面。只有在新增文章、修改文章或者删除文章时,才会更新。

如果你在修改的过程中,刷新页面没变化,请随便更改一篇文章重新发布即可刷新存档页面。