WordPress Shortcode 指的是一些使用[]包含的短代碼,WordPress 會識別這些短代碼並根據短代碼的定義輸出為特定的內容,Shortcode API 這個功能是 WordPress 從 2.5 版本開始引入的,使用它可以給日誌內容添加各種功能,並且 Shortcode 這個接口非常容易使用,並且功能非常強大。
Shortcode 類型
Shortcode API 支持幾乎所有可能的組合形式:自關閉標籤,開放標籤,含有參數的標籤等。
[mycode] [mycode foo="bar" id="123" color="red" something="data"] [mycode]Some Content[/mycode] [mycode]<p><a href="http://example.com/">HTML Content</a<>/p>[/mycode] [mycode]Content [another-shotcode] more content[/mycode] [mycode foo="bar" id="123"]Some Content[/mycode]
Shortcode 基本概念
首先你要去定義一個函數,來處理你定義的 Shortcode,和它的屬性參數以及引用的內容。
function my_shortcode_func($attr, $content) { // $attr $key=>$value 的數組 // $content 是 shortcode 中包含的字符串 // 對 $attr 和 $content 進行處理 // 返回預期的值 }
然後把自己定義的 Shortcode 和其處理函數管理起來,以便 [mycode attr="value"]content[/mycode] 能夠按照預期執行。
add_shortcode('mycode', 'my_shortcode_func')
Shortcode 相關的函數
WordPress 定義了以下和 Shortcode 相關的函數:
- add_shortcode(‘mycode’, ‘function_name’); // 定義一個新的 Shortcode
- remove_shortcode(‘mycode’); // 移除一個 Shortcode
- remove_all_shortcodes(); // 移除所有的 Shortcode
- $return = do_shortcode($content); // 解析 $content 中的 Shortcode 並返回
- $return = strip_shortcodes($content); // 刪除 $content 中的 Shortcode 標籤並返回
一個簡單的 Shortcode 例子
以我寫的 Antispambot ShortCode 插件為例,它定義 [email] 這個 Shortcode,將用戶輸入的 email 地址轉義成 HTML 實體,防止機器抓取,它的內容($content)就是郵箱地址,還定義了屬性 $link
,它的值為 1 時候,郵箱顯示為可點擊,詳細代碼如下:
function antispambot_shortcode_handler($atts, $content='') { extract( shortcode_atts( array( 'link' => '0' ), $atts ) ); if($link){ return '<a href="mailto:'.antispambot($content,1).'" title="mail to '.antispambot($content,0).'">'.antispambot($content,0).'</a>'; }else{ return antispambot( $content,0); } } add_shortcode('email', 'antispambot_shortcode_handler');
Shortcode 更多高級使用技巧:
使用 Shortcode API 開發的插件
本站長期承接 WordPress 項目,詳情請加 QQ:11497107 或者 Email:denis@wpjam.com。
如有 WordPress 問題,請到 WPJAM 問答提問!QQ 上不方便解答!