php - Wordpress 插件简码 - 内容自动中断,但 HTML 不自动中断
问题描述
我正在使用我自己创建的一个简单插件为手风琴创建一个私人 wordpress 短代码。
问题:Wordpress 在我的 HTML 结果中添加了中断和段落,这导致了设计损坏。
我可以删除自动中断,但它也不适用于包含段落的真实内容。但我不想在后端使用 p-tags。
如何阻止 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');
有什么想法可以使最后一个版本正常工作吗?我被困住了。:/
解决方案
这应该这样做。它可能只是在所有内容之后加上 p 标签。
remove_filter('the_content', 'wpautop');
推荐阅读
- javascript - 开玩笑:尝试导入本机模块时出错;无法用 Mock 预防
- sas - SAS:如何重复计算和更改值?
- javascript - 在函数内部使用“this”从视图模型列表中获取视图模型属性
- c - 寻找元素平均值的问题
- c# - WebApi iActionFilter 实现。如何读取自定义控制器属性?
- reactjs - REACT.js 中的多个独特的下拉安全问题
- c - C 释放堆栈上的内存
- c# - C# FolderBrowserDialog - 如何包含共享文件夹
- ruby-on-rails-3 - 设计 gem - 密码中不允许有特殊字符
- java - 执行 jar 文件时出现 NoSuchFileException 错误