2011-06-06 85 views
2

我寫了一個基於ID顯示作者個人資料的短代碼。例如[user-profile id =「1」]將顯示作者1在user-profile.php中定義的配置文件塊。它工作(即使在同一頁面上有多個實例)。多個實例破解WordPress短代碼

function user_profile($atts, $content = null) { 
    extract(shortcode_atts(array('id' => ''), $atts)); 
    include 'user-profile.php'; 
} 

...除了短代碼輸出顯示在其他條目內容之前,無論它在代碼中的位置如何。爲了解決這個問題,我添加了這個修復:

function user_profile($atts, $content = null) { 
    extract(shortcode_atts(array('id' => ''), $atts)); 
    function get_user_profile() { include 'user-profile.php'; } 
    ob_start(); 
    get_user_profile(); 
    $output_string = ob_get_contents(); 
    ob_end_clean(); 
    return $output_string; 
} 

......它解決了定位問題,但破壞了短代碼的多個實例。 [user-profile id =「1」]可以工作,但[user-profile id =「1」] [user-profile id =「2」]會將其分開 - 頁面剛剛停止加載。

我該如何修改這個以允許多個實例?

+1

如果出現什麼錯誤,您會收到什麼錯誤?我懷疑它是由於在函數中定義了一個函數,你有沒有試過把'function get_user_profile(){}'移出user_profile函數 – 2011-06-06 18:25:29

+0

,請將你的評論移到回答部分,並將其標記爲正確的答案。 – ariefbayu 2011-06-07 04:52:51

+0

@silent謝謝,謝謝,是的,我試過之前,但它說我不能做8小時。 – ryanve 2011-06-10 22:02:28

回答

0

問題解決了!我更新了user-profile.php代碼中的代碼,以便它是全部PHP並且不使用任何回聲。然後,我將短代碼功能更改爲:

0

試試這個方法:

[user-profile id="1"][/user-profile] [user-profile id="2"][/user-profile]