WordPress 不同页面对应不同模板解决方法

先来看看不同的页面模板如何制作

我们在制作 WordPress 主题时,很多页面写专门的页面模板,如 tpl-contact.php 专门给页面 contact 使用。

举个例子:还是刚才说的 tpl-contact.php,刚好使用 tpl-contact.php 作为模板的页面的 footer 部分有个电话号码,而默认的 page.php 和其他页面模板又不需要,虽然可以给 tpl-contact.php 复制一个 footer.php 改名为其他名(如 footer-contact.php)给 tpl-contact.php 专用(用 get_footer('contact') 调用),但这样好像有点小题大做了。

我以前不知道 WordPress 本身提供了一个函数来判断的,我用了比较麻烦的判断方法,在 footer.php 加了这样的判断来实现,经过比较“坎坷”……

从前有座山,山里有个庙,我用了『 get_page_template() 』函数:

if (is_page()){
    $page_tpl_name = get_page_template(); //获取模板文件全路径
    $page_tpl_name = split('/tpl-', $page_tpl_name); //分割,??br/>    if ($page_tpl_name[1] == 'contact.php') {
        /* 显示电话号码 */
    }
}

自从庙里有个老和尚和小和尚后,我用了『 get_post_custom_values() 』来实现

if (is_page()){
    $page_tpl = get_post_custom_values('_wp_page_template'); //获取字段 _wp_page_template 的数组值
    if ( $page_tpl[0] == 'tpl-contact.php' ) { //判断第一个数组值(模板文件名)是否是 tpl-contact.php
        /* 显示电话号码 */
    }
}

当老和尚开始向小和尚讲故事的时候,我才知道 WordPress 本来就有个『 is_page_template() 』函数用来判断模板文件是否使用时,我立即打住老和尚讲无限循环的故事!

if ( is_page_template('tpl-contact.php') ) {
    /* 显示电话号码 */
}

注1:is_page_template 不能用在 loop 里面,如果之前有 loop,先在 loop 后面使用 wp_reset_query(),然后再使用 is_page_template
注2:如果模板文件在某个文件夹里,如 template/tpl-contact.php,那么这样 if ( is_page_template('template/tpl-contact.php') )

实现WordPress不同分类目录调用不同模板的方法

为了网站的美观及用途, 类目以及内容页面的差异性,需要让不同的页面使用不同的模版。这时候就需要实现不同的分类调用不同的模板,今天笔者就给大家介绍实现WordPress不同分类调用不同模板的两个方法,你可以根据情况选择使用。

方法一:

首先我们要做的就是找到你网站正在使用的主题文件(默认路径..\wp-content\themes\),并用编辑器打开 category.php文件,然后用下面的代码替换里面除get_header()与get_footer()除外的代码,并将原来被替换的代码拷贝出 来并粘贴到你新建的模板文件中,如category_default.php

<?php

$post = $wp_query->post;

if(in_category(’2′)) {

include(TEMPLATEPATH.’/category_2.php’);

}

else if (in_category(’3′)){

include(TEMPLATEPATH.’/category_3.php’);
}

else {

include(TEMPLATEPATH.’/category-default.php’);

}

?>

最终结果如下:

<?php get_header(); ?>

<?php

$post = $wp_query->post;

if(in_category(’2′)) {

include(TEMPLATEPATH.’/category_2.php’);
}

else if (in_category(’3′)){

include(TEMPLATEPATH.’/category_3.php’);

}

else {

include(TEMPLATEPATH.’/category-default.php’);
}

?>

<?php get_footer(); ?>

这段代码函数的主要作用就是根据分类目录的ID去判断并调用对应的模板,如果分类目录ID为2,则为这个分类目录调用 category_2.php模板,如果ID为3,则调用category_3.php模板,如果以上两者都不是则调用category- default.php这个默认的模板。当然了,如果你如果需要给更多的分类目录指定模板,你只需要再添加一个else if语句既可,如下面代码所示:

<?php get_header(); ?>

<?php

$post = $wp_query->post;

if(in_category(’2′)) {

include(TEMPLATEPATH.’/category_2.php’);
}

else if (in_category(’3′)){

include(TEMPLATEPATH.’/category_3.php’);

}

else if (in_category(’6′)){

include(TEMPLATEPATH.’/category_6.php’);

}

else {

include(TEMPLATEPATH.’/category-default.php’);

}

?>

<?php get_footer(); ?>

另外要注意的就是category_6.php等这些模板文件的调用路径了,如果你想单独新建一个文件夹来放这些分类目录模板文件,那上面代码中也要一起修改。

方法二:

这是一种比较简便的调用方法,加入wordpress这个分类的ID=1, 那么就新建一个模板category-1.php,系统会自动调用这个ID的,重点是记住这个文件命名格式category-*.php,这里的*代表着 category的ID。怎么样,简单的不行了吧?

到这里为不同的分类目录调用不同的模板就结束了,最后你要做的就是根据自己的完美思想去定义wordpress模板文件了。

时间: 2024-09-09 20:13:01

WordPress 不同页面对应不同模板解决方法的相关文章

ThinkPHP打开验证码页面显示乱码的解决方法_php实例

本文实例讲述了ThinkPHP打开验证码页面显示乱码的解决方法.分享给大家供大家参考.具体分析如下: 在用thinkphp开发的时候,有时会出现验证码乱码的问题,解决方法是把如下这个文件放在根目录,访问后就可以解决了,具体的PHP代码如下: 复制代码 代码如下: <?php if (isset($_GET['dir'])){ //设置文件目录   $basedir=$_GET['dir'];   }else{   $basedir = '.';   }   $auto = 1;   checkd

使用ionic切换页面卡顿的解决方法_javascript技巧

使用ionic开发app的时候,会发现切换页面的动画会卡顿,并不流畅,为了保证用户体验,大部分人会使用禁用动画的方法$ionicConfigProvider.views.transition('no');,但并不是最好的解决思路,cordova提供了native transitions可以让页面切换近乎原型的体验.主要步骤如下: 1.npm install ionic-native-transitions --save 下载该文件,并放入www/lib文件夹下 2.在index.html中加入<

Ajax提交表单页面刷新很快的解决方法

注:使用ajax 提交表单时 type类型最好不用submit 用button合适 <form> <div class="col-md-9 col-sm-9 col-xs-12 col-md-offset-3"> <input type="button" class="btn btn-info" value="重置" onclick="return resetaa()">

常见页面元素遮住菜单解决方法

菜单|解决|页面 1.被Flash挡住 设置Flash的参数:<param name="wmode" value="opaque"><object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#versio

PHP空白页面常见原因及解决方法

解决|页面 编写PHP,难免会出现错误.其实出现错误也不难解决,最难解决的是出现空白页面.大家想想看,若编写PHP出现错误,可以根据错误的提示来改正,倘若PHP什么也不给你显示,那岂不是让编写者困挠不以?下面,我就把我在编写PHP时总结出来的有关PHP空白页面的解决方法以及产生原因.当然,本人写PHP并不是很高手,所以如果有错误,请不惜指出. 1.动作未定义    先请大家看一看下面的代码: 以下内容为程序代码<?php$action = $_GET['id'];if($action == ''

WordPress迁移时一些常见问题的解决方法整理_php技巧

一.导入数据库提示数据表已存在 以周良博客使用的主机商-主机91为例,提供了phpMyAdmin功能的,导入数据库只需要便捷的选择数据库,导入就可以了.方法虽然简单,但是有可能遇到提示database XXX table has existed.出现该问题的原因可能是之前转移的时候将网站文件上传到主机空间后,进行过一次网站安装,导致新建了一次数据库,创建了新的数据表,导致重新导入数据库时数据表重复.解决方法就是将查找到提示的这个已存在的XXX table,将它删除掉再重新导入. 二.网站文件和数

windows服务器中.shtml页面访问无法显示解决方法_win服务器

网站换了服务器后发现shtml网页无法访问,原因是没有注册.shtml扩展名,解决方法如下 IIS6.0解析shtm,shtml文件由于IIS6.0的安全性较以前有特别大的改进,所以在很多功能默认情况下都是关闭的,前几天刚把这个困扰了我好久的问题给解决了.嘿嘿.费话不多说了,开始 打开IIS管理器,打开"本地计算机"的属性-->MIME类型-->新建 后缀名:.shtml MIME类型:text/html 后缀名:.shtm Mime类型:text/html 然后点击确定.

WordPress无法显示Gravatar头像的解决方法

根据网络用户反馈,通过使用知名社交评论服务商多说提供的国内Gravatar服务,替换默认的Gravatar功能即可解决问题,且访问速度也很不错. 解决方法1:使用Gravatar的HTTPS(适用于任何主题) 在主题目录中,找到并打开 functions.php 文件,把以下代码复制放到该文件中:  代码如下 复制代码 // HackGravatatr function wpyou_get_ssl_avatar($avatar) { $avatar = preg_replace('/.*\/av

DIV+CSS页面布局中BUG解决方法

DIV+CSS布局中,出现BUG之后,可以考虑从以下几方面检查. 一.检查页面的标签是否闭合 不要小看这条,也许折腾了你两天都没有解决的 CSS BUG 问题,却仅仅源于这里.毕竟页面的模板一般都是由开发来嵌套的,而他们很容易犯此类问题. 快捷提示:可以用 Dreamweaver 打开文件检查,一般没有闭合的标签,会黄色背景高亮. 二.样式排除法 有些复杂的页面也许加载了 N 个外链 CSS 文件,那么逐个删除 CSS 文件,找到 BUG 触发的具体 CSS 文件,缩小锁定的范围. 对于刚才锁定