为什么我的 wordpress 短代码不在结束标记之后?

Why is my wordpress shortcode not following closing tag?

这是我的插件:

add_shortcode('twitter', function($atts, $content) {

    // print_r($atts); die();
    if (!isset($atts['username']) ) $atts['username'] = 'att';
    if ( empty($content) ) $content = 'Follow me on Twitter';

    // shortcode_atts 

    $content .= '<div style="font-family: Arial, sans-serf">';
    $content .= '<h2 style="color:orange">My Plugin here!</h2>';
    $content .= '<a style="color:blue" href="http://twitter.com/' . $atts['username'] .'">' . $content .'</a></div>';

    return $content;
});

我只期待 div 和

<div>
    <h2>My Plugin here!</h2>
    <a href="http://twitter.com/envatowebdev">Please follow me everybody!</a>
</div>

但是我得到了以下信息:

<div>
    <h2>My Plugin here!</h2>
    <a href="http://twitter.com/envatowebdev">Please follow me everybody!</a>
    <div>
        <a href="http://twitter.com/envatowebdev">
            <h2>My Plugin here!</h2>
        </a>
    </div>

我认为这是因为 Wordpress 正在读取我的结束“[/twitter]”标签作为新的简码:

[twitter username="envatowebdev"]Please follow me everybody![/twitter]

但是我关注的 this tutorial 的作者并没有发生同样的问题,我处于 ​​HTML 文本编辑模式,所以我不确定为什么会这样.

Link 到 post:http://attapi.com/new-post/

[twitter username="envatowebdev"]Please follow me everybody![/twitter]

试试这个方法:

function testf($atts, $content = "") {           



        // print_r($atts); die();
        if (!isset($atts['username']) ) $atts['username'] = 'att';
        if ( empty($content) ) $content = 'Follow me on Twitter';

        // shortcode_atts 
        ob_start();
        ?>
        <div style="font-family: Arial, sans-serf">
            <h2 style="color:orange">My Plugin here!</h2>
            <a style="color:blue" href="http://twitter.com/<?php echo $atts['username']; ?>"><?php echo $content; ?></a></div>
        </div>
        <?php

        $content = ob_get_contents();
        ob_end_clean();

        return $content;
    }