Flector

Как автоматически линковать миниатюры записей?

Пролинкованная миниатюра

Некоторые темы для WordPress выводят миниатюры записей без ссылки на саму запись. Этим грешат даже старые дефолтные темы движка вроде Twenty Twelve и Twenty Thirteen. Не сказать, чтобы это было критично, но все-таки люди уже давно привыкли к тому, что картинка записи является ссылкой на саму запись (так выводятся новости на всех популярных новостных ресурсах вроде Lenta.ru и других). Эту ситуацию можно исправить одним простеньким сниппетом кода, который вам необходимо добавить в файл functions.php вашей темы:

//линковка миниатюр ссылками на запись start
function wph_auto_link_thumbnail($html, $post_id, $post_image_id) {
    $html = '<a href="' . get_permalink($post_id) . '" title="' 
    . esc_attr(get_the_title($post_id)) . '">' . $html . '</a>';
    return $html;
}
add_filter('post_thumbnail_html', 'wph_auto_link_thumbnail', 10, 3);
//линковка миниатюр ссылками на запись end

Данный код можно совместить с кодом, проставляющим title и alt для миниатюр:

//линковка миниатюр ссылками на запись (плюс alt и title) start
function wph_auto_link_thumbnail($html, $post_id, $post_image_id) {
    $html = '<a href="' . get_permalink($post_id) . '" title="' 
    . esc_attr(get_the_title($post_id)) . '">' . $html . '</a>';
    $post_title = esc_attr(get_the_title($post_id));
    //добавляем alt
    $html = preg_replace('/(alt=")(.*?)(")/i', '$1'.$post_title.'$3', $html);
    //добавляем title
    $html = str_replace('/>', 'title="'.$post_title.'" />', $html);
    return $html;
}
add_filter('post_thumbnail_html', 'wph_auto_link_thumbnail', 10, 3);
//линковка миниатюр ссылками на запись (плюс alt и title) end

В этом случае атрибут title у ссылки на запись вы вполне можете из кода удалить, так как все равно браузер будет показывать title-атрибут миниатюры.


Написать комментарий

Для вставки кода воспользуйтесь кнопкой "Код". Используйте предпросмотр!