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

[glossary="administrator"] ショートコードとして、このコードでうまく機能します。戻る

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

[glossary]administrator[/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]administrator が返されます。

4

1 に答える 1

2

関数に 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");

私はこれをテストしませんでしたが、あなたが望むことをすると思います。

于 2011-08-12T18:09:26.157 に答える