eurobyte.ru - мощные сервера с Дата-центрами в Нидерландах и Москве. От 159 ₽/мес.

Формирование ссылки

Когда в запись добавляешь изображение и в настройках отображения указываешь ссылку медиафайл
формируется что то вроде того

<a href="url-изображения-в-полном-размере"><img src="url-миниатюры" alt=""></a>

Как можно вставить в ссылку атрибутом rel

<a href="url-изображения-в-полном-размере" rel="lightbox"><img src="url-миниатюры" alt=""></a>

пытался что то похожее найти в файле /wp-includes/media.php и /wp-includes/media-template.php и /wp-includes/link-template.php
но в меру своего ламерства ничего не нашел

Как Вы наверняка уже догадались хочу подключить скрип лайтбокса для изображений. Заранее скажу, что решение на JS не подойдет

Очень нужна Ваша помощь.

0
Венер
6.2 года назад 32
  • 1

    Одно из решений это фильтровать контент (фильтр the_content), искать регуляркой ссылку на медиа-файл и добавлять нужный атрибут заменой. Это если уже есть куча постов со вставленными медиа-файлами.

    add_filter('the_content', function($content) {
    	// Регулярка
    	$from = "/<a(.*?)href=('|\")(.*?).(jpeg|jpg|png|gif)('|\")(.*?)>/i";
    
    	// На что меняем
    	$to = '<a$1href=$2$3.$4$5 rel="lightbox"$6>';
    
    	// Собственно замена
    	$content = preg_replace($from, $to, $content);
    
    	return $content;
    });

    Если постов не много и можно вручную поменять, то можно воспользоваться фильтром image_send_to_editor. Взял стандартную функцию генерации из ядра и добавил lightbox во все случае вывода $rel

    add_filter('image_send_to_editor', function($html, $id, $caption, $title, $align, $url, $size, $alt) {
    	$html = get_image_tag( $id, $alt, '', $align, $size );
    
    	if ( $rel ) {
    		if ( is_string( $rel ) ) {
    			$rel = ' rel="' . esc_attr( $rel ) . ' lightbox"';
    		} else {
    			$rel = ' rel="attachment wp-att-' . intval( $id ) . ' lightbox"';
    		}
    	} else {
    		$rel = ' rel="lightbox"';
    	}
    
    	if ( $url )
    		$html = '<a href="' . esc_attr( $url ) . '"' . $rel . '>' . $html . '</a>';
    }, 1, 8);
    Венер 6.2 года назад

    Огромное спасибо, за ответ и за оперативность )

    Комментировать
На вопросы могут отвечать только зарегистрированные пользователи. Вход . Регистрация