Я использую этот код в теме WordPress functions.php, чтобы добавить класс «fancybox» к связанным изображениям. Тем не менее, I не хотите добавить класс fancybox к изображениям, которые связаны с URL-адресами без изображения.Regex найти метки привязки, которые ссылаются на изображение
Другими словами: в настоящее время сценарий будет добавлен класс «FancyBox» к HTML структуры, как это (который я не хочу):
<a href="http://acme.com/a-non-image-link"> <img src="http://acme.com/image.jpg" /> </a>
Где я только хочу, чтобы добавить класс структурам, как:
<a href="http://acme.com/an-image.jpg"> <img src="http://acme.com/an-image.jpg" /> </a>
или
<a href="http://acme.com/an-image.jpg"> <img src="http://acme.com/another-image.jpg" /> </a>
Как я могу изменить выражение регулярных выражений в этом коде включать только якорные тег, HREF атрибут содержит .jpg
, .jpeg
, .png
или .gif
?
Спасибо!
// Add fancybox class to linked images
function add_classes_to_linked_images($html) {
$classes = 'fancybox fancybox-img'; // can do multiple classes, separate with space
$patterns = array();
$replacements = array();
$patterns[0] = '/<a(?![^>]*class)([^>]*)>\s*<img([^>]*)>\s*<\/a>/'; // matches img tag wrapped in anchor tag where anchor tag where anchor has no existing classes
$replacements[0] = '<a\1 class="' . $classes . '"><img\2><span class="post-content-fb-btn"></span></a>';
$patterns[1] = '/<a([^>]*)class="([^"]*)"([^>]*)>\s*<img([^>]*)>\s*<\/a>/'; // matches img tag wrapped in anchor tag where anchor has existing classes contained in double quotes
$replacements[1] = '<a\1class="' . $classes . ' \2"\3><img\4> <span class="post-content-fb-btn"></span></a>';
$patterns[2] = '/<a([^>]*)class=\'([^\']*)\'([^>]*)>\s*<img([^>]*)>\s*<\/a>/'; // matches img tag wrapped in anchor tag where anchor has existing classes contained in single quotes
$replacements[2] = '<a\1class="' . $classes . ' \2"\3><img\4> <span class="post-content-fb-btn"></span></a>';
$html = preg_replace($patterns, $replacements, $html);
return $html;
}
add_filter('the_content', 'add_classes_to_linked_images', 100, 1);
@see http://stackoverflow.com/a/1732454/3163506 – Scopey