我正在使用由我自己创建的简单插件为手风琴创建私有的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');
有什么想法可以使最新版本生效吗?我被卡住了。 :/
答案 0 :(得分:0)
这应该做到。可能只是将p标签放在所有内容之后。
remove_filter('the_content', 'wpautop');