WordPress ACF如何过滤一个textarea字段内容
WordPress ACF how to filter a textarea field content
我正在构建一个使用 Advanced Custom Fields(ACF 插件)的 WordPress 主题。我通过 functions.php 具有以下功能:
function filter_p_tags( $content ) {
$content = str_replace( '<p>','<p class="custom__class">', $content );
return $content;
}
add_filter('the_content', 'filter_p_tags');
add_filter('acf_the_content','filter_p_tags');
帖子和页面中的 <p>
标签已成功替换为 <p class="custom__class">
。但是,我的 ACF 字段没有被过滤。我在这里做错了什么?
值得一提的是,有问题的 ACF 字段属于选项页面。下面是选项字段在我的一个模板中的样子。
<?php the_field( 'text', 'option' ); ?>
如果您的 ACF 字段是 textarea
,那么您会希望使用 acf/format_value/type=textarea
过滤器挂钩,而不是使用将应用于 wysiwyg
的 acf_the_content
。
add_filter('acf/format_value/type=textarea', 'filter_p_tags_acf', 10, 3);
所以你的整个代码应该是这样的:
add_filter('the_content', 'filter_p_tags');
function filter_p_tags( $content ) {
$content = str_replace( '<p>','<p class="custom__class">', $content );
return $content;
}
add_filter('acf/format_value/type=textarea', 'filter_p_tags_acf', 10, 3);
function filter_p_tags_acf( $value, $post_id, $field ) {
$value = str_replace( '<p>','<p class="custom__class">', $value );
return $value;
}
另一种方法
或者,正如您所建议的,我们可以使用 acf/format_value/key={$key}
过滤器挂钩而不是 acf/format_value/type=textarea
。像这样:
add_filter('acf/format_value/key=field_abc123456', 'filter_p_tags_acf', 10, 3);
function filter_p_tags_acf( $value, $post_id, $field ) {
$value = str_replace( '<p>','<p class="custom__class">', $value );
return $value;
}
我正在构建一个使用 Advanced Custom Fields(ACF 插件)的 WordPress 主题。我通过 functions.php 具有以下功能:
function filter_p_tags( $content ) {
$content = str_replace( '<p>','<p class="custom__class">', $content );
return $content;
}
add_filter('the_content', 'filter_p_tags');
add_filter('acf_the_content','filter_p_tags');
帖子和页面中的 <p>
标签已成功替换为 <p class="custom__class">
。但是,我的 ACF 字段没有被过滤。我在这里做错了什么?
值得一提的是,有问题的 ACF 字段属于选项页面。下面是选项字段在我的一个模板中的样子。
<?php the_field( 'text', 'option' ); ?>
如果您的 ACF 字段是 textarea
,那么您会希望使用 acf/format_value/type=textarea
过滤器挂钩,而不是使用将应用于 wysiwyg
的 acf_the_content
。
add_filter('acf/format_value/type=textarea', 'filter_p_tags_acf', 10, 3);
所以你的整个代码应该是这样的:
add_filter('the_content', 'filter_p_tags');
function filter_p_tags( $content ) {
$content = str_replace( '<p>','<p class="custom__class">', $content );
return $content;
}
add_filter('acf/format_value/type=textarea', 'filter_p_tags_acf', 10, 3);
function filter_p_tags_acf( $value, $post_id, $field ) {
$value = str_replace( '<p>','<p class="custom__class">', $value );
return $value;
}
另一种方法
或者,正如您所建议的,我们可以使用 acf/format_value/key={$key}
过滤器挂钩而不是 acf/format_value/type=textarea
。像这样:
add_filter('acf/format_value/key=field_abc123456', 'filter_p_tags_acf', 10, 3);
function filter_p_tags_acf( $value, $post_id, $field ) {
$value = str_replace( '<p>','<p class="custom__class">', $value );
return $value;
}