我已经看到了这个问题的一些变化,但我还是无法将它们调整到我正在寻找的内容中。
在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概念。我知道我的函数的替换部分是错误的,但我不确定如何解决它。
如果您对我在哪方面做错什么有任何建议,将非常感谢!
非常感谢!!