用新行转义 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 对此有一个特殊功能:

wp_ksesDocs

这是它的工作原理!您可以向它传递一组您想要接受的标签,同时转义所有其他标签和属性。例如,如果你只需要保留你的 p 标签和你的自定义 class 并转义其他所有内容,那么你可以这样做:

$text = get_field( 'text', 'option' );

$whitelist_tags = array(

  'p' => array(

        'class' => array('footer__paragraph')

    )

);

echo wp_kses( $text, $whitelist_tags );

这将使您的 p 标签与您的自定义 class 保持一致,并转义所有其他标签和属性。

让我知道这是否是您要找的!