从高级自定义字段图像中删除P标记

时间:2015-07-20 23:25:26

标签: wordpress image tags

我正在使用WordPress 4.2.2,每次我向WYSIWYG添加图像时,它都会将输出图像包装在段落标记中。我需要删除这些标签。我在网上找到的所有东西都是从2011年开始加上它似乎无法发挥作用。

我已尝试将各种内容放在functions.php中,如:

function filter_ptags_on_images($content){
  return preg_replace('/<p>\s*(<a .*>)?\s*(<img .* \/>)\s*(<\/a>)?\s*<\/p>/iU', '\1\2\3', $content);
}
add_filter('the_content', 'filter_ptags_on_images');

似乎没什么用。我怎样才能做到这一点。

BTW我正在使用ACF Pro的WYSIWYG和JointsWP入门主题,如果有所不同,我的图片不会包含在链接标签中。

3 个答案:

答案 0 :(得分:1)

由于您使用的是高级自定义字段,因此您应该可以使用get_field(),但请关闭格式:

echo get_field('myField', $post->ID, false);

详细了解get_field() in the ACF Docs

您还可以通过在 functions.php 中执行以下操作来删除wpautop的ACF实施:

remove_filter('acf_the_content', 'wpautop');

答案 1 :(得分:0)

$('p > img').unwrap();

努夫说。

答案 2 :(得分:0)

这对我有用 - 我在我的函数文件中添加了这个以在使用高级自定义字段时摆脱图像周围的p标记所见即所得:

// gets rid of p tags around images when using the WYSIWYG advanced custom fields

function filter_ptags_on_images($content)
{
    $content = preg_replace('/<p>\s*(<a .*>)?\s*(<img .* \/>)\s*(<\/a>)?\s*<\/p>/iU', '\1\2\3', $content);
return preg_replace('/<p>\s*(<iframe .*>*.<\/iframe>)\s*<\/p>/iU', '\1', $content);
}
add_filter('acf_the_content', 'filter_ptags_on_images');