2011-08-12 31 views
1

我正在嘗試使用簡碼功能。該函數連接到數據庫,查詢單詞並返回定義。

目前,如果我使用自閉式短碼,它可以正常工作。

例如:

function defineGlossary($atts) { 
    extract(shortcode_atts(array(
    'term' => '0' 
    ), $atts)); 

    // connect to database and grab definition 

    $glossary_output .= "<span title='"; 
    $glossary_output .= $result_definition; 
    $glossary_output .= "'>"; 
    $glossary_output .= $term; 
    $glossary_output .= "</span>"; 
    return $glossary_output; 
    } 
    add_shortcode("glossary", "defineGlossary"); 

[詞彙表= 「管理員」]作爲短碼與此代碼工作很大。它返回

<span title="definition pulled from the database">administrator</span>. 

我寧願使用一個封閉shortcose如[名詞解釋]管理員[/詞彙不幸的是,我不能得到這個工作,因爲我不知道如何(或者如果可能的話),以將$內容作爲變量傳遞(發送到數據庫並查找定義)。

從下面更新。如果我把它簡化爲:

<?php 
    function defineGlossary($atts, $shortcodeContent = null) { 
    $glossary_output .= "<span title='"; 
    $glossary_output .= "Sample Definition"; 
    $glossary_output .= "'>"; 
    $glossary_output .= $shortcodeContent; 
    $glossary_output .= "</span>"; 
    return $glossary_output; 
    } 
    add_shortcode("glossary", "defineGlossary"); 
    ?> 

並使用[名​​詞解釋]管理員[/詞彙]它只是在內容返回[名詞解釋]管理員。

回答

2

只需在函數中添加第二個變量來處理短代碼內容即可。如果它存在,這將被傳遞。

function defineGlossary($atts, $shortcodeContent = null) { 
    if (is_null($content)) { 
     //handle if shortcode isn't defined 
    } 

    // connect to database and grab definition 
    $glossary_output .= "<span title='"; 
    $glossary_output .= $result_definition; 
    $glossary_output .= "'>"; 
    $glossary_output .= $shortcodeContent; 
    $glossary_output .= "</span>"; 
    return $glossary_output; 
} 
add_shortcode("glossary", "defineGlossary"); 

我沒有測試這個,但我認爲它是做你想做的。

+0

我認爲這樣做也可以,但事實並非如此。如果我試圖通過$內容,我只是最終:[詞彙表]管理員出現。 – rmlumley

+0

那麼你的代碼中肯定會有些不妥。如果你只是回聲'$ content',你會得到什麼? – mrtsherman

+0

我更新了上面的示例以向您展示我現在正在嘗試的內容。我仍然得到相同的結果。 – rmlumley