Codex

Interested in functions, hooks, classes, or methods? Check out the new WordPress Code Reference!

zh-cn:页面

你可以在WordPress中撰写日志(文章)或是页面。当你撰写一般的博客文章时,就是撰写日志(文章)。这些日志(文章)会按逆时间顺序排列在博客首页上。而页面则是如"关于博主", "联系博主"这样的内容,它们是不受时间规则影响的,其内容一般很少改变。你可以使用页面来组织和管理任意数量的内容。

常见页面包括的内容还有:版权,相关法律信息,转载许可,公司信息及可访性声明。(顺带提一下,最好建立一个介绍页面和提供联系方式的页面 -- 可以参看一下Lorelle给出的相关建议。)

一般说来,页面跟日志(文章)很相似,它们都有标题和内容,并且通过使用外观模板使外观风格保持一致;但在这一方面,页面却具有若干区别于日志(文章)的重要特点。

页面是什么

页面可以:

页面不能:

  • 页面不是日志(文章),也不是大片文章的节选。它们不会像日志(文章)那样周而复始地出现在博客主页上。(注:你可以使用[Inline Posts插件]在页面中包括进日志(文章)。)
  • 页面无法与分类关联,也无法被指派标签。页面的组织结构仅由各层的相互作用而产生,与标签或分类并无干系。
  • 页面不是文件。它们与日志(文章)一样是被存储在数据库中的。
  • 虽然你可以在页面模板中加入模板标签和PHP代码,但却无法将它们加入页面内容中并企图让它们运作。(注:你可以使用如Exec-PHPRunPHP这样的插件来达到此目的。)

创建页面

如果你具有足够的管理权限,就可以登入WordPress来新建文章,并以此新建一个页面。选择[管理面板]>[页面]>[页面新建]进行新的页面的创建。

修改页面的URL(或"Slug")

自2.5版以来,页面URL的修改变得不那么直观了。如果你启用了永久链接并选择了Day and Name选项(点击设定标签,然后点击永久链接子标签),那么当你输入日志(文章)主体时,永久链接就会自动显示在日志(文章)标题之下。

但如果你选择了永久链接相关的其他选项,或根本没有启用永久链接的话,就需要按照如下步骤来编辑页面URL了:

  1. 通过撰写 > 页面来新建一个页面。
  2. 页面内容完成后点击发布按钮。
  3. 打开管理 > 页面
  4. 点击页面旁的编辑
  5. 点击编辑链接来修改出现在标题之下的永久链接。

也就是说,如果你没有启用正确的永久链接选项,就得在页面发布之后才能对URL做修改。

列出网站页面

WordPress能够自动列出网站上的页面,比如通过使用名为wp_list_pages()的[模板标签]将它们显示在边栏中。以下操作的指导请参见[wp_list_pages]的相关页面:

  • 页面列表排序(自定义页面列表内的排列次序,撰写 > 页面管理面板中的"页面排序"部分就很有用),
  • 将某个页面从列表中[剔除](或 '隐藏'),
  • 控制页面的显示(显示所有页面或是显示特定的子页面),及
  • 控制列表中页面层次的深度。

你还可以使用HTML链接手动链接到页面。举个例子,如果你希望版权页面显示在页脚中,那么该链接就会显示为:
如果你没有设置[固定链接]

<a title="Copyright information" href="wordpress/?page_id=14">Copyright 1996-2006</a>

如果你设置了[固定链接]

<a title="Copyright information" href="wordpress/copyright/">Copyright 1996-2006</a>

:你的.htaccess文件必须为可写以使得页面永久链接起效,否则的话每当新建页面时,你就必须更新一下.htaccess文件。

组织页面

正如你可以在分类下建立子分类一样,你可以在页面中建立子页面,即创建具有层次的页面。

假定你用WordPress为某个旅行社做一个网站,然后为各大洲和各国家建立独立的页面,以便于旅游事宜的管理调度。你可以创建名为“非洲”的页面,在该页面上你可以给出有关非洲旅游线路的信息。然后你可以在"非洲"这一页面下创建一系列的子页面,"莱索托","喀麦隆","多哥"和"斯威士兰"。同理,还可以建立"南美"页面,然后它的子页面就可包括有"巴西","阿根廷"和"智利"。你的站点看起来就会这个样子:

  • 非洲
    • 喀麦隆
    • 莱索托
    • 斯威士兰
    • 多哥
  • 南美
    • 阿根廷
    • 巴西
    • 智利

打开管理 > 撰写 > 撰写页面面板,在面部右上角点击"父页面"下拉菜单。下拉菜单中包含了网站中已有页面的列表。如要将当前页转为子页面或父页面的子页面的或,请从下拉菜单中选取适当的页面。如果你从列表中指定了一个父页面,那么当前正在编辑的页面就会成为已选页面的子页面。当页面被罗列出来时,子页面会被嵌套在父页面之下。而从这些页面的固定链接也能看出出页面的层次结构。

上例中喀麦隆页面的固定链接就该是:

http://example.com/africa/cameroon/

页面模板

单个页面可以使用外观主题中特定的自定义页面模板(PHP模板文件,如snarfer.php)(参见定制模板指导下的[#Creating_Your_Own_Page_Templates 创建自己的页面模板])。新的页面模板会覆盖外观主题中默认的page.php页面模板。 参见后文[#What Template is used to Display a Particular Page?|使用何种模板显示某特定页面?],来看看该使用哪种模板,不过请先读完下面这一段,这能帮助你理解该问题的答案 :)

WordPress经配置可使用不同页面的不同页面模板。在撰写 > 页面 管理面板之下(或边栏中,这取决于你所使用的WordPress版本)有一个标有"页面模板"的下拉菜单。在此你可以选择显示某特定页面所用的模板。

注:为了能够访问页面模板选择器,在当前活动外观主题中至少需有一个可用的自定义页面(参见后文[#Creating Your Own Page Templates|创建自己的页面模板来了解如何进行创建])。

默认外观主题页面模板

默认外观主题包括了3种可供使用的页面模板:

  • page.php - 默认页面模板:显示页面内容
  • archives.php - 忽略页面内容,而是按月或按主题(按分类)显示一系列的归档
  • links.php - 忽略页面内容,而使用 wp_list_bookmarks()显示链接

使用何种模板显示某特定页面?

WordPress会在当前活动外观主题中查找若干模板文件。首个查找结果将会被用来显示给定页面。WordPress会按如下顺序查找文件:

  1. 页面所选用的"页面模板"
  2. page.php
  3. index.php

创建自己的页面模板

定义各页面模板的文件可在[Using Themes|外观主题]目录下找到。要为某页面新建一个自定义页面模板的话,你需要新建一个文件。现在我们将这个页面模板命名为snarfer.php。在snarfer.php文件顶部输入如下内容:

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

以上代码定义snarfer.php文件为"Snarfer"模板。"Snarfer"这个页面模板名称可以任意修改。该模板名称将出现在外观主题编辑器中,并作为编辑该文件的链接。

该文件可被任意命名,扩展名为.php(参见你不应使用的文件名保留(不可用)的外观主题文件名;这些文件名是WordPress保留下来以备特殊之用的文件名)。

以上五行代码之后的内容可就是你自己的事啦。剩下的代码则是控制页面使用Snafer页面模板的显示方式。你可以查看一下模板标签中可用在这里的WordPress各类模板函数的介绍。你可以将其他模板(可以是page.phpindex.php)的内容复制到snarfer.php中,然后在文件开头加上上面五行代码,这样做起来会比较简单。如此一来,你只需要对HTML和 PHP代码做调整,而不需要重新建立了。这在下面给出了相关例子。一旦你完成了页面模板的创建,就将其置入外观主题目录,然后当你创建或编辑页面时就可以使用它了。(:当创建或编辑页面时,页面模板选项是不会出现的,除非你使用上述方式定义了至少一个模板。)

页面和模板样例

以下为指导性的样例列举。

带有内容的归档

该页面模板会在顶部显示页面的内容,然后在内容之下显示一个含有月归档和分类的列表。它能够用于WordPress的默认外观主题(aka Kubrick),相信只需稍加修改就能使用在很多其他的外观主题中。

将以下内容保存至arc-cont.php

<?php
/*
Template Name: Archives with Content
*/
?>

<?php get_header(); ?>

<div id="content" class="widecolumn">

 <?php if (have_posts()) : while (have_posts()) : the_post();?>
 <div class="post">
  <h2 id="post-<?php the_ID(); ?>"><?php the_title();?></h2>
  <div class="entrytext">
   <?php the_content('<p class="serif">Read the rest of this page »</p>'); ?>
  </div>
 </div>
 <?php endwhile; endif; ?>
 <?php edit_post_link('Edit this entry.', '<p>', '</p>'); ?>

</div>
<div id="main">

<?php include (TEMPLATEPATH . '/searchform.php'); ?>

<h2>Archives by Month:</h2>
  <ul>
    <?php wp_get_archives('type=monthly'); ?>
  </ul>

<h2>Archives by Subject:</h2>
  <ul>
     <?php wp_list_cats(); ?>
  </ul>

</div>
<?php get_footer(); ?>

页面文章

页面模板可以制定特定的分类利用特定的模板显示文章.它能够用于WordPress的默认外观主题(aka Kubrick),相信只需稍加修改就能使用在很多其他的外观主题中。

将以下内容保存至pageofposts.php:

<?php
/*
Template Name: PageOfPosts
*/

get_header(); ?>

	<div id="content" class="narrowcolumn">

<?php
if (is_page('21') ) {
$cat = array(12);
} elseif ( is_page('16') ) {
$cat = array(32);
} elseif ( is_page('28') ) {
$cat = array(17);
} else {
$cat = '';
}

$showposts = -1; // -1 shows all posts
$do_not_show_stickies = 1; // 0 to show stickies
$args=array(
   'category__in' => $cat,
   'showposts' => $showposts,
   'caller_get_posts' => $do_not_show_stickies,
   );
$my_query = new WP_Query($args); 

?>

	<?php if( $my_query->have_posts() ) : ?>

		<?php while ($my_query->have_posts()) : $my_query->the_post(); ?>
			<?php
			//necessary to show the tags 
			global $wp_query;
			$wp_query->in_the_loop = true;
			?>
			<div <?php post_class() ?> id="post-<?php the_ID(); ?>">
				<h2><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></h2>
				<small><?php the_time('F jS, Y') ?> <!-- by <?php the_author() ?> --></small>

				<div class="entry">
					<?php the_content('Read the rest of this entry »'); ?>
				</div>

				<p class="postmetadata"><?php the_tags('Tags: ', ', ', '<br />'); ?> Posted in <?php the_category(', ') ?> | <?php edit_post_link('Edit', '', ' | '); ?>  <?php comments_popup_link('No Comments »', '1 Comment »', '% Comments »'); ?></p>
			</div>

		<?php endwhile; ?>

		<div class="navigation">
			<div class="alignleft"><?php next_posts_link('« Older Entries') ?></div>
			<div class="alignright"><?php previous_posts_link('Newer Entries »') ?></div>
		</div>

	<?php else : ?>

		<h2 class="center">Not Found</h2>
		<p class="center">Sorry, but you are looking for something that isn't here.</p>
		<?php get_search_form(); ?>

	<?php endif; ?>

	</div>

<?php get_sidebar(); ?>

<?php get_footer(); ?>

WordPress用作CMS

你可将WordPress用于基本的内容管理。如果要这么做的话,那么你很可能为自己的内容创建了大量的页面。

将某页面用作首页

WordPress 2.1 引入的一个选项能够很简便地将任意页面设定为首页。打开WordPress管理界面中的 设定 > 阅读。在首页分类下你可以选择将任意已发布页面或日志(文章)页面设置为首页。默认设定是将最新博客日志(文章)显示为首页。

针对WP2.1之前的版本设定首页的备用方法

如果不想使用内置特点将主页设置为静态页面的话,你还有两条路可以选。使用静态首页插件,它可以将任意网页设定为你网站的首页。该插件会修改主页查询,并将带有"home(主页)"页面slug的页面粘到首页上。

当页面作为主页显示出来时,如果对当前活动外观主题存在一个名为home.php的页面模板的话,该插件会覆盖页面已定的页面模板并代之使用home.php。如页面按标准页面(如http://example.com/home/)进行访问的话,页面的已定页面模板将仍会使用

作为插件的备用方法,WordPress会识别出模板目录下的"home.php"文档,并代之index.php而使用前者来进行首页的外观定义。如果你的首页不是自己的博客的话,那么建议无论如何也要将home.php模板应用于博客页面。在调用 主循环(loop)之前你可以使用 query_posts()模板标签来呼叫任意页面。例如:

<?php 
     query_posts('pagename=home'); 
?>

将会呼叫仅具有pagename为"home"的日志(文章)。有关该模板标签的实际使用详解请见 query_posts()

包括一个页面

你还可能希望在站点各处包括进一些页面。这样一来,编辑网站元素就变得容易许多。有一个名为Improved Include Page的插件可以轻松地实现此目的。

WordPress的动态"页面"

一个网页可以是静态或者动态的。像那些只需要创建一次,无需根据用户访问而每次重新创建的标准的HTML静态页面,可以通过Dreamweaver来创建生成。 相对应的,像通过Wordpress创建的动态页面,随着每一次用户的访问,都会重新生成一次。 这些很多都是采用PHP代码,根据每一次访问,都会生成相对应新的内容。

几乎Wordpress中所有的东西都是动态生成的,包括页面。 所有的你或者其他人在Wordpress中写的内容(文章,页面,评论,链接,分类等)都保存在你的MySQL数据库中。当你的站点被访问,你的Wordpress就会从数据库中调用信息,然后通过你当前使用的WordPress模板,生成被请求的相应网页,反馈给用户。 因此,Wordpress信息都是动态的,包括那些包含在页面当中的部分。

HTML文档可以说是一个关于静态页面的例子,没有用到任何的PHP代码,比如“关于我”的页面,静态页面和动态页面的一个很大的不同,就是在你改变你的Wordpress设定,或者模板的时候,静态页面不会随之而改变。Wordpress中的页面功能之所以被开发,就是为了解决这样的问题。每一次你修改了内容或者样式,页面都会将其反映到你的博客中。

尽管是动态的页面,不过很多人都将他们当作是静态的。而对于内容发布,静态和动态的区别在上面已经解释清楚了。更加通俗的说,静态就是"缺乏改变的典型"。我们很容易就可以理解,这个单词的定义影响到了网页本身的描述类型。也很容易理解为什么人们认为的页面是静止;其他的内容为之都是动的,但通常却是保持不动的。因为通常被用来显示关于您的网站的一些固定信息。(例如,有关自己的信息,您的网站说明)。

换句话说,一个页面装载着静态信息,但却是动态生成的。 因此不管是"静态"或者"动态",都可以恰当的用来描述Wordpress的页面这一特性。但是为了避免混乱,以及页面本身是动态的,因此文档中都不把页面当作是静态的。

相关内容:

本文已被标记为需要加工。欢迎您踊跃编辑,来帮助 Codex。