Как автоматически задать миниатюру по-умолчанию в WordPress

В WordPress есть замечательная функция миниатюр к записям, которая была добавлена в версии 2.9. Эта функция позволяет добавлять вам собственное изображение в виде миниатюры, которая и «представляет» пользователям запись в блоге и она, эта фича, стала стандартом для разработчиков тем. Однако часто новоиспеченные блоггеры забывают указывать изображение для миниатюры, что рушит внешний вид шаблона. Во-вторых, блог выглядит немного «непрофессионально» с «поломанными» изображениями или пустым пространством на главной странице, где должны были бы быть миниатюрки. Считается, что дизайнеры тем и разработчики должны будут создать новый стандарт добавления дефолтных резервных изображений для записей в WordPress в свои шаблоны. Популярные фреймворки, такие как например Genesis, уже встроили такую функцию, когда пользователю не нужно указывать изображение для поста — в этом случае первое вложенное в запись изображение будет использовано в качестве миниатюры. В этой статье мы покажем два различных способа добавления дефолтных резервных изображений для миниатюры в WordPress.

Чтобы всё, описанное в статье, сработало, вам необходимо, чтобы функция поддержки миниатюр была включена в вашем шаблоне.

Добавляем брендированое изображение в качестве резервного

Часто, при разработке сайта для клиента, у клиента появляется много постов, у которых нет ни единого изображения. Поэтому дизайнерам полезно будет создать корпоративное изображение, которое будет отображаться для записей, у которых нет миниатюр. Для этого нужно открыть файл темы, где вы собираетесь выводить миниатюры (например это могут быть home.php, single.php, loop.php, index.php, archive.php и т.д.) Затем просто вставить следующий код внутри цикла.

<?php if ( has_post_thumbnail() ) {
the_post_thumbnail();
} else { ?>
<img src="<?php bloginfo('template_directory'); ?>/images/default-image.jpg" alt="<?php the_title(); ?>" />
<?php } ?>

Пояснение: Код проверяет, указана ли миниатюра, и если так, то отображает её. Если же миниатюра не указана, то тогда функция отобразит изображение ‘default-image.jpg’ из директории с изображениями в вашей теме.

Решение достаточно простое. Конечно же вы можете расширить его указанием размера миниатюр, класса CSS и прочим.

Добавляем первое изображение поста в качестве резервного

Часто новички в блоггинге добавляют изображения к записям, но либо же забывают указывать миниатюру, либо же просто не знают как это сделать. Разработчикам тем нужно быть готовыми к такому повороту. Решение заключается в том, чтобы использовать первое изображение в записи блога в качестве миниатюры. Для этого открываем файл темы functions.php и добавляем следующий код:

//функция для вызова первого загруженного изображения
function main_image() {
$files = get_children('post_parent='.get_the_ID().'&post_type=attachment
&post_mime_type=image&order=desc');
  if($files) :
    $keys = array_reverse(array_keys($files));
    $j=0;
    $num = $keys[$j];
    $image=wp_get_attachment_image($num, 'large', true);
    $imagepieces = explode('"', $image);
    $imagepath = $imagepieces[1];
    $main=wp_get_attachment_url($num);
		$template=get_template_directory();
		$the_title=get_the_title();
    print "<img src='$main' alt='$the_title' class='frame' />";
  endif;
}

Затем открываем файл темы, где вы выводите миниатюры к записи (например home.php, single.php, loop.php, index.php, archive.php и т.д.) и вставляем следующий код:

<?php if (  (function_exists('has_post_thumbnail')) && (has_post_thumbnail())  ) {
  echo get_the_post_thumbnail($post->ID);
} else {
   echo main_image();
} ?>

Пояснение: Сначала мы создаем функцию, которая получает первое загруженное в запись изображение для каждой записи. В коде файла нашей темы мы проверяем, есть ли у записи миниатюра. Если она есть, то отображаем её, если же нет — то отображаем первую найденную картинку.

Источник : Snipplr

И это только начало. Вы можете комбинировать оба этих решения, создать брендированые изображения для каждой рубрики и делать прочие интересные вещи.

Если вы — разработчик темы, убедитесь, что такие функции есть у вас в наличии в шаблоне :)

VN:F [1.9.22_1171]
Rating: 0.0/5 (0 votes cast)

Об авторе ADv

Занимаюсь разработкой сайтов и магазинов на WordPress. Оказываю платные помощь и консультации. Skype: advokat_b
  • http://wpnice.ru/ Dmitry

    Вот простой и удобный плагин для авто вставки картинок в featured image

    http://wordpress.org/plugins/simple-auto-featured-image/screenshots/

    • http://web-devise.com/ ADv

      Спасибо! Но всё же в большинстве своем тематика блога — нарулить нужный функционал WP БЕЗ плагинов. Если обратите внимание на рубрику, в которой расположена статья, то она называется «Своя тема», что подразумевает использование кода для разработки шаблонов WP.

      • http://wpnice.ru/ Dmitry

        Ясно, Вы видимо считате, что код в теме будет выполняться как то лучше или быстрее чем такой же в плагине :)

        • http://web-devise.com/ ADv

          Я считаю, что при разработке темы не нужно использовать плагины, а зашивать функции напрямую в файлы. Исключение могут составить какие-нибудь слайдеры по типу Revolution Slider.

          • http://wpnice.ru/ Dmitry

            Разработчики премиум тем часто так и делают (например как в вашей сахите), но во первых — всего не зашить, а во вторых — как быть владельцам бесплатных шаблонов?

          • http://web-devise.com/ ADv

            Эм…. Дело именно в том, что подавляющее большинство премиум-шаблонов как раз таки и не используют сторонние плагины, а прописывают всё в functions.php либо другие файлы фреймворка шаблона. Что не так с владельцами бесплатных тем? Нужен функционал — пропиши в нужное место. Тут скорее дело в опытности вебмастера, использующего шаблон. Сможет он отредактировать нужные файлы, либо же ему проще установить плагин. Я теряю нить беседы: мы дискутируем по поводу: Код vs. Плагин?

          • http://wpnice.ru/ Dmitry

            Ну просто, мне кажется вполне очевидным, что у кода в теме нет никаких преимуществ перед кодом в плагине. Зато у кода в плагине есть :)

  • Денис

    Здравствуйте! Подскажите пожалуйста как объединить обе эти функции в одну? Мне нужно чтобы если миниатюра есть — то показывать ее, если миниатюры нет — то показывать изображение из записи, или если нет ни миниатюры ни изображения в записи — то показывать изображение ‘default-image.jpg’. Очень нужно, помогите! Заранее благодарен.

  • Andrew

    А что если картинки подгружаются не из папки upload, а с другого сервера?

  • Евгений

    На сайте http://autobryansk.info в анонсах на главной и миниатюра и первое вложение, как оставить миниатюры одни? Не хочется все посты редактировать тег море ставить перед первым вложением, постов под 200 штук уже

    • ADv

      Нужно немного подправить код шаблона вывода новостей. Как именно — будет зависеть конкретно от Вашей темы.

Scroll To Top