Запрашиваем обязательную загрузку миниатюры перед публикацией в WordPress

Этот небольшой сниппет обязывает авторов и администраторов задавать миниатюру записи перед публикацией любой статье. Он обновит запись и весь ее контент, но не опубликует в блог до тех пор, пока миниатюра не будет задана. Для произвольных типов записей вам просто нужно изменить условие “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

VN:F [1.9.22_1171]
Rating: 5.0/5 (1 vote cast)

Об авторе ADv

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