Intereting Posts
Как создать разные базы данных для некоторых типов сообщений для разных пользователей? Используются ли порядковые величины для «Активных установок»? Перенаправление пользователей на страницу реферера после входа в систему с помощью пользовательской формы входа Отображение размера изображения WordPress в качестве массива, используемого для построителя страниц. Показать дату регистрации комментарителя в комментариях? Почему is_user_logged_in () возвращает false после изменения пароля пользователя на лицевой стороне? Пользовательское поле ACF в <head> Вставить изображение в подполе с помощью update_post_meta Настройка игровой площадки WordPress и развертывание на рабочем сервере? Сохраненная метастатистика столбца возвращается в виде строки Расширение страницы администрирования / редактирования ajax перестала работать, когда не вошла в систему? Лучшая практика для PHP $ wpdb-> get_col и ORDER BY? Как перевести тематический контент с использованием языка сайта?

Как вы можете быть уверены, что записи авторов более 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' ); 

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

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


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