WordPress模板層次14:文章形式

huangbangqing12發表於2018-07-08

WordPress支援的文章形式

WordPress文章形式(官方介紹)得知:

文章形式是文章的一種屬性,可以被主題用來決定文章的顯示方式。其設計目的是要提供一個特殊的方法來根據文章的特點選用顯示“格式”。該方法用於替代以前需要使用分類來達到同樣目的的做法,而且更重要的是,該方法在支援的主題間是通用的。

簡單地說,如果一位部落格作者正在使用一個支援“文章形式”的主題,那麼作者就可以從一個單選列表中選擇文章的形式,以此決定文章的顯示樣式。

WordPress中的文章形式有助於描述文章是什麼,或者使用什麼型別的內容。

支援的形式

目前支援以下文章格式:

  • 日誌(aside) – 典型樣式就是沒有標題。類似於 Facebook 或人人網中更新的一條日誌。
  • 相簿(gallery) – 影像陳列廳。文章中通常會有“gallery”程式碼和相應的影像附件。
  • 連結(link) – 連結到其它網站的連結。主題可能會使用文章中的第一個 <a href=””> 標籤作為文章的外部連結。有可能有的文章至包含一個 URL,那麼這個 URL 將會被使用;同時,文章標題(post_title)將會是附加到它的錨的名稱。
  • 影像(image) – 單張影像。文章中的首個 <img /> 標記將會被認為是該圖片。另外,如果文章只包含一個 URL 連結,則被認為是該圖片的 URL 地址,而文章標題(post_title)將會作為圖片的標題屬性。
  • 引語(quote) – 引用他人的一段話。通常使用 blockquote 來包裹引用內容。或者,可能直接將引語寫入文章,並將其出處寫在標題欄。
  • 狀態(status) – 簡短更新,通常最多 140 個字元。類似於微博 Twitter 狀態訊息。
  • 視訊(video) – 單一視訊。文章中第一個 <video /> 或 object 或 embed 將被作為視訊處理。或者,文章可以僅包含視訊的 URL,甚至一些主題和外掛可以支援自動嵌入您的文章附件中的視訊。
  • 音訊(audio) – 一個音訊檔案。可以用於播客(podcasting)等。
  • 聊天(chat) – 聊天記錄,類似於:

文章形式的工作原理

現在我們來看使用這些形式的常見做法,以便大家可以看到它們的工作原理。

為了講解的方便,我們將進入 Twenty_Fifteen 主題:

You must be logged in to view the hidden contents.

來看一下 single.php 文章模板:

<?php
/**
 * The template for displaying all single posts and attachments
 *
 * @package WordPress
 * @subpackage Twenty_Fifteen/***這是Twenty_Fifteen主題的single.php模板***/
 * @since Twenty Fifteen 1.0
 */

get_header(); ?>

    <div id="primary" class="content-area">
        <main id="main" class="site-main" role="main">

        <?php
        // Start the loop.
        while ( have_posts() ) : the_post();

            /*
             * Include the post format-specific template for the content. If you want to
             * use this in a child theme, then include a file called called content-___.php
             * (where ___ is the post format) and that will be used instead.
             */
            get_template_part( 'content', get_post_format() );/***get_post_format()會返回文章格式資訊,從而呼叫不同的檔案來實現文章模板***/

注意:get_template_part(’content’,get_post_format())。

get_post_format()會返回文章格式資訊,從而呼叫不同的檔案來實現文章模板。

比如說,如果你為一篇文章選擇的形式是:狀態(status),那麼get_post_format()這個函式返回的值就是’status’。所以,get_template_part()就會去查詢名為content-dtatus.php的檔案。

所以,來到主題目錄中,在這裡,我們有 content-link.php/content-none.php/content-page.php/content-search.php ,所以,如果沒有找到 status ,就預設使用 content-none.php :

那麼,如果文章的形式是連結(link),那麼這篇文章將呼叫 content-link.php 模板。

所以,它的原理和模板層次結構的原理不同,實際上它是根據 get_post_format() 返回的文章格式資訊,然後動態地選擇正確的模板。

你可以檢視任何預設的 WordPress 主題,這種做法也比較通用,重要的是你瞭解文章形式的工作原理

如何指定主題支援的文章形式

還需要注意的是:如何指定文章形式?

來到 Twenty_Fifteen 主題下的 functions.php:

    /*
     * Enable support for Post Formats.
     *
     * See: https://codex.wordpress.org/Post_Formats
     */
    add_theme_support( 'post-formats', array(
        'aside', 'image', 'video', 'quote', 'link', 'gallery', 'status', 'audio', 'chat'
    ) );/***指定你想支援的文章形式***/

如果你打算構建一個自定義的主題,必須具體指定你想支援的文章格式。並指定要使用哪種型別的文章格式。

Twenty_Fifteen 主題中,支援幾乎所有的文章形式。

這些文章形式反映到WordPress網站的後臺就是:

所以,如果你在functions.php中刪除或新增格式,那麼這些修改將在編寫文章時,顯示出來。

總的來說,關於文章形式的選擇,它的原理不同於模板層次結構,它是一個命名約定,通過條件語句,來判斷使用哪個模板進行顯示。

相關文章