禁用文本区域的格式设置

时间:2013-02-11 作者:flashk

我在插件中使用以下代码来显示<textarea> 页面上的字段:

echo \'<textarea required="required" name="Message" class="textarea" cols="70" rows="10">\'.esc_textarea($message).\'</textarea>\';
然而,WordPress似乎正在插入<p><br /> 如果消息包含换行符,则标记为textarea内容。我假设这是由默认的wpautop()过滤器引起的。

是否有方法禁用筛选<textarea> 页面上的内容?

Edit

有关我的插件如何工作的更多信息。它为the_content, 它会将数据附加到某些页面的内容中。我还是想要wpautop 要应用于附加内容的格式,但不适用于<textarea> 领域

以下是我的插件的大致设置:

function get_special_content()
{
    $text = \'\';

    // Customized content is appended to text here
    // including the textarea field

    return $text;
}

function my_plugin_content_hook($content)
{
    if(is_some_special_page()) {
        return $content.get_special_content();
    }

    return $content;
}

add_action(\'the_content\', \'my_plugin_content_hook\');

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

添加优先级以将函数推到挂钩队列的末尾。

add_action(\'the_content\', \'my_plugin_content_hook\', 1000);
然后,在你的get_special_content 需要应用的函数wpautop 手动应用到要应用它的内容。

function get_special_content()
{
    $text = \'\';
    $autopeed = \'content to autop\';
    $text .= apply_filters(\'wpautop\',$autopeed);
    $text .= "your textarea code";
    return $text;
}
我相信这会解决你的问题。

SO网友:flashk

我发现wpautop 将保留<pre> 标签。通过放置<pre> 标记周围的<textarea> 标签,我可以防止文本区域内容被修改。

echo \'<pre><textarea>\'.esc_textarea($message).\'</textarea></pre>\';
我不知道为什么wpautop 也不会忽略<textarea> 默认情况下为标记。我无法想象你会想wpautop 应用于文本区域的内容。也许这只是一个疏忽。

结束

相关推荐