Intereting Posts
Таблица опций огромна. Что я могу сделать? Как использовать настраиваемое поле для оптимизации поисковых систем Как сделать мой домашний образ прозрачным в рамках темы Edin? Несколько типов сообщений или один тип сообщения с таксономией категории? Как показать пользовательское уведомление конкретному пользователю? Одна категория, не отображающая обновления шаблонов Синхронизировать пользовательские теги типа сообщения с тегами типа postpost по умолчанию WordPress Автоматический вход в систему с использованием cURL: пользователь выходит из системы на странице обновления Есть ли способ сделать настраиваемые поля редактируемыми только администраторами? не удалось создать пользовательскую таблицу базы данных при активации плагина wordpress по методу php OOP Получить выбранный URL-адрес из списка страниц wplink для использования в коротком коде Действия строки для пользовательских типов сообщений? 404 постоянных ошибок на страницах только Проблема с SEO Ultimate Автоматическое изменение состояния сообщения при загрузке первой страницы

Как вы можете быть уверены, что записи авторов более 250 слов?

Я создаю сайт, на котором авторы могут подписываться и писать статьи. Однако я не хочу, чтобы сообщения низкого качества были отправлены. Итак, во-первых, я хочу, чтобы сообщения были пустыми и длиннее 250 слов.

Итак, что-то вроде:

if (empty($post) && $post < 250) { echo 'Error, must be longer than 250 words'; } 

Очевидно, что этот код не будет работать, но это общее представление о том, чего я хочу. Однако я не уверен, как это сделать. Их использование в WordPress?

Solutions Collecting From Web of "Как вы можете быть уверены, что записи авторов более 250 слов?"

Не допускайте публикации автором слишком короткого контента:

Вот одна идея, использующая пользовательский статус сообщения, например short :

 /** * Register a custom 'short' post status * * @see http://wordpress.stackexchange.com/a/159044/26350 */ function wpse_short_post_status() { register_post_status( 'short', array( 'label' => _x( 'Short', 'post' ), 'public' => false, 'exclude_from_search' => true, 'show_in_admin_all_list' => true, 'show_in_admin_status_list' => true, 'label_count' => _n_noop( 'Short <span class="count">(%s)</span>', 'Short <span class="count">(%s)</span>' ) ) ); } add_action( 'init', 'wpse_short_post_status' ); 

Затем мы можем просмотреть все сообщения с слишком коротким содержанием здесь:

 /wp-admin/edit.php?post_status=short&post_type=post 

с дополнительной вкладкой:

Статус коротких сообщений

Чтобы авторы не публиковали сообщения с слишком коротким контентом, мы можем использовать фильтр wp_insert_post_data :

 /** * Prevent authors from publishing posts with too short content. * * @see http://wordpress.stackexchange.com/a/159044/26350 */ function wpse_prevent_short_content( $data , $postarr ) { // Editors and admins can publish all posts: if( current_user_can( 'edit_others_posts' ) ) return $data; // Authors can't publish posts with too short content: $wordcount = count( explode( ' ', strip_tags( $data['post_content'] ) ) ); if( 'publish' === $data['post_status'] && $wordcount <= 250 ) $data['post_status'] = 'short'; return $data; } add_filter( 'wp_insert_post_data', 'wpse_prevent_short_content', PHP_INT_MAX, 2 ); 

где мы принудительно возвращаем статус публикации на публикацию .

Мы можем использовать это, чтобы предупредить пользователя о том, что содержимое слишком короткое:

 /** * Display a too short content warning. * * @see http://wordpress.stackexchange.com/a/159044/26350 */ function wpse_admin_notice() { $screen = get_current_screen(); if( 'post' === $screen->base && 'post' === $screen->id && 'short' === $GLOBALS['post']->post_status && ! current_user_can( 'edit_others_posts' ) ) { printf( '<div class="error"><p>%s</p></div><style>#message{display:none;}</style>', __( 'Warning: Post not published - the content must exceed 250 words!' ) ); } } add_action( 'admin_notices', 'wpse_admin_notice' ); 

Вот скриншот предупреждения:

Предупреждение


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