缩略图
程序开发 \ WordPress \

wordpress自定义页面

对于页面的请求,wordpress默认调用page.php这个文件,不管我们添加多少个页面,它们的模板都是同一个——page.php。然而实事是,在很多情况下我们都想让某个页面和其它页面不太一样,那么怎么自定义这些页面呢?本文将给出答案。

条件判断

既然页面默认的模板文件是page.php文件,我们就可以通过在page.php文件根据不同的page-id来输出不同的模板样式。这种方法的基本框架如下

<?php
     switch($post->ID){
          case 页面1_ID:
               //在这里添加页面1的模板样式
               echo '这是页面1';
               break;
          case 页面2_ID:
               //在这里添加页面2的模板样式
               echo '这是页面2';
               break;
          default:
               //在这里输出默认的page模板
               echo '这里是默认的页面模板';
     }
?>

但是如果我们的页面比较多,各个页面的样式不同而且比较复杂的话,使用这种方法就不太合适,管理起来就不太方便。

选择页面模板

通过选择页面模板,我们可以为每个页面都单独指定一个模板文件。方法如下:

一、新建页面模板文件:在主题文件夹下新建一个php文件,文件名任意,比如testpage.php

二、在新建的模板文件中添加模板名,格式如下:

<?php
/*
Template Name: page test
*/
?>

“Template Name:”后面的字符就是模板名,你可以任意定义。这样wordpress才能知道该文件是一个模板文件,并且模板名称为page test。

三、在后台管理面板新建一个页面或者编辑以前的页面,在属性的模板中选择刚才新建的模板。

这种方法是最常用的一种方法,当然2.9版本还增加了一种方法,就是通过特定的文件名(page-slug.php和page-id.php)来自动选择模板,请参看wordpress2.9模板果然支持page-slug和page-id了 一文。

下面我将通过一些具体的实例进行说明自定义页面的使用方法

自定义关于页面

“关于”页面是wordpress默认的一个页面(page_id为2),我将使用条件判断的方法对其进行自定义,添加某个分类下的文章列表(比如我的Domety史记分类的文章列表)。在page.php文件加入一个if($post->ID == 3)和条件判断,代码如下

 <?php if($post->ID == 2) : query_posts('cat=3');
   if(have_posts()): ?>
    <li>
    <h2>Domety史记</h2>
    <ul>
     <?php while(have_posts()) : the_post(); ?>
      <li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>(<?php the_time('F j,Y'); ?>)</li>
     <?php endwhile; ?>
    </ul>
    </li>
   <?php endif;wp_reset_query();endif; ?>

我的超级链接页面

这个页面我使用的是模板的方法,首先新建了一个page_superlinks.php模板文件,模板名为”page super links”,然后在后台新建一个“超级链接”页面,模板选择”page super links”。你们可以看到我的这个页面中没有侧边栏了,是因为在这个模板文件没有调用get_sidebar函数。代码片段如下

<?php
/*
Template Name: page super links
*/
get_header();
?>
这里是实现超级链接的代码
<?php
get_footer();
?>

文档归档页面

该页面显示文章的存档,列出所有月份,就相当于把小工具中的“文章索引模板”单独显示到一个页面中,效果如下

使用的方法仍然是上面的模板法,主题文件夹下新建一个页面模板page-archives.php,文件内容如下

<?php
/*
Template Name: page archives
*/
get_header();
echo '<h2>文章索引</h2><ul>';
wp_get_archives('type=monthly&show_post_count=true');
echo '</ul>';
get_footer();
?>

在后台添加一个页面,标题可以为“存档”,模板选择”page archives”。

页面跳转

在论坛里看到好多人在询问实现页面跳转的方法,其实我感觉如果只是一个简单的页面跳转的话,最简单的方法就是在导航菜单里直接加入一个链接就行了。下面给出的方法实现的功能是在页面的内容里输入一个网址,然后页面自动跳转到这个网址。

一、主题文件夹下新建一个page-redirect.php文件,文件内容如下

<?php
/*
Template Name:page redirect
*/
header('Location:'.$post->post_content);
?>

二、在后台控制面板新建一个页面,标题根据你的需要填写,比如“论坛”。内容输入需要跳转的网址,比如http://domety.com,模板选择”page redirect”。然后发布即可。

以上实例仅供参考,如有雷同,纯属巧合。

添加评论

13 条评论

  1. 1 F

    星网

    2010-01-04 星期一 02:29

    太实用了!我明天去测试下~!嘿嘿!

    回复
  2. 2 F

    mulnim

    2010-01-04 星期一 17:53

    学习了, 我正需要这个…可是我的主题好怪啊…本来想建立个留言薄,可是 页面能建立, 留言薄却只能留一个言….太悲剧了

    回复
  3. 3 F

    vela

    2010-01-04 星期一 19:16

    今天下午网站好像无法访问,有点奇怪,主题差不多修改完成了

    回复
    • DDBug

      2010-01-04 星期一 21:34

      下午主机被电信关停了,原因还不明

      回复
  4. 4 F

    crossyou

    2010-01-04 星期一 19:22

    我的好几个页面都是自定义的 widget 也很多是自定义的。

    回复
  5. 5 F

    vsweb

    2010-01-04 星期一 21:04

    站长辛苦啦

    回复
  6. 6 F

    小城映像

    2010-02-01 星期一 08:24

    嗯,真的很值得学习下

    回复
  7. 7 F

    skywing

    2010-02-05 星期五 10:23

    已转载到我的博客。谢谢博主的解说,看了之后明白不少。

    回复
  8. 8 F

    cava

    2010-02-24 星期三 00:50

    好深奥…

    回复
  9. 9 F

    奇趣生活

    2010-07-14 星期三 14:20

    正好要找着个,太感谢了。

    回复
  10. 10 F

    娱乐频道

    2010-08-26 星期四 13:48

    呵呵,现学现用咯,感谢!!!

    回复
  11. 11 F

    冬瓜炒木耳

    2010-09-13 星期一 09:07

    学习了,很好很强大!

    回复
  12. 12 F

    那里达人秀

    2011-11-28 星期一 09:48

    学习了,很好很强大!

    回复

添加评论