Wordpress:剥离<p>标签的图像并添加</p> <div> IF图像没有标题</div>

时间:2013-11-19 02:26:39

标签: wordpress image html preg-replace caption

我已经看到了这个问题的一些变化,但我还是无法将它们调整到我正在寻找的内容中。

在Wordpress帖子中,如果使用标题上传图像,则图像将以div格式输出(带有类wp-caption)。完善。 但是,如果没有标题,则图像将包含在段落标记中。我想用div替换它。 因此,如果图像是在没有标题的情况下上传的,那么它也会被包含在div中 - 类似于class =“wp-nocaption”。

我的第一次尝试是修改media.php文件。我改变了这一部分:

if ( 1 > (int) $width || empty($caption) )
  return $content;
if ( $id ) $id = 'id="' . esc_attr($id) . '" ';
  return '<div ' . $id . 'class="wp-caption ' . esc_attr($align) 
  . '" style="width: ' . (10 + (int) $width) . 'px">'
  . do_shortcode( $content ) . '<p class="wp-caption-text">' . $caption . '</p></div>';

到此:

if ( 1 > (int) $width || empty($caption) )
  return '<div ' . $id . 'class="wp-nocaption ' . esc_attr($align) 
  . '" style="width: ' . ($width) . 'px">'
  . do_shortcode( $content ) . '</div>';

if ( $id ) $id = 'id="' . esc_attr($id) . '" ';
  return '<div ' . $id . 'class="wp-caption ' . esc_attr($align) 
  . '" style="width: ' . ($width) . 'px">'
  . do_shortcode( $content ) . '<p class="wp-caption-text">' . $caption . '</p></div>';

我希望对于带有标题的非图片图像也会做同样的事情,除了div会有不同的类别。

但那没用。有谁知道为什么?

我还发现了一些建议使用preg_replace函数的文章。

http://css-tricks.com/snippets/wordpress/remove-paragraph-tags-from-around-images/

https://wordpress.stackexchange.com/questions/7090/stop-wordpress-wrapping-images-in-a-p-tag

我调整了他们的函数,试图用div标签替换包裹在链接中的图像的段落标记。

function filter_ptags_on_images($content) { 
  return preg_replace('/<p>\s*(<a .*>)?\s*(<img .* \/>)\s*(<\/a>)?\s*<\/p>/iU', 
  '/<div class="wp-nocaption">\s*(<a .*>)?\s*(<img .* \/>)\s*(<\/a>)?\s*<\/div>/iU', 
  $content); 
}
add_filter('the_content', 'filter_ptags_on_images');

但这不起作用。我一直在阅读很多,但仍然无法围绕“反向引用”的php概念。我知道我的函数的替换部分是错误的,但我不确定如何解决它。

如果您对我在哪方面做错什么有任何建议,将非常感谢!

非常感谢!!

0 个答案:

没有答案