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 的功能,而不僅僅是基礎知識。除了自定義帖子型別之外,你還可以建立自己的自定義欄位以附加到帖子/頁面/自定義帖子型別,從而允許你提供在模板中新增和訪問後設資料的結構化方式。請參閱: 高階自定義欄位 。