使用封闭的WordPress短代码传递$ content

时间:2011-08-12 17:49:52

标签: wordpress shortcode

我正在尝试使用短代码来表示词汇表功能。该函数连接到数据库,查询单词并返回定义。

目前,如果我使用自动关闭的短代码,它会起作用。

例如:

    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");

[glossary =“administrator”]作为短代码适用于此代码。它返回

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

我更喜欢使用封闭的短语,如[词汇表]管理员[/ glossary]不幸的是,我不能让它工作,因为我不知道如何(或者是否可能)将$ content作为变量(发送到数据库并找到定义)。

从下面更新。如果我将其简化为:

    <?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");
    ?>

并使用[glossary] administrator [/ glossary]它只返回内容中的[glossary]管理员。

1 个答案:

答案 0 :(得分: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");

我没有对此进行测试,但我认为它可以满足您的需求。