使用functions.php在Wordpress中过滤ACF的最佳方法

时间:2016-07-14 15:01:15

标签: php wordpress advanced-custom-fields

我目前正通过AFC将多段内容添加到我的帖子中,其值为:“section_content”。此外,我正在使用下面的代码来清理我的WP帖子。如何修改此过滤器以包含我的ACF?

  <?php
/**
* Clean posts from inline styling and unnecessary tags
*/

add_filter( 'the_content', 'clean_post_content' );
function clean_post_content($content) {
    if ( is_single() ) {
        $patterns = array(
        '/(<[^>]+) style=".*?"/i',                      // Remove inline styling
        '/<\/?font[^>]*>/',                             // Remove font tag
        '/<(p|span)>(?>\s+|&nbsp;|(?R))*<\/\1>/',       // Empty p, span (font tags already removed)
        '/(<h[1-6]>[^<]*)<\/?strong>(.*?<\/h[1-6]>)/',  // h1-6
        );

        $replacements = array(
        '$1',
        '',
        '',
        '$1$2'
        );

        $old_content = '';
        while ($old_content != $content) {
          $old_content = $content;
          $content = preg_replace($patterns, $replacements, $content);
        }
    }
    return $content;
}

?>

1 个答案:

答案 0 :(得分:0)

我猜你可以使用ACF Filters。我通常会挂钩acf/format_value以便在打印之前清理或修改我的自定义字段值。

您甚至可以挂钩某些字段类型,例如:

function acf_brand_trademark( $value, $post_id, $field ) {
    $value = preg_replace( '/Brand /', 'Brand<sup>™</sup> ', $value );
    return $value;
}

add_filter('acf/format_value/type=textarea', 'acf_brand_trademark', 10, 3);
add_filter('acf/format_value/type=text', 'acf_brand_trademark', 10, 3);

希望这有帮助!