Как у WordPress сделать ограничение на минимальное количество слов в записи

С помощью программного кода, который показан далее можно в принудительном порядке разрешать всем пользователям публиковать только записи с содержимым длиною не менее W слов. В противном случае авторы увидят стандартное сообщение WordPress об ошибке с уведомлением "Ошибка: перед публикацией ваша запись должна содержать достаточно слов.".

<?php

// Запрещаем публиковать слишком короткие посты:
function ogranichivaem_publikaciu($dannie) {
    $limit = 300;
    if ($dannie['post_type'] == 'post') :   // - это Запись?
        $kontent = $dannie['post_content']; // - получаем контент поста.
        if (str_word_count($kontent) < $limit) :
            $dannie['post_status'] = 'pending';
            add_filter('redirect_post_location', 'moi_post_redirect_filter', '99', 2);
        endif;
    endif;
    return $dannie;
}
add_filter('wp_insert_post_data', 'ogranichivaem_publikaciu', '99');

function moi_post_redirect_filter($location, $limit) {
    remove_filter('redirect_post_location', __FILTER__, '99');
    return add_query_arg('novoe_uvedomlenie', 1, $location);
}

// Регистрируем предупреждение автору:
function moi_post_uvedomlenie_adminu() {
    if (!isset($_GET['novoe_uvedomlenie'])) :
        return;
    endif;
    switch (absint($_GET['novoe_uvedomlenie'])) {
        case 1:
            $limit = $_GET['limit_slov'];
            $soobchenie = 'перед публикацией ваша запись должна содержать достаточно слов.';
            break;
        default:
            $soobchenie = 'неизвестная.';
    }
    print '<div id="notice" class="error"><p><b>Ошибка</b>: ' . $soobchenie . '</p></div>';
}
add_action('admin_notices', 'moi_post_uvedomlenie_adminu');
?>

Отредактировать минимальное допустимое количество слов для опубликованного поста можно в 4-ой строчке показанного выше примера. Код вставьте либо в файл functions.php темы, либо в плагин.





© 2012-2014 Druweb.ru. Вы можете спокойно копировать любые материалы сайта только при наличии обратной ссылки.