wordpress所有文章列表页面-模板archives.php

作者 FarLee 2010年2月19日 0:18:57   ‖浏览(24,161)

如何为WordPress创建一个包含所有文章列表的索引页面?只在列表页面中列出文章标题和发表日期,浏览量,评论数等简单的几个参数,这样我们很容易就能找到以前发表的老文章,省去不断翻页的麻烦。robots.txt文件中,为了避免重复页面我也把/page翻页链接给Disallow了,所以添加一个Google和百度搜索引擎能够索引到的所有文章页面就很有必要。同时又能用这样的所有文章页面来做网站地图sitemap。

我们可以通过WordPress新增页面的方式来实现生成一个所有文章页面,不过页面内容编辑框中是不能输入php代码和函数的。所以我们在这个新添加的页面上套用archives.php模板,在archives.php模板中就可以随意调用各种函数和添加php代码了,也是官方介绍的方法:Creating_an_Archive_Index;翻译修改了一些,具体步骤如下(版本WP1.5+,以WP2.9.1为例):

1. 上传archives.php模板文件

在wp-content/themes/default目录下,即在WordPress默认主题中找到archives.php文件,将它上传到你正在使用的主题目录下。注意不是文章索引模板文件archive.php,不要弄错了。

2. 进入管理控制面板–页面–添加新页面

给这个新页面随意创建一个名称如“所有文章”(archives index)或“Sitemap”,页面内容编辑框中留空,不要填。

在边栏中的找到属性模板–在下拉列表中选择Archives模板,然后保存。

然后在页面的列表中,你会看到一个使用刚才创建页面时设置的名称的新页面。打开看看,一个包含文章按月归档和显示文章分类的模板页面生成了。下一步我们修改和自定义设置archives模板。

3.  自定义WordPress所有文章索引页面:

可以使用插件或者PHP代码来自定义WordPress文章索引页面,先看看使用PHP调用WordPress的wp_get_archives()函数来提取文章的例子:

A. 按月列出最近12个月的归档文章:

<?php wp_get_archives('type=monthly&limit=12'); ?>

B. 列出最近30天发表的文章:

<?php wp_get_archives('type=daily&limit=30'); ?>

C. 显示最近发表的20篇文章的文章标题:

<?php wp_get_archives('type=postbypost&limit=20&format=custom'); ?>

D. 用下拉列表框显示每个月的月度文章,并显示当月文章总数目:

<select name="archive-dropdown" onChange='document.location.href=this.options[this.selectedIndex].value;'>
<option value=""><?php echo attribute_escape(__('Select Month')); ?></option>
<?php wp_get_archives('type=monthly&format=option&show_post_count=1'); ?> </select>

E. 按字母/汉字排序列出已发表的所有文章:

<?php wp_get_archives('type=alpha'); ?>

关于wp_get_archives()函数更详细的介绍请看WordPress官方代码文档:Template_Tags/wp_get_archives

从上面的举例看出,最后一种是用wp_get_archives()函数可以实现显示所有文章的文章标题的方式。那么将archives.php文件中原有的PHP代码替换成这段代码就可以按字母/汉字/数字顺序显示所有文章了。可以当作是提交给搜索引擎的sitemap最好的一种方式,如下:

<?php get_header(); ?>

<div class="posts-wrap">
<?php wp_get_archives('type=alpha'); ?>
</div>
<!-- end .posts-wrap -->

<?php get_sidebar(); ?>
<?php get_footer(); ?>

4. 人性化自定义所有文章页面:

上面这种方式的所有文章当作sitemap提交给搜索引擎固然好,但是访问者看到这个网站地图就不知道怎么去找需要的文章了,所以最好能进一步自定义archives.php文件,让它按照发表文章的年月日的日期先后来显示,或者按照分类来显示,同时显示发表日期和浏览量、评论数、所在分类等等,举例如下。

A. 显示所有发表的文章(显示发表日期、所在分类、评论数等),使用循环和get_posts()函数

<?php while(have_posts()) : the_post(); ?>
<h2><?php the_title(); ?></h2>
<ul>
<?php $totalposts = get_posts('numberposts=200&offset=0');
foreach($totalposts as $post) :
?>
<li>
<?php the_time('M j') ?> : <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
发表在: <?php the_category(', ') ?>
<?php comments_popup_link( __( '评论 (0)', 'farlee' ), __( '评论 (1)', 'farlee' ), __( '评论 (%)', 'farlee' ), 'comments-link', __('评论关闭', 'farlee')); ?>
</li>
<?php endforeach; ?>
</ul>
<?php endwhile; ?>

B. 下面的例子按照年月输出文章发表日期和文章标题及链接、浏览量、评论数及回复链接。通过调用get_posts()函数提取所有文章,它的参数numberposts=0表示所有文章,按日期降序排序。然后在每个循环中将文章发表的月份和年份与前面一篇对比,如果不同则输出年份和月份。

<?php
$previous_year = $year = 0;
$previous_month = $month = 0;
$ul_open = false;

$myposts = get_posts('numberposts=-1&orderby=post_date&order=DESC');
?>

<?php foreach($myposts as $post) : ?>

<?php
setup_postdata($post);
$year = mysql2date('Y', $post->post_date);
$month = mysql2date('n', $post->post_date);
$day = mysql2date('j', $post->post_date);
?>

<?php if($year != $previous_year || $month != $previous_month) : ?>

<?php if($ul_open == true) : ?>
</ul>
<?php endif; ?>

<h3><?php the_time('Y年 F'); ?></h3>
<ul>
<?php $ul_open = true; ?>
<?php endif; ?>
<?php $previous_year = $year; $previous_month = $month; ?>

<li><span><?php the_time('Y/m/d'); ?></span> <span><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></span> <span>&nbsp;<?php if(function_exists('the_views')) { the_views(); } ?></span> <?php comments_popup_link( __( '评论 (0)', 'farlee' ), __( '评论 (1)', 'farlee' ), __( '评论 (%)', 'farlee' ), 'comments-link', __('评论关闭', 'farlee')); ?> </li>

<?php endforeach; ?>
</ul>

5. 使用所有文章索引页面插件

想使用插件的朋友可以试试下面几个,都上传到了WordPress.org可以下载:

Clean Archives Reloaded;  Latest Post from each Category plugin for WordPress

Clean Archives Reloaded

WordPress 所有文章插件:Clean Archives Reloaded

文章页面posts是WordPress博客内容的精华,其他链接大部分都可以屏蔽掉。所以在网站地图和提交给搜索引擎的Sitemap.xml中,所有文章是关键。


“wordpress所有文章列表页面-模板archives.php”文章评论(25)

  1. 人性化自定义所有文章页面中的B很不错

  2. 自定义所有文章页面里的 A 里面调用文章内容和摘要 不显示呢、?

  3. 请教博主,为什么我的博客按照的方法试了以后邮编的边栏跑到下面去了呢?
    谢谢!

  4. http:// www .zhihuihao.com/all具体页面是这个。

  5. 互点广告,谢谢!

  6. 在我的博客http://www.talangzhe.com里,也想做个文章列表页面,一会去试试

  7. 嗯 需要好好利用这个模板页才行呀

  8. 谢谢,好东西

  9. 请问兄弟,上述第4点中的A方法实现的文章列表,要如何才能翻页?谢谢指点,我一直没弄出来,现在只能全部显示,不美观。

  10. 这几天都在搞这个问题,所以都在参考这个文章,很不错,只是我还是没有完全搞出来….”人性化自定义所有文章页面”的A方法中,我改了后,点击侧边的archive widget(我用的是3.0.1),无论选的是哪个月份,最后都是显示所有日期的文章,不知道怎么做才能让它安装我选的日期来显示呢?

  11. 我想再建个文章摘要页面,但是和首页显示的文章要不同,不知道怎么搞.

Trackbacks/Pingbacks

  1. Google自定义搜索代码替换wp博客站内搜索 - 远方博客
  2. WordPress Google Sitemap(站点地图)自动生成插件 | 释放生活
  3. wordpress所有文章列表页面-模板archives.php « 前端视界
  4. WordPress最新评论插件代码,最新随机文章 | 记录在路上
  5. Google自定义搜索代码替换wp博客站内搜索 – 远方博客 | 第一整站站
  6. 如何让category、archive和tag页显示所有文章标题 | lilifen.com|无主题网站|迷茫中找寻乐趣
  7. Wordpress中新建一个页面,显示所有文章列表 | 宁怡的博客
  8. wordpress所有文章列表页面-模板archives.php | CludeChn's Blog
  9. SaiH Tech Source » wordpress 建立“文章目录”目录页
  10. Wordpress投票评分插件GD Star Rating设置 – 远方博客
  11. WordPress中新建一个页面,显示所有文章列表 | 今天,你无聊了么?
  12. WordPress中新建一个页面,显示所有文章列表 | Miracle小站
  13. wordpress所有文章列表页面-模板archives.php | dekevin博客
  14. wordpress学习笔记 – 李朝blog

来说兩句