0
如果我有一個這樣的簡碼:是否可以檢索短代碼中屬性的順序? (WordPress的)
[shortcode att1="true" att2="true"]
有沒有什麼辦法來確定哪些屬性(ATT1或ATT2)是第一位的?因此,如果簡碼看起來像這樣,將給予不同的輸出比第一個例子:
[shortcode att2="true" att1="true"]
如果我有一個這樣的簡碼:是否可以檢索短代碼中屬性的順序? (WordPress的)
[shortcode att1="true" att2="true"]
有沒有什麼辦法來確定哪些屬性(ATT1或ATT2)是第一位的?因此,如果簡碼看起來像這樣,將給予不同的輸出比第一個例子:
[shortcode att2="true" att1="true"]
我沒有測試過這一點,我想這取決於簡碼API內部是怎樣處理的參數,但作爲只要將短代碼按照在解析短代碼時遇到的順序添加到數組中,您可以檢查提供給短代碼處理程序回調的atteibutes數組中參數的順序。像這樣的東西可能會奏效:
// [bartag foo="foo-value" bar="bar-value"]
function bartag_func($atts) {
$first_param = null;
// Loop through $atts to check which parameter comes first
foreach ($atts as $att_key => $att_value) {
switch ($att_key) {
case 'foo':
case 'bar':
$first_param = $att_key;
break 2;
}
}
// Perform filtering/modifying content, settings defaults etc. according to parameter order
if ($first_param == 'foo') {
// foo came first
} else if ($first_param != null) {
// bar came first
}
// Supply defaults and extract parameters
extract(shortcode_atts(array(
'foo' => 'something',
'bar' => 'something else',
), $atts));
// Return accordingly
return "foo = {$foo}";
}
add_shortcode('bartag', 'bartag_func');
編輯:我想嘗試真正想的東西通過實施這樣的功能之前,因爲它可能是一個有點會讓用戶感到困惑,除非它明確地傳達這個參數爲了做實際上物。
還沒有機會測試這個,但它是有道理的,它應該工作。如果不是,它應該是一個很好的起點。我感謝你對通過這樣做的含義進行思考的評論。就我的插件而言,它對大多數用戶來說應該不會有什麼不同(即短代碼的工作方式幾乎相同),但是會爲高級用戶提供一些額外的靈活性。 – Dustin