并不是所有的模板文件都會生成將由瀏覽器呈現的整個內容。 一些模板文件被其他模板文件拉入,如comments.php,header.php,footer.php,sidebar.php和content-{$ slug} .php。 您將通過這些模板文件中的每一個來了解目的以及如何構建它們。
## Header.php
header.php文件完全符合您的期望。 它包含瀏覽器將為標題呈現的所有代碼。 這是一個部分模板文件,因為除非不同的模板文件調用模板標簽get_header(),瀏覽器將不會呈現此文件的內容。
通常網站具有相同的標題,無論您所在的頁面或帖子如何。 但是,根據頁面的不同,一些網站會有輕微的變化,例如輔助導航或不同的橫幅圖像。 如果您使用條件標簽,您的header.php文件可以處理所有這些變體。
幾乎所有的主題都有一個header.php文件,因為這個文件的功能和可維護性幾乎要求它的創建。
下面是一個在 twenty fifteen主題中找到的header.php的例子。
```
<!DOCTYPE html>
<html <?php language_attributes(); ?> class="no-js">
<head>
<meta charset="<?php bloginfo( 'charset' ); ?>">
<meta name="viewport" content="width=device-width">
<link rel="profile" href="http://gmpg.org/xfn/11">
<link rel="pingback" href="<?php bloginfo( 'pingback_url' ); ?>">
<!--[if lt IE 9]>
<script src="<?php echo esc_url( get_template_directory_uri() ); ?>/js/html5.js"></script>
<![endif]-->
<?php wp_head(); ?>
</head>
<body <?php body_class(); ?>>
<div id="page" class="hfeed site">
<a class="skip-link screen-reader-text" href="#content"><?php _e( 'Skip to content', 'twentyfifteen' ); ?></a>
<div id="sidebar" class="sidebar">
<header id="masthead" class="site-header" role="banner">
<div class="site-branding">
<?php if ( is_front_page() && is_home() ) : ?>
<h1 class="site-title"><a href="<?php echo esc_url( home_url( '/' ) ); ?>" rel="home"><?php bloginfo( 'name' ); ?></a></h1>
<?php else : ?>
<a href="<?php echo esc_url( home_url( '/' ) ); ?>" rel="home"><?php bloginfo( 'name' ); ?></a>
<?php endif; $description = get_bloginfo( 'description', 'display' ); if ( $description || is_customize_preview() ) : ?>
<?php echo $description; ?>
<?php endif; ?>
<button class="secondary-toggle"><?php _e( 'Menu and widgets', 'twentyfifteen' ); ?></button>
</div>
<!-- .site-branding -->
</header>
<!-- .site-header -->
<?php get_sidebar(); ?>
</div>
<!-- .sidebar -->
<div id="content" class="site-content">
```
一些代碼首先可能看起來有點令人生畏,但如果我們把它打破了,那就變得簡單了。 開幕后,頭部被創建。 模板標簽wp_head()拉入我們所有的樣式和任何出現在頭部而不是我們在我們的functions.php文件中排隊的頁腳的腳本。
接下來,身體被打開,HTML和PHP的混合存在。 您可以在網站品牌div中看到一些基于用戶所在頁面顯示的條件標簽。 然后網站導航被拉入。最后,主站點內容div被打開,最接近footer.php文件。
要注意的一個重要的模板標簽是在開頭body標簽中找到的body_class()。 這是一個超級方便的標簽,通過根據模板文件和其他正在使用的設置給予您的身體類別,使您的主題更容易設計。
## Footer.php
很像header.php文件,footer.php是一個非常常見的模板文件,大多數主題都使用。 footer.php文件中的代碼將不會被渲染,除非另外一個模板文件使用get_footer()模板標簽來拉入footer.php。 與標題類似,您可以使用條件標簽來創建頁腳的變體。
開發人員通常會將腳本區放在頁腳中,以便最終用戶可以輕松地將不同的內容類型拖放到頁腳中。
以下是Twenty Fifteen主題的footer.php文件的示例。
```
</div>
<!-- .site-content -->
<footer id="colophon" class="site-footer" role="contentinfo">
<div class="site-info">
<?php /** * Fires before the Twenty Fifteen footer text for footer customization. * * @since Twenty Fifteen 1.0 */ do_action( 'twentyfifteen_credits' ); ?>
<a href="<?php echo esc_url( __( 'https://wordpress.org/', 'twentyfifteen' ) ); ?>"><?php printf( __( 'Proudly powered by %s', 'twentyfifteen' ), 'WordPress' ); ?></a>
</div>
<!-- .site-info -->
</footer>
<!-- .site-footer -->
</div>
<!-- .site -->
<?php wp_footer(); ?>
</body>
</html>
```
## 404.php
當用戶嘗試訪問您網站上不存在的頁面時,會將其導向到index.php頁面,除非您已經創建了一個404.php模板。 這是一個好主意,有一些消息,說明頁面丟失或不再可用。 創建此模板有助于保持主題的視覺方面一致,并向最終用戶提供有用的信息。
這是 twenty fifteen主題的一個404.php模板文件的例子。
```
get_header(); ?>
<div id="primary" class="content-area">
<main id="main" class="site-main" role="main">
<section class="error-404 not-found">
<header class="page-header">
<h1 class="page-title"><?php _e( 'Oops! That page can’t be found.', 'twentyfifteen' ); ?></h1>
</header>
<!-- .page-header -->
<div class="page-content">
<?php _e( 'It looks like nothing was found at this location. Maybe try a search?', 'twentyfifteen' ); ?>
<?php get_search_form(); ?>
</div>
<!-- .page-content -->
</section>
<!-- .error-404 -->
</main><!-- .site-main -->
</div>
<!-- .content-area -->
<?php get_footer(); ?>
```
## Comments.php
comments.php文件處理你所期待的,評論。 這是一個部分模板,被拉入其他模板文件以顯示用戶在頁面或帖子上留下的注釋。 幾個不同的頁面和帖子顯示注釋,所以有必要在需要時將一個文件拉入。
在注釋模板頁面上擴展了創建注釋中涉及的代碼。
## Sidebar.php
很多主題都使用側邊欄來顯示小部件。 對于側邊欄工作在主題中,必須注冊,然后必須創建側欄的模板文件。 您將在后面的章節中了解有關注冊側邊欄的更多信息。 邊欄文件通常具有條件語句和其中的is_active_sidebar('sidebar-name')功能,以確保側邊欄中正在使用窗口小部件,以使空HTML不會不必要地添加到頁面中。
這是twenty fifteen的側邊欄模板文件的例子。 注意底部的側邊欄是使用<?php dynamic_sidebar('sidebar-1')拉入的; >。 現在無論如何,插入該邊欄的小部件將顯示在正在使用此模板的頁面上。
```
if ( has_nav_menu( 'primary' ) || has_nav_menu( 'social' ) || is_active_sidebar( 'sidebar-1' ) ) : >
<div id="secondary" class="secondary">
<?php if ( is_active_sidebar( 'sidebar-1' ) ) : >
<div id="widget-area" class="widget-area" role="complementary">
<?php dynamic_sidebar( 'sidebar-1' ); >
</div>
<!-- .widget-area -->
<?php endif; >
</div>
<!-- .secondary -->
<?php endif; >
```
## Content-{$slug}.php
許多主題開發者將他們的模板文件分解成小尺寸的小塊。他們經常將包裝器和頁面架構元素放在諸如page.php,home.php,comments.php等模板文件中,然后將代碼顯示在另一個模板文件中。輸入內容 - {$ slug} .php:常見的例子是content-page.php,content-post.php,content-portfolio.php,content-none.php。這些不是WordPress識別并將以某種方式解釋的文件名,而是顯示特定類型內容的常見方法。
例如,通常在博客帖子上,您想要顯示作者的姓名,帖子的日期以及可能的帖子類別。你也可能有鏈接到上一個和下一個帖子。該信息在常規頁面上是不合適的。類似地,在投資組合頁面上,您可能會有一個特色圖片或圖庫,您可能會以不同于說博客或頁面的精選圖片的方式顯示。
您將要使用get_template_part()模板標簽來拉入內容 - {$ slug} .php文件。要拉入你的content-page.php文件,你可以調用get_template_part('content','page');
這是一個content-page.php模板文件的twenty fifteen的例子。
```
<article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
<?php // Post thumbnail. twentyfifteen_post_thumbnail(); ?>
<header class="entry-header">
<?php the_title( '
<h1 class="entry-title">', '</h1>
' ); ?>
</header>
<!-- .entry-header -->
<div class="entry-content">
<?php the_content(); ?>
<?php wp_link_pages( array( 'before' => '
<div class="page-links"><span class="page-links-title">' . __( 'Pages:', 'twentyfifteen' ) . '</span>',
'after' => '</div>
',
'link_before' => '<span>',
'link_after' => '</span>',
'pagelink' => '<span class="screen-reader-text">' . __( 'Page', 'twentyfifteen' ) . ' </span>%',
'separator' => '<span class="screen-reader-text">, </span>',
) );
?>
</div>
<!-- .entry-content -->
<?php edit_post_link( __( 'Edit', 'twentyfifteen' ), '
<footer class="entry-footer"><span class="edit-link">', '</span></footer>
<!-- .entry-footer -->' ); ?>
</article>
<!-- #post-## -->
```
- 簡介
- 主題開發
- WordPress許可證
- 什么是主題
- 開發環境
- 主題開發示例
- 主題基礎
- 模板文件
- 主樣式表(style.css)
- 文章類型
- 規劃主題文件
- 模板層級
- 模板標簽
- 循環
- 主題函數
- 連接主題文件和目錄
- 使用CSS和JavaScript
- 條件標簽
- 類別,標簽和自定義分類
- 模板文件
- 內容模板文件
- 頁面模板文件
- 附件模板文件
- 自定義內容類型
- 部分和其他模板文件
- 評論模板
- 分類模板
- 404頁面
- 主題功能
- 核心支持的功能
- 管理菜單
- 自定義Headers
- 自定義Logo
- 文章格式
- 置頂文章
- Sidebars
- Widgets
- 導航菜單
- 分頁
- 媒體
- Audio
- Images
- Galleries
- Video
- 精選圖片和縮略圖
- 國際化
- 本地化
- 輔助功能
- 主題選項 – 自定義API
- 定制對象
- 改進用戶體驗的工具
- 定制JavaScript API
- JavaScript / Underscore.js渲染的自定義控件
- 高級用法
- 主題安全
- 數據消毒/逃避
- 數據驗證
- 使用隨機數
- 常見漏洞
- 高級主題
- 子主題
- UI最佳實踐
- JavaScript最佳做法
- 主題單元測試
- 驗證你的主題
- Plugin API Hooks
- 發布你的主題
- 所需的主題文件
- 測試
- 主題評論指南
- 寫文檔
- 提交你的主題到WordPress.org
- 參考文獻
- 模板標簽列表
- 條件標簽列表
- 編碼標準
- HTML編碼標準
- CSS編碼標準
- JavaScript編碼標準
- PHP編碼標準
- 插件開發
- 插件開發簡介
- 什么是插件
- 插件基礎
- 頭部要求
- 包括軟件許可證
- 啟用 / 停用 Hooks
- 卸載方法
- 最佳做法
- 插件安全
- 檢查用戶功能
- 數據驗證
- 保護輸入
- 保護輸出
- 隨機數
- Hooks
- Actions
- Filters
- 自定義Hooks
- 高級主題
- 管理菜單
- 頂級菜單
- 子菜單
- 短代碼
- 基本短碼
- 封閉短碼
- 帶參數的短代碼
- TinyMCE增強型短碼
- 設置
- 設置API
- 使用設置API
- 選項API
- 自定義設置頁面
- 元數據
- 管理帖子元數據
- 自定義元數據
- 渲染元數據
- 自定義文章類型
- 注冊自定義文章類型
- 使用自定義文章類型
- 分類
- 使用自定義分類
- 在WP 4.2+中使用“split術語”
- 用戶
- 創建和管理用戶
- 使用用戶元數據
- 角色和功能
- HTTP API
- JavaScript
- jQuery
- Ajax
- 服務器端PHP和入隊
- Heartbeat API
- 概要
- 計劃任務
- 了解WP-Cron計劃
- 安排WP-Cron 事件
- 將WP-Cron掛接到系統任務計劃程序中
- WP-Cron簡單測試
- 國際化
- 本地化
- 如何國際化您的插件
- 國際化安全
- WordPress.org
- 詳細插件指南
- 規劃您的插件
- 如何使用Subversion
- 插件開發者常見問題
- 開發工具
- Debug Bar 和附加組件
- 輔助插件
- REST API手冊
- 資源
- 文章
- 文章修訂
- 文章類型
- 文章狀態
- 類別
- 標簽
- 頁面
- 評論
- 分類
- 媒體
- 用戶
- 設置
- 使用REST API
- 全局參數
- 分頁
- 鏈接和嵌入
- 發現
- 認證
- 經常問的問題
- 骨干JavaScript客戶端
- 客戶端庫
- 擴展REST API
- 添加自定義端點
- 自定義內容類型
- 修改回應
- 模式
- 詞匯表
- 路由和端點
- 控制器類