stray <p> elements

时间:2011-03-04 作者:marvinhagemeister

我为基本上通过短代码插入html的列编写了wordpress短代码。问题是wpautop添加了使代码无效的散乱p元素。

要测试,请将其放入您的函数中。php:

function static_col_container($atts, $content) {
    extract(shortcode_atts(array(
        \'foo\' => \'bar\'
    ), $atts));

    $content = do_shortcode($content);
    $container = \'<div class="static-column-container">\' . $content . \'</div>\';
    return $container;
}

add_shortcode(\'static-cont\', \'static_col_container\');

function static_col($atts, $content) {
    extract(shortcode_atts(array(
    \'space\' => \'2\',
    \'class\' => \'\'
    ), $atts));

    $content = do_shortcode($content);
    $column_container = \'<div class="static-column static-column-\' . $space . \' \' . $class . \'">\' . $content . \'</div>\';

    return $column_container;
}

add_shortcode(\'static-col\', \'static_col\');
用法是:

[static-cont]
    [static-col]
       put some content here...
    [/static-col]
    [static-col]
       put some content here...
    [/static-col]
[/static-cont]
我知道Wordpress使用wpautop插入p标记,可通过以下方式禁用:

remove_filter(\'the_content\', \'wpautop\');
问题是,现在您必须自己输入每一个p元素,这很痛苦,并且使可视化编辑器无用。有没有人找到更好的解决方案?

3 个回复
最合适的回答,由SO网友:keatch 整理而成

从\\u内容中删除筛选器,并在处理短代码后运行它。

尝试:

remove_filter( \'the_content\', \'wpautop\' );
add_filter( \'the_content\', \'wpautop\' , 12);
通常在将wpautop应用于内容之后处理短代码。看见http://core.trac.wordpress.org/browser/tags/3.1/wp-includes/shortcodes.php#L296

SO网友:t31os

我在本地安装中没有看到这个问题,复制了您的短代码,然后将提供的示例放到帖子中,输出如下。

<div class="static-column-container"><br>
<div class="static-column static-column-2 "><br>
put some content here…<br>
</div><br>
<div class="static-column static-column-2 "><br>
put some content here…<br>
</div><br>
</div>
在HTML和我经常看到的可视化之间切换。

[static-cont]
    [static-col]
       put some content here...
    [/static-col]
    [static-col]
       put some content here...
    [/static-col]
[/static-cont]
。。。没有别的了。。

是否安装了插件,TinyMCE advanced?

SO网友:Djave

我也有同样的问题,不是从验证的角度来看,而是从样式的角度来看,一个错误的开头p标记破坏了我的CSS。

$retour =\'<div class="testimonial-meta">\'
$retour .=\'<h5>\'.$testimonial_name.\',</h5><span>\'.$testimonial_details.\'</span>\';
$retour .=\'</div>\';
return $retour;
正在返回:

<div class="testimonial-meta">
    <h5>John Doe,</h5>
    <p><span>Company CEO</span></div>
</div>
我通过添加CSS修复了样式:

.testimonial-meta p{
    display:inline;
}
希望这对某人有用。

结束

相关推荐

Comment form validation

如何设置注释字段的验证规则?我更改了评论者姓名/电子邮件/主页onmouseover和onblur的值(我使用它而不是标签-因此如果字段为空,它会显示“您的电子邮件”、“您的主页”等)。问题是,在提交时,它会在主页字段中提交此文本(因为它没有验证,而不像电子邮件字段,如果您输入了除something@something.something).如何验证主页字段?