WordPress怎么将内容发布到页面,在导航增加动态列表页面

      大家玩WordPress的都知道,WordPress的导航默认只有主页有内容列表,而自带的添加页面功能只能添加单页页面,不能取发布的内容列表,很不爽。让人感觉网站结构单调,内容少。那么怎么增加动态列表页面到导航呢?其实很简单,下面本人将教大家怎么添加动态列表页面到导航。

      动态列表页面调取什么内容呢?WordPress只有一个地方发布内容,可以发布各种形式的内容。所以列表页也只能调取和主页一样的内容。那么有人可能会想,既然只能调取和主页同样的内容那还有什么用呢?非也,列表页的内容可以和分类绑定,你可以将你的各种一级分类分别绑定到导航上,导航的子菜单绑定二级分类,子子菜单绑定三级分类,以此类推。这么做有什么作用呢?首先,将内容分类显示到导航上,会增加你的站内链接,而且每个不同的页面可以独立设置关键词和描述,对优化很有帮助。(WordPress默认是不能设置关键词描述的,你可以使用代码增加,但网上有现成的设置关键词描述的插件,我们就不要蛋疼自己去弄了,我用的All in One SEO插件,很强大,完全够用了)然后游客访问你的网站时,可以很方便的通过导航找到他想看的类别的内容,并且各分类下的内容页面数肯定是比主页下少的,翻页找内容也会快很多。其次呢,你还可以使用不同的模板显示不同分类的内容,这样对用户体验的好处就不用多少了吧!

      说了这么大一段,那到底要怎么搞呢?OK,我先说说我的思路。文章发布时可以选择分类,分类呢又可以设定分类别名,我们先记住这个别名。WordPress添加新页面时可以选择页面模板,页面也可以绑定页面别名。那么我们可以手动将分类的别名和页面的别名做个对应,设为一样。这样访问页面的时候就可以通过获取页面的别名对应取得分类的别名,从而取得分类id,然后就可以获取该分类下的内容列表了。那么内容列表要怎么显示到页面上呢,我们需要一个新的内容模板,而我们知道分类调用的内容和主页的内容是一样的,所以我们可以直接复制一个主页的模板文件重命名,然后通过上面的那个思路取得列表内容送到模板上显示出来就可以了。那这个代码要怎么写呢,我可不会PHP哦!别急,我已经写好了,有很详细的注释,懂点PHP的朋友可以再研究或者根据自己的需求修改。全部是根据WordPress的接口写的,所以兼容性很强,只要WordPress不变改变接口代码,那么就应该可以通用。下面我先贴代码,然后重新完整得做一遍这个步骤,并会截图贴出来。

      注意,你要再添加多个页面的话重复4、5步即可,不需要重复复制编辑多个模板文件,除非你要使用不同的模板,这也是本扩展代码的一大亮点!另外如果你使用不同模板的话,添加页面时也要对应选中你新加的模板,不要忘记了。

<?php 
// 取WordPress页面动态内容列表
function drunk_query_posts(){
	// WP内置函数取当前页面ID
	$page_id = get_queried_object_id();
	// WP内置函数根据ID获取页面属性
	$page = get_page($page_id) ;
	// WP内置属性取页面别名
	$page_name = $page->post_name ;
	// 根据别名取分类信息(这是个关键性步骤,它将页面与分类的关系对应起来)
	$category = get_category_by_slug($page_name) ;
	
	// 如果未匹配到对应分类id,则表示不存在此分类,也即页面无内容,直接返回假。
	if(empty($category->term_id))return false;
	
	// 初始化分类ID集为当前页面的ID,即根ID
	$cate_ids[] = $category->term_id ;
	// 根据根ID取所有子分类ID,以供后面获取其下的内容
	$categories = get_categories(array('child_of'=>$category->term_id, 'hide_empty' => false)) ;
	foreach($categories as $category)$cate_ids[] = $category->term_id ;
	// 取分页大小
	$posts_per_page = get_option('posts_per_page');
	// 根据分页大小以及指定的分类获取文章列表
	query_posts('showposts='.$posts_per_page.'&cat='.implode(',', $cate_ids));
	return true ;
} ;
?>
			<?php if ( drunk_query_posts() && have_posts() ) : ?> 

  1. 第一步

    到你的主题目录下复制一个index.php的副本文件,重命名为nav_cate.php,或者你也可以自己定义,记住你定义的名字就可以了。然后下载到本地(当然,你如要要使用和主页不一样的模板文件的话那么复制你需要使用的文件重命名即可)。我使用的catch-box主题,所以我的路径是/wp-content/themes/catch-box/,你要把主题名换成你使用的主题名。
  2. 第二步
    打开刚下载的文件,将上面的代码复制到下图框框区域,在最上面的部分。具体看图操作,细心一点,别搞错了。
  3. 第三步
    保存修改的文件,上传到服务器。
  4. 第四步
    进入WordPress管理后台,添加或更新分类,设置并记住分类别名。
  5. 第五步
    添加或更新页面,设置与刚才分类同样的别名,选中刚上传的文件作为模板文件,然后保存就完工啦!