2012-10-22 15 views

回答

1

我沒有測試過這一點,我想這取決於簡碼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'); 

編輯:我想嘗試真正想的東西通過實施這樣的功能之前,因爲它可能是一個有點會讓用戶感到困惑,除非它明確地傳達這個參數爲了做實際上物。

+1

還沒有機會測試這個,但它是有道理的,它應該工作。如果不是,它應該是一個很好的起點。我感謝你對通過這樣做的含義進行思考的評論。就我的插件而言,它對大多數用戶來說應該不會有什麼不同(即短代碼的工作方式幾乎相同),但是會爲高級用戶提供一些額外的靈活性。 – Dustin