Intereting Posts
PAGE Специальные уведомления по электронной почте позвонить другому короткому коду в электронном письме contactform7 отправить Категория распаковки Wp не отображается как заголовок Разбиение страницы на WP_User_Query, не обновляющее текущую страницу Перенаправление всех сообщений после изменения структуры URL с помощью htaccess скрипт wp_mail с jquery post Как сделать текстовое поле комментариев неактивным? как я могу использовать настраиваемое поле в сообщении запроса Отправлять изменения для отправки адресов электронной почты (а не пользователей или подписчиков) Диагностика конфликтов плагина Связь между настраиваемыми типами сообщений, как если бы они были таксономиями? Автоматическая документация разработчика плагина Как скопировать shortcode между сообщениями, используя polylang Как я могу посчитать просмотры просмотров вызовов API REST и обновить их в поле ACF? Как я могу вручную активировать предыдущую тему без доступа к браузеру на панели управления?

Отметить публикацию для пустого заголовка

У меня есть несколько пользователей wp, которые не вставляют заголовок при создании нового сообщения (и сообщения о настраиваемом типе). Это означает, что для постоянной ссылки назначается номер в качестве ссылки. В рамках мультисайта, который я разрабатываю, это обычно останавливает связь от работы (страница только обновляется).

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

Мой код до сих пор находится в файле functions.php:

function check_for_post_title( $post, $ID ) { $title = $post->post_title; $permalink = get_permalink( $ID ); if($title =='' || $title == null) { no_post_title_notice(); } else { some_post_title_notice(); } } add_action( 'publish_post', 'check_for_post_title', 10, 2 ); function no_post_title_notice() { ?> <div class="notice notice-warning is-dismissible"> <p><?php _e( 'You have not provided a title for your post/page. This will cause the link to be broken. Please revise', 'understrap-post-title' ); ?></p> </div> <?php } function some_post_title_notice() { ?> <div class="notice notice-warning is-dismissible"> <p><?php _e( 'I dont know why this message is appearing', 'understrap-post-title' ); ?></p> </div> <?php } 

В настоящее время он не работает, и никаких уведомлений не появляется в верхней части экрана редактирования сообщений после публикации / обновления вообще. Не уверен, почему он вообще не стреляет (даже «чужое» заявление должно что-то уволить). Что я делаю не так?

Solutions Collecting From Web of "Отметить публикацию для пустого заголовка"

Ваша ошибка не появляется на экране, потому что страница перезагружается после действия publish_post .

Я полностью придерживался другого подхода, я проверяю заголовок сообщения в wp_insert_post_data если заголовок пуст, я отмечаю post_status как черновик и сохраняю простой флаг в таблице опций. Сохраненный флаг используется, чтобы скрыть сообщение «Опубликованное сообщение» и отобразить уведомление администратора для указания заголовка, чтобы опубликовать сообщение.

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

 /** * Checks for empty post title, if empty sets the post status to draft * * @param $data * @param $postarr * * @return array */ function wse_279994_check_post_title( $data, $postarr ) { if ( is_array( $data ) && 'publish' == $data['post_status'] && empty( $data['post_title'] ) ) { $data['post_status'] = 'draft'; update_option( 'wse_279994_post_error', 'empty_title' ); } return $data; } add_filter( 'wp_insert_post_data', 'wse_279994_check_post_title', 10, 2 ); /** * If the post title was empty, do not show post published message */ add_filter( 'post_updated_messages', 'wse_279994_remove_all_messages' ); function wse_279994_remove_all_messages( $messages ) { if ( get_option( 'wse_279994_post_error' ) ) { return array(); } else { return $messages; } } /** * Show admin notice for empty post title */ add_action( 'admin_notices', 'wse_279994_show_error' ); function wse_279994_show_error() { $screen = get_current_screen(); if ( $screen->id != 'post' ) { return; } if ( ! get_option( 'wse_279994_post_error' ) ) { return; } echo '<div class="error"><p>' . esc_html__( "You need to enter a Post Title in order to publish it.", "wse" ) . '</p></div>'; delete_option( 'wse_279994_post_error' ); }