WordPress 页面调用分类文章的方法

2010年2月24日 由 米糊排骨 留言 »

本文转自园子的博客http://www.yzznl.cn/archives/285.html,因为没有看太明白,所以先把文章摘过来。

默认情况下wordpress的导航栏都是使用页面做为导航的,这些单一的页面可以很好的用于作者介绍、归档页面、链接等。但我们发现使用页面来展示文章列表并不太方便,我个人是比较倾向于用分类做为页面导航的,使用分类做为导航似乎更像是一个内容充实的网站。这就会用到一种折衷的方法:导航里面既有普通页面的显示效果,也有分类导航的显示效果。本文主要介绍如何使用 WordPress 页面调用某个分类下面的文章的方法。

1.首先需要创建一个特殊页面模板,直接复制主题中的 index.php 文件,把文件名修改为你想要的模板名字,如:AdSense。

2.打开此文件,在代码最顶部增加如下代码:

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

这段代码是声明模板的名称,你要新建页面的时候,会在选择页面模板里面看到它,当然,名字你可以随便起。这样,就完成了一个特殊页面模板的制作。

3.接下来就要实现这个模板显示的是特定分类下的文章内容,通过搜索找到如下代码:

<?php if (have_posts()) : ?>

在这行代码的前面加上:

<?php query_posts('showposts=15&cat=1'); ?>

其中的 cat=1 你可以修改成你想要显示的分类的ID,ID你可以在Wordpress 后台管理中的分类目录下看到,将鼠标放上某个分类即会显示形如:

http://www.domain.com/wp-admin/categories.php?action=edit&cat_ID=6

的链接,后面的6就是这个分类的ID号。

4.最后创建一个新页面,比如 adsense 页面,在模板选择里面选择刚刚创建的 adsense 模板,然后发布,刷新首页点击进入此页面看看效果吧。

有网友反映说使用上面的方法造成无法翻页的状况,症状为 WordPress 页面调用分类文章后,点击页面下方的翻页没有反应,但浏览器地址栏传递的参数已经发生改变了。出现此问题可参考下面的解决方法:

将上面提到过的代码:

<?php query_posts('showposts=15&cat=1'); ?>

替换为:

<?php
$limit = get_option('posts_per_page');
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
query_posts('cat=1&showposts=' . $limit=15 . '&paged=' . $paged);
$wp_query->is_archive = true; $wp_query->is_home = false;
?>

其中limit=15为每页显示的文章数目,cat=1 为分类的 ID,经园子测试此方法可行,大家也可以试一下。

通过上面的简单四步实现了在 WordPress 页面调用分类里面文章的方法,这样我们就可以自由的将页面和导航有选择的做为网站的主导航,相信多数朋友会喜欢这种比较自由的结合方法,以此来打造更具人性化的博客。

导航上既显示分类文章,又显示页面列表的实现方法

另外有部分朋友需要在导航上既显示分类文章,又显示页面列表,同时可自定义显示哪个分类和页面,把不想显示的隐藏掉,可采用下面的方法来实现(注:此方法只针对使用了inove主题的朋友们):

找到你主题中的/templates/header.php文件,找到如下代码:

<?php
			if($options['menu_type'] == 'categories') {
				wp_list_categories('depth=2&title_li=0&orderby=name&show_count=0');
			} else {
				wp_list_pages('depth=2&title_li=0&sort_column=menu_order');
			}
?>

修改为:

<?php
wp_list_categories('depth=2&title_li=0&orderby=id&show_count=0');
wp_list_pages('depth=2&title_li=0&sort_column=menu_order');
?>

这样的话在页面导航上就会把分类和页面都显示出来,下一步就是利用 exclude 函数隐藏不需要显示的页面,找到各对应分类和页面的ID(在后台管理中鼠标放上对应的分类就会显示ID号),把上面修改过的代码改为如下形式即可:

<?php
wp_list_categories('depth=2&title_li=0&orderby=id&show_count=0&exclude=58,4,1');
wp_list_pages('depth=2&title_li=0&sort_column=menu_order&exclude=4,5');
?>

通过上面的方法就达到了我们预期的效果:导航里面既有普通页面,也有分类导航,同时可自定义哪个分类和页面不显示。

======================================================
经过这两天修改上述修改方法修改后页面只能做到显示每个主题全文,不能主动截断文章,后来网上找到这样一截代码比较好用,修改方式和上述文章一样,在第三步用以下代码替换即可。

	<?php
		global $more; $more = 0;
		query_posts('showposts=10&cat=19');
	?>
广告位

评论已关闭.