WordPress中的shortcode短代碼功能使用詳解,wordpressshortcode_PHP教程

來源:互聯網
上載者:User

WordPress中的shortcode短代碼功能使用詳解,wordpressshortcode


WordPress 從 2.5 的版本開始,增加了一個 shortcode (短代碼) API ,類似於 BBS 上的 BBCode , shortcode 也可以很方便的為文章或頁面增加功能,並且 shortcode 的比起 BBCode 更加靈活和強大。下面 Kayo 為大家介紹一下 shortcode 。

一.shortcode 簡介
shortcode 可以讓開發人員通過以函數的形式建立宏內容來產生內容,或許這個概念看上去有點模糊,但實際上它是一個很簡單而實用的功能,只要會編寫基本的 PHP 函數,即可使用 shortcode ,下文會以實際的例子來說明 shortcode 的使用方法。

二.shortcode 形式
shortcode 支援封閉標籤和自閉(自動封閉)標籤,並且支援在標籤內使用參數,至於 shortcode 具體是何種形式,這就決定於開發人員怎樣編寫這個 shortcode 了。

[myshortcode]Some Content[/myshortcode] // 封閉標籤[myshortcode] // 自閉標籤[myshortcode title="example"] // 帶有一個參數的自閉標籤[myshortcode]

內容

[/myshortcode] // 標籤內可以填寫文本或 HTML[myshortcode]Content [myshortcodesecond] more content[/myshortcodesecond] // 也可以嵌套使用標籤

三.shortcode 例子
在使用 shortcode 前,首先必須在主題的 functions.php 檔案中定義 shortcode ,例如:

function myshortcode_function($atts, $content = null){ // $atts 代表了 shortcode 的各個參數,$content 為標籤內的內容  extract(shortcode_atts(array( // 使用 extract 函數解析標籤內的參數 "title" => '標題' // 給參數賦預設值,下面直接調用 $ 加上參數名輸出參數值 ), $atts)); // 返回內容 return '    

'. $title .'

'. $content .'

';} add_shortcode("msc", "myshortcode_function"); // 註冊該 shortcode,以後使用 [msc] 標籤調用該 shortcode

把上面的代碼添加到 functions.php 中,一個簡單的 shortcode 便建立好了,我們可以通過 [msc][/msc]標籤調用該 shortcode ,如:

[msc title="歡迎"]這是獨立部落格 Kayo's Melody ,歡迎來到本部落格[/msc]

在文章或頁面內容中輸入上面的調用,可以在相應的位置輸出一段歡迎語句,在 style.css 中定義相應的 CSS ,即可為短代碼賦予樣式。

Kayo 簡略的介紹了 WordPress 的短代碼(shortcode) 功能,主要是介紹了 shortcode 的主要概念和使用方法。在本文中, Kayo 將會更加詳細的介紹一下 shortcode 中較為重要的 API ,希望有助於各位開發較為複雜的 shortcode 。

四.函數 add_shortcode

該函數用於註冊一個 shortcode ,它有兩個參數:短代碼名與 shortcode 處理函數名,引用上文的例子:

function myshortcode_function($atts, $content = null){ // $atts 代表了 shortcode 的各個參數,$content 為標籤內的內容  extract(shortcode_atts(array( // 使用 extract 函數解析標籤內的參數 "title" => '標題' // 給參數賦預設值,下面直接調用 $ 加上參數名輸出參數值 ), $atts)); // 返回內容 return '    

'. $title .'

'. $content .'

';} add_shortcode("msc", "myshortcode_function"); // 註冊該 shortcode,以後使用 [msc] 標籤調用該 shortcode

msc 即為短代碼名,以後在寫文章或頁面時可以直接使用 [msc][/msc] 標籤調用該短代碼,而 "myshortcode_function" 即為例子中的短代碼處理函數的名稱。下面重點分析短代碼處理函數。

五.短代碼處理函數

shortcode 處理函數是一個 shortcode 的核心, shortcode 處理函數類似於 Flickr(WordPress 過濾器),它們都接受特定參數,並返回一定的結果。 shortcode 處理器接受兩個參數, $attr 和 $content , $attr 代表 shortcode 的各個屬性參數,從本質上來說是一個關聯陣列,而 $content 代表 shortcode 標籤中的內容。

如上面的例子,若在文章內作出調用,輸出一段歡迎語句:

[msc title="歡迎"]這是獨立部落格 Kayo's Melody ,歡迎來到本部落格[/msc]
當文章顯示時, WordPress 會註冊所有的 shortcode ,如上面的 [msc] ,若 shortcode 中有屬性參數和內容, WordPress 會把它們分離出來並解析,然後傳遞給該 shortcode 的短代碼處理函數,處理後以處理函數輸出的結果代替短代碼原本的內容顯示在文章內。

這時屬性參數會並解析會關聯陣列並傳遞給 $attr ,如上面的例子中 $attr 的值為如下的一個關聯陣列:

array( 'title' => '歡迎')

在輸出結果時,可以直接使用 $參數名 的形式進行輸出,如例子中的情況即以 $title 輸出該屬性值。

六.shortcode_atts

shortcode_atts 是一個很實用的函數,它可以為你需要的屬性參數設定預設值,並且刪除一些不需要的參數。

shortcode_atts() 包含兩個參數 $defaults_array 與 $atts , $attr 即為屬性參數集合, $defaults_array 是代表需要設定的屬性預設值,舉個例子:

$result = shortcode_atts( array( 'title' => '新標題', 'description' => '描述內容'), $atts );$attr 依然為array( 'title' => '歡迎')

這時 $result 的結果為

array( 'title' => '新標題', 'description' => '描述標題')

'title' 由於在 $defaults_array 有不同的值,因此以這個新的值為準更新了 'title' ,同時也增加了 'description' 這個值。值得注意的是, shortcode_atts() 會過濾 $defaults_array 中沒有的屬性,假如 $attr 中還有一個 'ohter' 的屬性,那麼 $result 的結果仍然是上面的結果,因為 $defaults_array 中並沒有 'other' 這個屬性。當然,這裡說的值只是屬性的預設值,真正輸出的值還是 shortcode 調用時填寫的值。

七.進一步解析屬性與設定屬性預設值

extract() 函數用於進一步解析屬性並設定屬性預設值,其中一個功能是把各屬性參數值賦予給一個形如 "$參數名" 的變數儲存起來(如例子中的 $title ),方便調用,使用該函數配合 shortcode_atts() 就可以很安全的輸出結果。這點的具體使用可以參見本文第一點“一.函數 add_shortcode”的例子。

另外,屬性名稱中的大寫字母在傳遞給處理函數前會先轉化為小寫字母,因此建議在編寫屬性名稱時直接使用小寫字母。

http://www.bkjia.com/PHPjc/1127865.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/1127865.htmlTechArticleWordPress中的shortcode短代碼功能使用詳解,wordpressshortcode WordPress 從 2.5 的版本開始,增加了一個 shortcode (短代碼) API ,類似於 BBS 上的 BBCode ,...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.