Как автоматически задать миниатюру по-умолчанию в 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: 2.3/5 (3 votes cast)

Об авторе ADv

Занимаюсь разработкой сайтов и магазинов на WordPress. Оказываю платные помощь и консультации. Skype: advokat_b
Scroll To Top