用新行转义 ACF 字段
Escape ACF fields with new lines
我在 ACF 中使用 Text Area 字段。
我已将“新行”选项设置为“自动添加段落”。
下面是 PHP 在我的模板文件中的样子:
<?php
$notice = '<p>Some text.</p>';
$text = get_field( 'text', 'option' );
if ( $text ) {
echo str_replace( '<p>', '<p class="footer__paragraph">', $text );
}
else {
echo $notice;
}
?>
您会看到我正在使用 str_replace
将自定义 CSS class 添加到 <p>
标签。
我通常会转义输出,就像这样<?php echo esc_html( $text ); ?>
。这显然是行不通的,因为 autop 为每一行添加了一个 <p>
标签。
是否可以在保持我的自定义 classes 的同时转义输出?
是的,将您感兴趣的标签和属性列入白名单是可行的。Wordpress 对此有一个特殊功能:
这是它的工作原理!您可以向它传递一组您想要接受的标签,同时转义所有其他标签和属性。例如,如果你只需要保留你的 p
标签和你的自定义 class 并转义其他所有内容,那么你可以这样做:
$text = get_field( 'text', 'option' );
$whitelist_tags = array(
'p' => array(
'class' => array('footer__paragraph')
)
);
echo wp_kses( $text, $whitelist_tags );
这将使您的 p
标签与您的自定义 class 保持一致,并转义所有其他标签和属性。
让我知道这是否是您要找的!
我在 ACF 中使用 Text Area 字段。
我已将“新行”选项设置为“自动添加段落”。
下面是 PHP 在我的模板文件中的样子:
<?php
$notice = '<p>Some text.</p>';
$text = get_field( 'text', 'option' );
if ( $text ) {
echo str_replace( '<p>', '<p class="footer__paragraph">', $text );
}
else {
echo $notice;
}
?>
您会看到我正在使用 str_replace
将自定义 CSS class 添加到 <p>
标签。
我通常会转义输出,就像这样<?php echo esc_html( $text ); ?>
。这显然是行不通的,因为 autop 为每一行添加了一个 <p>
标签。
是否可以在保持我的自定义 classes 的同时转义输出?
是的,将您感兴趣的标签和属性列入白名单是可行的。Wordpress 对此有一个特殊功能:
这是它的工作原理!您可以向它传递一组您想要接受的标签,同时转义所有其他标签和属性。例如,如果你只需要保留你的 p
标签和你的自定义 class 并转义其他所有内容,那么你可以这样做:
$text = get_field( 'text', 'option' );
$whitelist_tags = array(
'p' => array(
'class' => array('footer__paragraph')
)
);
echo wp_kses( $text, $whitelist_tags );
这将使您的 p
标签与您的自定义 class 保持一致,并转义所有其他标签和属性。
让我知道这是否是您要找的!