Использование вложенных шорткодов WordPress для передачи содержимого - PullRequest
1 голос
/ 12 августа 2011

Я пытаюсь использовать шорткоды для функции глоссария. Функция подключается к базе данных, запрашивает слово и возвращает определение.

В настоящее время работает, если я использую самозакрывающиеся шорткоды.

Например:

    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>.

Я бы предпочел использовать закрывающую шорткозу, такую ​​как [глоссарий] администратор [/ глоссарий] К сожалению, я не могу заставить это работать, так как я не знаю, как (или если это возможно) передать содержимое $ как переменная (для отправки в базу данных и поиска определения).

Обновление снизу. Если я упросту это до:

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

И используйте [глоссарий] администратор [/ глоссарий], он просто возвращает [глоссарий] администратор в контенте.

1 Ответ

2 голосов
/ 12 августа 2011

Просто добавьте в свою переменную вторую переменную для обработки содержимого шорткода.Это будет передано, если оно существует.

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

Я не проверял это, но я думаю, что он делает то, что вы хотите.

...