【发布时间】:2014-04-25 07:51:06
【问题描述】:
我目前正在为我正在开发的 wordpress 主题创建简码。我希望它尽可能用户友好,目前我发现当我在 wordpress 编辑器中使用段落来分隔短代码时,它会添加不必要的 <p></p> 代码。
例如,当我在 WP 编辑器中键入以下内容时:
[container]
[row]
[one_half]1st Half[/one_half]
[one_half]2nd Half[/one_half]
[/row]
[/container]
我在前端得到这个结果:
<section class="wrapper special container style3"></p>
<p><div class="row"></p>
<p><div class="6u"><section>1st Half</section></div></p>
<p><div class="6u"><section>2nd Half</section></div></p>
<p></div></p>
<p></section>
如果我这样写:
[container][row][one_half]1st Half[/one_half][one_half]2nd Half[/one_half][/row][/container]
结果是正确的......像这样:
<section class="wrapper special container style3">
<div class="row">
<div class="6u">
<section>1st Half</section>
</div>
<div class="6u">
<section>2nd Half</section>
</div>
</div>
</section>
这是我的简码的 php(上面提到的三个):
// Container
function container($atts, $content = null) {
$return_string = '<section class="wrapper special container style3">'. do_shortcode($content) .'</section>';
wp_reset_query();
return $return_string;
}
// Row
function row($atts, $content = null) {
$return_string = '<div class="row">'. do_shortcode($content) .'</div>';
wp_reset_query();
return $return_string;
}
function one_half($atts, $content = null) {
$return_string .= '<div class="6u">';
$return_string .= '<section>'. do_shortcode($content) .'</section>';
$return_string .= '</div>';
wp_reset_query();
return $return_string;
}
function register_shortcodes(){
add_shortcode('row', 'row');
add_shortcode('one_half', 'one_half');
add_shortcode('container', 'container');
}
add_action( 'init', 'register_shortcodes');
我想要的是能够像第一个示例一样在 wp 编辑器中编写我的短代码(因为用户这样查看它更自然),但输出的代码像第二个示例一样正确。有什么方法可以实现吗?
【问题讨论】:
-
如果你不使用wordpress编辑器中的可视化编辑器,你还会得到额外的标签吗?
-
@nk-47 我得到了一些但没有那么多 - 但我也不想强迫我的用户使用文本编辑器而不是可视化编辑器