WordPress插件简码-自动中断内容,但不自动中断HTML

时间:2019-06-19 13:13:30

标签: php wordpress

我正在使用由我自己创建的简单插件为手风琴创建私有的wordpress短代码。

问题:Wordpress在我的HTML结果中添加了换行符和段落,这导致了设计中断。

我可以删除自动换行符,但是它对于包含段落的真实内容也不起作用。但是我不想在后端使用p标签。

如何阻止wordpress对HTML进行自动换行,但仍对包装内容进行自动换行?

该解决方案必须在插件中起作用-不得影响其他插件/功能。

我可以删除我的短代码之间的任何空格,因此wordpress不会添加任何中断。但这太难看了。

这样工作:

[os_accordion][os_spoiler title="Title"]Content with some

breaks.[/os_spoiler][/os_accordion]

这样就不会:

[os_accordion]
[os_spoiler title="Title"]
Content with some

breaks.
[/os_spoiler]
[/os_accordion]

我试图使用一个功能来删除中断,但是它不起作用。

//Helper to remove autops
function cleanup_shortcode_fix($content) {
    $array = array('<p>[' => '[', ']</p>' => ']', ']<br />' => ']', ']<br>' => ']');
    $content = strtr($content, $array);
    return $content;
}

//Outer accordion wrapper
function function_accordion($atts, $content = null){
    $html = '<div class="accordion">'.do_shortcode($content).'</div>';
    return cleanup_shortcode_fix($html);

}
add_shortcode('os_accordion', 'function_accordion');

//Inner wraps
function function_spoiler($atts, $content = null){

    //set default attributes and values
    $values = shortcode_atts( array(
        'title'     => '',
    ), $atts );

    //Output buffer
    ob_start();
    ?>

    <div class="toggle"><?php echo esc_attr($values['title']); ?></div>
    <div class="content"><?php echo $content; ?></div>

    <?php
    return ob_get_clean(); //Close buffer and return data
}
add_shortcode('os_spoiler', 'function_spoiler');

有什么想法可以使最新版本生效吗?我被卡住了。 :/

1 个答案:

答案 0 :(得分:0)

这应该做到。可能只是将p标签放在所有内容之后。

remove_filter('the_content', 'wpautop');