Этот небольшой сниппет обязывает авторов и администраторов задавать миниатюру записи перед публикацией любой статье. Он обновит запись и весь ее контент, но не опубликует в блог до тех пор, пока миниатюра не будет задана. Для произвольных типов записей вам просто нужно изменить условие “get_post_type” на ваш произвольный тип записи.
Сам сниппет
add_action('save_post', 'wpds_check_thumbnail'); add_action('admin_notices', 'wpds_thumbnail_error'); function wpds_check_thumbnail($post_id) { // меняем на любой произвольный тип записи if(get_post_type($post_id) != 'post') return; if ( !has_post_thumbnail( $post_id ) ) { // устанавливаем блокировку для вывода ее пользователям в виде административного сообщения set_transient( "has_post_thumbnail", "no" ); // делаем анхук функции, чтобы та не впала в бесконечный цикл remove_action('save_post', 'wpds_check_thumbnail'); // обновляем запись, переводим ее в черновики wp_update_post(array('ID' => $post_id, 'post_status' => 'draft')); add_action('save_post', 'wpds_check_thumbnail'); } else { delete_transient( "has_post_thumbnail" ); } } function wpds_thumbnail_error() { // проверяем, установлена ли блокировка, и выводим сообщение об ошибке if ( get_transient( "has_post_thumbnail" ) == "no" ) { echo "<div id='message' class='error'><p><strong>Вы должны задать миниатюру записи. Ваша запись сохранена, но не может быть опубликована.</strong></p></div>"; delete_transient( "has_post_thumbnail" ); } }
По всем вопросам и отзывам просьба писать в комментарии ниже.
Не забывайте, по возможности, оценивать понравившиеся записи количеством звездочек на ваше усмотрение.
Источник: WPDevSnippets