WordPress 主题
将 URL 映射到特定模板
要完全掌握 WordPress 主题,你必须了解两个主要概念:
- 固定链接
- 模板层次结构
永久链接是永久的,不变的 URL(或链接,指向特定资源。例如:
- example.com/about-us/(WP 中的一个页面)
- example.com/services/(多个项目的列表,在 WP 术语中也称为归档)
- example.com/services/we-can-do-that-for-you/(个别项目)
当用户请求 URL 时,WordPress 会对永久链接进行逆向工程,以确定哪个模板应该控制其布局。WordPress 会查找可以控制此特定内容的各种模板文件,并最终优先考虑它找到的最具体的内容。这称为模板层次结构。
一旦 WP 在层次结构中找到匹配的视图模板,它就会使用该文件来处理和呈现页面。
例如:index.php
(默认的“catch-all”模板)将被 archive.php
(基于列表的内容的默认模板)覆盖,而 archive-services.php
又将被 archive-services.php
(专门用于名为 services
的存档的模板文件)覆盖“)。
基本主题目录结构
一个简单的主题看起来像这样:
// Theme CSS
style.css
// Custom functionality for your theme
functions.php
// Partials to include in subsequent theme files
header.php
footer.php
sidebar.php
comments.php
// "Archives", (listing views that contain multiple posts)
archive.php
author.php
date.php
taxonomy.php
tag.php
category.php
// Individual content pages
// Note that home and frontpage templates are not recommended
// and they should be replaced by page templates
singular.php
single.php
page.php
front-page.php
home.php
// Misc. Utility Pages
index.php (a catch-all if nothing else matches)
search.php
attachment.php
image.php
404.php
单一的示例(单个帖子的模板)
<?php get_header(); ?>
<?php if ( have_posts() ) while ( have_posts() ) : the_post(); ?>
<h1><?php the_title(); ?></h1>
<?php the_content(); ?>
<?php comments_template( '', true ); ?>
<?php endwhile; ?>
<?php get_sidebar(); ?>
<?php get_footer(); ?>
这里发生了什么事?首先,它加载 header.php
(类似于 PHP include 或 require),设置 The Loop,显示 the_title
和 the_content
,然后包括 comments.php
,sidebar.php
和 footer.php
。Loop 完成繁重的工作,设置了一个 Post
对象,其中包含当前查看内容的所有信息。
存档示例(多个帖子列表的模板)
<?php get_header(); ?>
<?php if ( have_posts() ) while ( have_posts() ) : the_post(); ?>
<a href="<?php the_permalink(); ?>"<?php the_title(); ?></a>
<?php the_excerpt(); ?>
<?php endwhile; ?>
<?php
next_posts_link( 'Older Entries', $the_query->max_num_pages );
previous_posts_link( 'Newer Entries' );
?>
<?php get_sidebar(); ?>
<?php get_footer(); ?>
首先,它包括 header.php
,设置 The Loop,包括 sidebar.php
和 footer.php
。但在这种情况下,循环中有多个帖子,因此会显示一个摘录,其中包含指向单个帖子的链接。next_posts_link
和 previous_posts_link
也包括在内,因此存档可以对结果进行分页。
帖子,页面,自定义帖子类型和自定义字段
开箱即用,WordPress 支持两种类型的内容:Posts
和 Pages
。帖子通常用于非分层内容,如博客帖子。页面用于静态,独立的内容,如关于我们页面,或者公司的服务页面,下面是嵌套的子页面。
从 3.0 版本开始,开发人员可以定义自己的自定义帖子类型,以扩展 WordPress 的功能,而不仅仅是基础知识。除了自定义帖子类型之外,你还可以创建自己的自定义字段以附加到帖子/页面/自定义帖子类型,从而允许你提供在模板中添加和访问元数据的结构化方式。请参阅: 高级自定义字段 。