在?3.1 版本中引入的文章形式,是文章的一種屬性,可以被主題用來決定文章的顯示方式。其設計目的是要提供一個特殊的方法來根據文章的特點選用顯示“格式”。該方法用于替代以前需要使用分類來達到同樣目的的做法,而且更重要的是,該方法在支持的主題間是通用的。
- 官方文檔:WordPress
簡單地說,如果一位博客作者正在使用一個支持“文章形式”的主題,那么作者就可以從一個單選列表中選擇文章的形式,以此決定文章的顯示樣式。
以前是通過不同的文章分類,來使用不同的頁面模板,現在有了“文章形式”,在發表文章時,可以選擇文章發表的文章形式,用于區分其他文章的形式,從而提高文章關注度。


有了文章形式,就為主題設定文章格式提供了一種的新方法(例如,add_theme_support('post-formats', array('aside'))),然后就可以在保存文章的時候在發布信息框里選擇對應的文章格式。通過調用功能函數get_post_format( $post->ID )就能確定文章所屬格式,而post_class()將會創建“format-asides”類,以用于純 CSS 樣式編輯。
使用方法
- 參考鏈接:詳情
在主題的 functions.php 中添加下列代碼,以添加形式;
add_theme_support( 'post-formats', array( 'aside', 'chat','gallery','image','link', 'quote', 'status', 'video', 'audio' ) );
在你的文章循環的位置,添加下列判斷
<?php if( has_post_format( 'status' )) { //狀態 ?>
狀態樣式
<?php } else if ( has_post_format( 'aside' )) { //日志 ?>
日志樣式
<?php } else if ( has_post_format( 'gallery' )) { //相冊 ?>
相冊樣式
<?php } else if ( has_post_format( 'video' )) { //視頻 ?>
視頻樣式
<?php } else if ( has_post_format( 'audio' )) { //音樂 ?>
音樂樣式
<?php } else{ //標準 ?>
常規樣式
<?php } ?>
在你啟用文章的形式后,會在這里進行一個文章形式的判斷,你可以通過
<?php get_template_part( 'template-parts/content-main', get_post_type() );?>
來調用對應的模板文件,模板文件的調用順序可參考
例子
上面講解了什么是文章形式、如何添加文章形和如何判斷文章形式,下面就來了解下如何實現不同文章形式使用不同模板。
在判斷內添加文章循環的方法:
<?php while ( have_posts() ) : the_post(); ?>
<?php get_template_part( 'content', get_post_format() ); ?>
<?php endwhile; ?>
第一:舉例,我們先添加視頻音頻文章形式,首先在functions.php添加下面代碼
add_theme_support( 'post-formats', array( 'video','audio', ) );
第二:在index.php(或者需要用到文章形式的文件)中找到文章循環代碼:
<?php while ( have_posts() ) : the_post(); ?>
內容
<?php endwhile; ?>
替換成下面代碼
<?php while ( have_posts() ) : the_post(); ?>
<?php get_template_part( 'content', get_post_format() ); ?>
<?php endwhile; ?>
第三:在主題目錄創建
- content.php(默認文章形式)
- content-audio.php(音頻形式)
- content-video.php(視頻形式)
如果添加了別的文章形式 就要創建 content-xxx(形式名稱).php
支持的形式
目前支持以下文章格式:
- 日志(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)?- 聊天記錄,類似于:
張三: foo 李四: bar 張三: foo 2
注意:當編輯文章時,若沒有指定文章樣式,則默認使用“標準”。同樣,若指定了一個無效的文章形式,那么也將默認使用標準樣式。
參考函數
主題和插件可以使用函數?set_post_format()?來設置形式,使用?get_post_format()?來查詢形式,使用?has_post_format()?來檢查是否已經設置了某個形式。
添加主題支持
主題必須使用?add_theme_support()?函數,通過傳遞一個數組來告訴 WordPress 使用何種文章形式,例如:
add_theme_support( 'post-formats', array( 'aside', 'gallery' ) );
然后在主題中使用?get_post_format()?函數以檢查文章格式,并據此來修改格式。要注意的是使用默認格式的文章時,該函數返回值為FALSE。或者使用?條件判斷標簽函數?has_post_format():
if ( has_post_format( 'video' )) { echo 'this is the video format'; }
理解
怎么說呢,這個功能就是定義某一篇文章在列表中展現的形式,樣式可以自己隨便的DIY,以后發表文章時,可以選擇發表的形式,可以只寫一句話像微博一樣,可以單獨分享一個圖片、視頻或者音樂,而且因為展現形式區別于其他文章的形式,往往關注量也會高些。
注意:當編輯文章時,若沒有指定文章樣式,則默認使用“標準”。同樣,若指定了一個無效的文章形式,那么也將默認使用標準樣式。