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

Иногда на сайтах, особенно на блогах, возникает ситуация, когда материал публикуется без миниатюры. Это случается по разным причинам: или публикатор просто забыл ее добавить, или изображение еще не готово. В результате этот пост визуально как бы выходит из общего контекста сайта. Для подобных случаев есть смысл задать какое-нибудь изображение в качестве временного, причем сделать этот процесс автоматизированным.

Как задать миниатюру по умолчанию?

Рассмотрим два способа решения этой задачи.

Способ 1. Универсальный

Первый способ подразумевает вставку изображения, загруженного заранее через Медиабиблиотеку WordPress. В итоге, если для записи не будет задана миниатюра, то для нее автоматически будет подставлено выбранное Вами изображение. Оно будет показываться как в списке постов (на главной или на страницах архивов), так и на странице самой записи.

Во-первых, необходимо загрузить само изображение. Для этого нужно в админ-панели перейти Медиафайлы -> Библиотека, нажать кнопку Добавить новый и загрузить желаемое фото. Дальше следует открыть изображение, щелкнув на нем. В итоге откроется окно Параметры файла, в котором необходимо обратить внимание на адресную строку Вашего браузера, которая будет содержать следующий адрес:

http://название_сайта/wp-admin/upload.php?item=417

Из этого адреса нужно запомнить числовое значение, стоящее после строки “item=”. В нашем случае это 417.

Второй этап решения задачи подразумевает добавление специального PHP-кода в файл functions.php Вашей активной темы сайта.

Если Вы не знаете, как редактировать functions.php, то в этом случае Вам поможет плагин ProFunctions.

Итак, в его конце должен располагаться следующий код:

function wpschool_template_thumbnail($post_id) {
    $post_thumbnail = get_post_meta($post_id, $key = '_thumbnail_id', $single = true);
    if ( !wp_is_post_revision($post_id) ) :
        if ( empty($post_thumbnail) ) {
            update_post_meta($post_id, $meta_key = '_thumbnail_id', $meta_value = '417');
    }
    endif;
}
add_action( 'save_post', 'wpschool_template_thumbnail' );

Тут в строке update_post_meta() следует вставить полученное значение Вашего изображения.

Теперь для всех новых записей Вашего сайта с отсутствующей миниатюрой будет подставлена Ваша фотография.

Главная страница сайта

Способ 2. Гибкий

Гибкость этого способа состоит в том, что Вы сами можете определять, где показывать заданную по умолчанию миниатюру для записи. Часто бывает необходимо выводить ее только в списке записей, но не в самом посте. Напомним, что предыдущий способ вывод ее везде. Такая гибкость добавляет и некие трудности, так как обязует разбираться, где и в каком именно файле Вашей темы необходимо выводить миниатюру.

Первым делом необходимо скопировать изображение миниатюры по умолчанию в каталог Вашей темы, в подпапку images. Для этого можно воспользоваться одним из FTP-клиентов. В итоге файл с картинкой должен располагаться по адресу

/wp-content/themes/название_темы/images/

Структура папок темы в FileZilla

На следующем этапе нужно добавить следующий PHP-код в файл functions.php:

function wpschool_default_thumbnail() {
    if ( has_post_thumbnail() ):
        the_post_thumbnail();
    else:
        print '<img class="wp-post-image" src="'. get_bloginfo('template_directory'). '/images/no_image.jpg' . '" width="281" height="140" alt="no image" />';
    endif; 
}

Следующим шагом будет в нужном файле темы, где выводится основной цикл (например, index.php, content.php, archive.php, category.php), вставить вызов нашей функции:

<?php wpschool_default_thumbnail(); ?>

Отметим, что если добавить этот код только в файл single.php, то миниатюра по умолчанию будет показываться исключительно на странице самой записи.

Курс WordPress-разработчик
Если Вам понравилась статья — поделитесь с друзьями
Михаил Петров