At the VERY core, my question is - how to remove linebreaks on a single ACF field that is inserted with the ACF shortcode.
我这里有很多“短代码中的短代码”,所以我将逐步完成这件事。
首先,我使用ACF命令内容的方向。我有两个ACF字段,一个输入WordPress所见即所得,另一个通过ACF快捷码输入第一个ACF字段:
[acf field="home-icons"]
的内容
home-icons
字段为(使用自定义短代码和Boostrap 3短代码):
[row xclass="home-icons"]
[column sm="6"][flaticon class="hourglass"][/flaticon] Saves Time[/column]
[column sm="6"][flaticon class="graph-upward"][/flaticon] Benchmarking[/column]
[/row]
[row xclass="home-icons"]
[column sm="6"][flaticon class="24h"][/flaticon] Instant and secure access[/column]
[column sm="6"][flaticon class="site-settings"][/flaticon] Customization[/column]
[/row]
这就是我如何构建我的短代码,
flaticon
:
function flaticon( $atts, $content = null ) {
$a = shortcode_atts( array(
\'class\' => \'flaticon\',
), $atts );
return \'<i class="btn-icon btn-footer flaticon-\' . esc_attr($a[\'class\']) . \'"></i>\' . $content . \'\';
}
add_shortcode( \'flaticon\', \'flaticon\' );
这是预期输出:
<div class="row home-icons">
<div class=" col-sm-6"><i class="btn-icon btn-footer flaticon-hourglass"></i> Saves Time</div>
<div class=" col-sm-6"><i class="btn-icon btn-footer flaticon-graph-upward"></i> Benchmarking</div>
</div>
这是实际输出:
<div class="row home-icons"><br>
<div class=" col-sm-6"><i class="btn-icon btn-footer flaticon-hourglass"></i> Saves Time</div><br>
<div class=" col-sm-6"><i class="btn-icon btn-footer flaticon-graph-upward"></i> Benchmarking</div><br>
</div>
它添加了不必要的换行符,从而改变了内容,使图标不会对齐。现在的问题是,ACF使用
acf_the_content
我不想删除所有的换行符,只是那个字段(
home-icons
), 但由于这是一个短代码,我不确定如何直接针对它。
是的,我意识到如果我把所有的东西都放在一条线上,可能就没问题了,但这会交给客户,我不会假设他们会保存任何东西,也不会记住这样做。
最合适的回答,由SO网友:Aibrean 整理而成
一位同事解决了这个问题。
function removebreaks($content)
{
$content = str_replace(\'<br>\', \'\', $content);
$content = str_replace(\'<br/>\', \'\', $content);
$content = str_replace(\'<br />\', \'\', $content);
$content = str_replace(\'<BR>\', \'\', $content);
$content = str_replace(\'<BR/>\', \'\', $content);
$content = str_replace(\'<BR />\', \'\', $content);
return $content;
}
add_filter(\'acf_the_content\', \'removebreaks\');