程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP綜合 >> WordPress開發中短代碼的實現及相關函數使用技巧

WordPress開發中短代碼的實現及相關函數使用技巧

編輯:PHP綜合

其實實現短代碼很簡單,我們只需要用到 WordPress 裡面的一個函數就可以搞定短代碼,外加自己的一個小函數,可以讓短代碼實現的輕松加愉快。

短代碼實現原理
就像往 WP 一些動作裡加鉤子和過濾函數一樣,
短代碼只是經過封裝了的針對文章輸出內容的過濾器而已,
沒有像有一些主題功能說的那麼震撼、那麼高深。
下面來一個簡單例子:

function myName() {//短代碼要處理的函數
return "My name's XiangZi !";
}
//掛載短代碼
//xz為短代碼名稱 
//即你在編輯文章時輸入[xz]就會執行 myName 函數
add_shortcode('xz', 'myName');

那麼我們在文章中輸入[xz]就會得到

My name's XiangZi !

短代碼傳參
更高深一點的利用,我將會在後面的文章中講到,
今天只講一下,短代碼的傳參機制
高級一點的例子

function myName($array,$content) {
var_dump($array);
var_dump($content);
}
 
add_shortcode('xz', 'myName');

編輯文章時我們輸入:

[xz a="1" b="2" c="3"]這裡是三個參數哦[/xz]

在函數中我們將得到:

//$array 是一個數組,
//大體結構如下
$array = array('a'=>'1','b'=>'2','c'=>'3');
//$content 是一個字符串
$content = '這裡是三個參數哦';

shortcode_atts
不是因為搞短代碼插件,我也不會用到這個函數,
shortcode_atts 函數主要是用來設置短代碼中截獲變量的初始值。
這是一個很實用的函數,其實這個函數的真正是作用在數組上得,
因為我們從短代碼中截獲的參數都是數組形式的。

shortcode_atts 函數詳解
不要被函數名所疑惑,在 WordPress 裡主要是用於設置短代碼參數的默認值,
如果我們將代碼提取出來,用在別的地方,該函數可以幫我們設置一個既得數組的默認值。

shortcode_atts 函數使用
這個函數使用起來很簡單。

shortcode_atts(array(
"url" => 'http://PangBu.Com'
), $url)

以上代碼的意思是,
將 $url 數組 鍵值為url的成員默認值設定為'http://PangBu.Com',
別的地方用處似乎不多,但對於一些超級懶人,有時候攬到總是忘記或是懶得設定數組的數值時,這個函數超好用。

shortcode_atts 函數聲明

/**
 * 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;
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved