Wordpress theme hack - 自定义首页文章分类
![]()
换了新主题,想把关于自己的文章独立到一个页面里面,同时首页也不显示这分类里面的文章,G了一下,发现有如下的做法。
1.在一个单独页面里显示一个分类的文章
当然是新建一个php文档,在其上面输入:(注意去掉<? 和php 之间的空格)
<? php
/*
Template Name: second //你的模板名字
*/
?>
空一行后输入<? php get_header(); ?>
接着到重点:
<? php
$cat_id=123;//the category ID
$limit = get_option('posts_per_page');
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
query_posts('cat=' . $cat_id . '&showposts=' . $limit . '&paged=' . $paged);
$wp_query->is_archive = true; $wp_query->is_home = false;
?>
$cat_id就是输出文章的分类代码id,可以在Wp后台管理分类菜单里,鼠标指向某一分类时,IE底边栏会显示catID,假如需要显示多几个分类,可以用逗号’,'隔开
$limit就是每页输出文章的数量,这里取了wp后台设置的数值
$paged就是显示的页数,假如没有这个参数,则永远显示的是第一页,翻页是没有效果的
到了这里,下面的代码就和模板里的index代码相同,复制<? php get_header(); ?>后面的代码粘贴上去保存即可。
将编辑好的模板上传到空间,新建页面,在页面模板里选择该模板,不需要填入内容,发布即可。
2.首页不显示某分类
上面已经将一个分类独立到一个页面了,那么首页或许是应该设置不显示的,当然,这个选择权在自己。来看代码
<? php
$cat_id=-123;//the category ID
$limit = get_option('posts_per_page');
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
query_posts('cat=' . $cat_id . '&showposts=' . $limit . '&paged=' . $paged);
$wp_query->is_archive = true; $wp_query->is_home = false;
?>
请注意这段代码的$cat_id,它的值是-123,和刚才的不同,表示的是除开123分类的其他所有分类,当然,这个分类id也是可以叠加的,用逗号隔开。其他的代码内容是一样的。
将这段代码放在模板index.php里面的<? php get_header(); ?>后面<? php if (have_posts()) : ?>的前面的位置段,就可以了。那么首页就不会显示这个分类下的文章。
可能有朋友会问,为什么要在index.php里面改,像上面一样做一个模板页,创建一个新页面在后台设定为首页不就行了吗?其实这个方法我尝试过,结果就是首页能显示,而翻页之后,得出的结果和普通的翻页结果是一样的,并没达到“隐藏分类”的效果,可能是因为在翻页之后,调用的依然是index.php这个页面吧。
有位朋友说到在首页(index.php)里面添加了这段代码之后令到点击分类标签和日期标签的时候,显示的文章还是和首页的一样。其实这个和模板有很大的关系,关系在于这个模板文件–archive.php(存档页),假如你的模板里面没有这个文件的话,当点击分类(存档)或者日期(存档)标签的时候,wp会调用index作为模板来显示,由于在index.php里面添加了上面的代码,故显示出来的,还是首页的内容。
似乎是有插件可以实现让首页和单独页面显示不同分类文章的,但是我懒得找了,因为自己动手,丰衣足食。希望这篇文章对您有帮助,假如有什么问题,我们一起来探讨。



