Отображать уведомление администратора после создания термина в WordPress - PullRequest
0 голосов
/ 27 октября 2019

Я не понимаю, как отобразить уведомление после создания термина в WordPress.

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

У меня похожая ситуация в редакторе сообщений, но здесь я решил с помощью add_settings_error и admin_notices.

Этот метод не работает на экране создания термина, поскольку в этом сценарии существует запрос AJAX, и страница не перезагружается.

Вот код кода термина:

add_action('create_account', 'save_start_amount_data__fr');
add_action('admin_notices', 'display_start_amount_data_validation_error__fr');

function save_start_amount_data__fr($term_id) {
  if (
    !isset($_POST['start_amount_nonce']) ||
    !wp_verify_nonce($_POST['start_amount_nonce'], 'start_amount_nonce')
  ) {return $term_id;}
  if (
    (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE)
  ) {return $term_id;}
  if (
    !isset($_POST['taxonomy']) ||
    $_POST['taxonomy'] != 'account' ||
    !current_user_can('edit_posts')
  ) {return $term_id;}
  if (
    !isset($_POST['start_amount'])
  ) {return $term_id;}
  if (
    !preg_match('/^[-]?[0-9]+([,]?[0-9]{1,2})?$/', $_POST['start_amount'])
  ) {validate_start_amount_data__fr();}
  $start_amount = $_POST['start_amount'];
  $start_amount = sanitize_text_field($start_amount);
  update_term_meta($term_id, 'start_amount', $start_amount);
  return $term_id;
}

function validate_start_amount_data__fr() {
  add_settings_error(
    'incorrect_start_amount_value',
    'incorrect_start_amount_value',
    __('Please review the start amount value because it is in an incorrect format.', 'fr'),
    'error'
  );
  set_transient('settings_errors', get_settings_errors(), 30);
  return null;
}

function display_start_amount_data_validation_error__fr() {
  $errors = get_transient('settings_errors');
  if (!$errors) {return null;}
  $message  = '<div class="notice notice-error"><ul>';
  foreach($errors as $error) {
    $message .= '<li>' . $error['message'] . '</li>';
  }
  $message .= '</ul></div>';
  echo $message;
  delete_transient('settings_errors');
  remove_action('admin_notices', 'display_start_amount_data_validation_error__fr');
  return null;
}

Я надеюсь, что кто-то может помочь мне достичь моей цели.

1 Ответ

0 голосов
/ 27 октября 2019

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

Посмотрите на фильтр " redirect_post_location ".

//Actions
$this->loader->add_action( 'admin_notices', $plugin_admin, 'general_admin_notice' );
$this->loader->add_action( 'save_post', $plugin_admin, 'admin_save_post' );
	

/**
 * Admin Save the Meta box values
 *
 * @since   1.0.0
 */
function admin_save_post( $id ) {

/* --- security verification --- */
if(!wp_verify_nonce($_POST['attachment_nonce'], plugin_basename(__FILE__))) {
 return $id;
} // end if

if(defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) {
 return $id;
} // end if

if('page' == $_POST['post_type']) {
 if(!current_user_can('edit_page', $id)) {
   return $id;
 } // end if
} else {
   if(!current_user_can('edit_page', $id)) {
       return $id;
   } // end if
} // end if
/* - end security verification - */

// Make sure the file array isn't empty
if(!empty($_FILES['secure_doc_attachment']['name'])) {

    $upload = $this->admin_upload_file( $_FILES , $id );

		if (!$upload){
			add_filter('redirect_post_location', function($loc) {
				 	 return add_query_arg( 'error', 1, $loc );
			  });
			 return $post_id;
		}

}
}

/**
* Admin Notice
*
* @since   1.0.0
*/
function general_admin_notice(){

global $pagenow;

if ( 'post.php' === $pagenow && isset($_GET['post']) && 'custom-post' === get_post_type( $_GET['post'] ) ){

   if ( isset($_GET['error'])) {

	 echo '<div class="notice notice-error is-dismissible">
	 		<p>Error uploading the attachment.</p>
	 </div>';

 }
   
}

}

Смотрите другую полезную ссылку здесь: https://wordpress.stackexchange.com/questions/124132/admin-post-update-redirection-to-posts-screen

С уважением. Ed.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...