WordPress開(kāi)發(fā)中短代碼的實(shí)現(xiàn)及相關(guān)函數(shù)使用技巧
其實(shí)實(shí)現(xiàn)短代碼很簡(jiǎn)單,我們只需要用到 WordPress 里面的一個(gè)函數(shù)就可以搞定短代碼,外加自己的一個(gè)小函數(shù),可以讓短代碼實(shí)現(xiàn)的輕松加愉快。
短代碼實(shí)現(xiàn)原理
就像往 WP 一些動(dòng)作里加鉤子和過(guò)濾函數(shù)一樣,
短代碼只是經(jīng)過(guò)封裝了的針對(duì)文章輸出內(nèi)容的過(guò)濾器而已,
沒(méi)有像有一些主題功能說(shuō)的那么震撼、那么高深。
下面來(lái)一個(gè)簡(jiǎn)單例子:
function myName() {//短代碼要處理的函數(shù)
return "My name's XiangZi !";
}
//掛載短代碼
//xz為短代碼名稱(chēng)
//即你在編輯文章時(shí)輸入[xz]就會(huì)執(zhí)行 myName 函數(shù)
add_shortcode('xz', 'myName');
那么我們?cè)谖恼轮休斎隱xz]就會(huì)得到
My name's XiangZi !
短代碼傳參
更高深一點(diǎn)的利用,我將會(huì)在后面的文章中講到,
今天只講一下,短代碼的傳參機(jī)制
高級(jí)一點(diǎn)的例子
function myName($array,$content) {
var_dump($array);
var_dump($content);
}
add_shortcode('xz', 'myName');
編輯文章時(shí)我們輸入:
[xz a="1" b="2" c="3"]這里是三個(gè)參數(shù)哦[/xz]
在函數(shù)中我們將得到:
//$array 是一個(gè)數(shù)組,
//大體結(jié)構(gòu)如下
$array = array('a'=>'1','b'=>'2','c'=>'3');
//$content 是一個(gè)字符串
$content = '這里是三個(gè)參數(shù)哦';
shortcode_atts
不是因?yàn)楦愣檀a插件,我也不會(huì)用到這個(gè)函數(shù),
shortcode_atts 函數(shù)主要是用來(lái)設(shè)置短代碼中截獲變量的初始值。
這是一個(gè)很實(shí)用的函數(shù),其實(shí)這個(gè)函數(shù)的真正是作用在數(shù)組上得,
因?yàn)槲覀儚亩檀a中截獲的參數(shù)都是數(shù)組形式的。
shortcode_atts 函數(shù)詳解
不要被函數(shù)名所疑惑,在 WordPress 里主要是用于設(shè)置短代碼參數(shù)的默認(rèn)值,
如果我們將代碼提取出來(lái),用在別的地方,該函數(shù)可以幫我們?cè)O(shè)置一個(gè)既得數(shù)組的默認(rèn)值。
shortcode_atts 函數(shù)使用
這個(gè)函數(shù)使用起來(lái)很簡(jiǎn)單。
shortcode_atts(array( "url" => 'http://PangBu.Com' ), $url)
以上代碼的意思是,
將 $url 數(shù)組 鍵值為url的成員默認(rèn)值設(shè)定為'http://PangBu.Com',
別的地方用處似乎不多,但對(duì)于一些超級(jí)懶人,有時(shí)候攬到總是忘記或是懶得設(shè)定數(shù)組的數(shù)值時(shí),這個(gè)函數(shù)超好用。
shortcode_atts 函數(shù)聲明
/**
* Combine user attributes with known attributes and fill in defaults when needed.
*
* The pairs should be considered to be all of the attributes which are
* supported by the caller and given as a list. The returned attributes will
* only contain the attributes in the $pairs list.
*
* If the $atts list has unsupported attributes, then they will be ignored and
* removed from the final returned list.
*
* @since 2.5
*
* @param array $pairs Entire list of supported attributes and their defaults.
* @param array $atts User defined attributes in shortcode tag.
* @return array Combined and filtered attribute list.
*/
function shortcode_atts($pairs, $atts) {
$atts = (array)$atts;
$out = array();
foreach($pairs as $name => $default) {
if ( array_key_exists($name, $atts) )
$out[$name] = $atts[$name];
else
$out[$name] = $default;
}
return $out;
}
相關(guān)文章
PHP仿tp實(shí)現(xiàn)mvc框架基本設(shè)計(jì)思路與實(shí)現(xiàn)方法分析
這篇文章主要介紹了PHP仿tp實(shí)現(xiàn)mvc框架基本設(shè)計(jì)思路與實(shí)現(xiàn)方法,簡(jiǎn)單講述了php實(shí)現(xiàn)tp框架的原理,并結(jié)合實(shí)例形式分析了相關(guān)控制器、視圖及URL訪(fǎng)問(wèn)操作技巧與注意事項(xiàng),需要的朋友可以參考下2018-05-05
php通過(guò)array_unshift函數(shù)添加多個(gè)變量到數(shù)組前端的方法
這篇文章主要介紹了php通過(guò)array_unshift函數(shù)添加多個(gè)變量到數(shù)組前端的方法,涉及php中array_unshift函數(shù)操作數(shù)組的使用技巧,需要的朋友可以參考下2015-03-03
破解圖片防盜鏈的代碼(asp/php)測(cè)試通過(guò)
許多的網(wǎng)站圖片都加了防盜鏈措施,常見(jiàn)的新浪博客、網(wǎng)易相冊(cè)、百度空間、QQ空間都不能外鏈圖片,如果要先把圖片保存到本地再上傳,不免顯得麻煩。2010-07-07
PHP人民幣金額轉(zhuǎn)大寫(xiě)實(shí)例代碼
一個(gè)非常有趣的PHP人民幣金額數(shù)字轉(zhuǎn)中文大寫(xiě)實(shí)例代碼與大家分享,感興趣的小伙伴可以參考一下。2015-10-10
php采用file_get_contents代替使用curl實(shí)例
這篇文章主要介紹了php采用file_get_contents代替使用curl的方法,實(shí)例講述了file_get_contents模擬curl的post方法,對(duì)于服務(wù)器不支持curl的情況來(lái)說(shuō)有一定的借鑒價(jià)值,需要的朋友可以參考下2014-11-11
php使用GuzzleHttp實(shí)現(xiàn)HTTP請(qǐng)求
這篇文章主要為大家詳細(xì)介紹了php如何使用GuzzleHttp實(shí)現(xiàn)HTTP請(qǐng)求,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-11-11

