移除& # 39;p # 39;标签v从图像函数查询


Remove 'p' tags v from images function query

我找到了一个解决方案,在创建一个只适用于一个图像的帖子时,从图像中删除到p标签。

对于它工作的图像,我查看了firebug,如下所示:

<div class="entry-content">
<a href="http://localhost:8888/wordpress/wp-content/uploads/2013/02/img-1.png">
<img class="alignnone size-full wp-image-50" width="520" height="320" src="http://localhost:8888/wordpress/wp-content/uploads/2013/02/img-1.png" alt="img-1">
</a>

等等....太好了!

但是当我上传另一张图片到另一个帖子时,会发生这种情况:

<p>
<img class="alignnone size-full wp-image-50" width="520" height="320" src="http://localhost:8888/wordpress/wp-content/uploads/2013/02/img-1.png" alt="img-1">
<br>
Lorem ipsum dolo....
</p>

这是我在函数文件中使用的函数:

<?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');
?>

那么是否有一种方法可以添加另一个"返回行",当它只是

时删除p标签的功能,因为它似乎只在

时起作用…?我希望这是有意义的!如果它有帮助,这是我的css图像:

width:100%;
height:auto;
min-width:320px;
}

我只是希望图像是我的帖子的全宽度和内容使用段落标签,因为我说它适用于我的第一个图像,但不适用任何其他!

谢谢

当你通过内容过滤器运行它时,Wordpress会添加<p>标签。如果您不想要任何额外的标记,那么就不要通过任何过滤器运行它,或者在过滤器文档中查找您认为可以使用的过滤器。

我认为你的解决方案是好的,但我认为你的正则表达式只需要第一次出现。尝试使用preg_match_all为您的正则表达式。

http://codex.wordpress.org/Plugin_API/Filter_Reference