这是我的插件:
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文本编辑模式,所以我不确定为什么会这样。
链接到帖子:http://attapi.com/new-post/
[twitter username="envatowebdev"]Please follow me everybody![/twitter]
答案 0 :(得分:0)
尝试这种方式:
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;
}