Если глянуть в исходный код моего сайта, то можно заметить, что картинки в постах вставлены не как обычно в блогах на WordPress.
А обычно картинка заключается в ссылку, ну или путем нехитрых действий можно избавиться от этой ссылки в настройках.
Со ссылкой:
<a href=""> <img class="" title="" src="" alt="" width="" height="" /> </a>
Нехитрые действия:
можно просто удалить URL и ссылка пропадёт, если же заюзать одну из кнопок, то настройки применятся ко всем изображениям, в дальнейшем вставляемым в записи на блоге,
function remove_img_links( $content ) { $content = preg_replace( array('{<a(.*?)(wp-att|wp-content/uploads)[^>]*><img}', // если медиафайлы хранятся не в uploads, то укажите своё '{ wp-image-[0-9]*" /></a>}'), array('<img','" />'), $content ); return $content; } add_filter( 'the_content', 'remove_img_links' );
В итоге от ссылок то мы всё-таки избавимся.
Итак, всё это было введение и пустая болтовня, такие способы решения вы найдете в интернете, ну по крайне мере на англоязычных сайтах.
На моем же блоге изображение заключается в блок <div class="im"></div>
, то есть ни один из этих вариантов не прокатывал, я конечно мог бы поколдовать с регулярками, но мне этот способ совсем не нравится.
Кстати, раньше я вручную правил HTML для каждой картинки в редакторе, сначала удалял ссылку, потом добавлял блок и мне это ппц как надоело 🙂
Порывшись в файлах движка в WordPress, я сам написал решение, код вставлять в functions.php текущей темы.
function true_img($html, $id, $caption, $title, $align, $url, $size, $alt) { /* $html - HTML изображения по умолчанию, вот тут уже можно побаловаться с регулярными выражениями $id - ID аттачмента $caption - надпись под картинкой $title - атрибут title $align - выравнивание $url - либо ссылка на страницу либо на файл, зависит от того, что указано в настройках выше, чтобы получить адрес картинки независимо от настроек, используем: wp_get_attachment_url( $id ) $size - размер изображения (Миниатюра, Средний, Большой и т.д.) $alt - альтернативный текст, атрибут alt */ $image_url = wp_get_attachment_url( $id ); $image_thumb = wp_get_attachment_image_src( $id, $size); list( $img_src, $width, $height ) = image_downsize($id, $size); $hwstring = image_hwstring($width, $height); // разбираемся с размерами $out = '<div class="im">'; if($url){ $out .= '<a href="'.$url.'" class="fancybox">'; } $out .= '<img src="'. $image_thumb[0] .'" alt="'.$alt.'" '.$hwstring.'/>'; if($url){ $out .= '</a>'; } $out .= '</div>'; return $out; // как раз то, что будет вставляться вместо стандартного HTML } add_filter('image_send_to_editor', 'true_img', 1, 8);
Проще простого.