Есть два способа решения задачи, но один соответствует только первому условию. Он выводится везде и в списке и в записи, поэтому немного не подходил мне. Но я приведу его тоже, возможно кому-то он пригодится 🙂
1. Способ №1
Данный способ мне не подошел.
Для начала, в библиотеку изображений добавляем картинку которая будет использоваться по умолчанию. В админ части слева выбираем - Медиафайлы - Библиотека - Добавить новый.
После, открываем файл functions.php и в самый конец вставляем код приведенный ниже.
<?php add_action('save_post', 'my_template_thumbnail'); function my_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 = '888'); } endif; } ?>
Данный код использует хук, который называется save_post, который получает данные о мета-поле миниатюры и проверяет пустое ли оно. Если оно оказывается пустым, то есть миниатюра не была задана, наш хук обновляет это поле и прописывает ID нужного нам изображения, того которое мы добавили ранее.
Цифра 888 в коде и есть ID. Вы должны поменять этот ID на свой. Чтобы узнать ID нужно в библиотеке нажать на нужное изображение и вверху в адресной строке к ссылке допишется путь, конец которого цифра, которая и есть ID. Например ?item=888. Также может внизу браузера высветится поле с ссылкой в которой будет нужный Вам ID.
После этого сохраните и проверьте результат. Результатом должно быть добавление нужного изображения во все посты без миниатюры.
P.S. Если способ не сработал, попробуйте внимательно посмотреть тот ли ID Вы добавили или воспользоваться вторым способом.
2. Способ №2
Берем нужное изображение, называем его к примеру noimages.jpg. Потом вкидываем его в папку с темой, а именно в папку images.
Далее, открываем functions.php добавляем в его конец данную функцию.
<?php function no_image() { if ( has_post_thumbnail() ): the_post_thumbnail(); else: print '<img class="wp-post-image" src="'. get_bloginfo('template_directory'). '/images/noimages.jpg' . '" width="180" height="180" alt="no image" />'; endif; } ?>
Тут вообще все просто, обычное "ЕСЛИ". Проверяем наличие миниатюры, если есть выводим, иначе - берем нужный файл с нашей папки.
Функция выводит обычный тег img в котором прописаны ширина и высота - 180px. Конечно же вы можете поменять на нужный Вам размер. или убрать его вообще.
Далее в нужном файле где выводится цикл - это index.php, content.php, archive.php, category.php и тд, это зависит от Вашей темы WordPress, вставляем следующий код, который вызывает нашу функцию
<?php no_image() ?>
Можете вставить и single.php, тогда миниатюра выведется и в записи. Я этого не делал, так как суть задачи я описал выше.
С помощью вот такой не хитрой штуки мы и справились с поставленной задачей, теперь можете не переживать о том, что где-то будет не хватать миниатюры.Можно поставить нейтральную картинку, а можно что-то и по веселее 🙂
На этом все, спасибо за внимание 🙂