Как создать дополнительное статусное сообщение к постам

Как создать дополнительное статусное сообщение к постам | n-wp.ru

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

Как создать дополнительное статусное сообщение к постам

Чтобы добавить дополнительные статусные сообщения к постам, которые авторы, редакторы и администраторы будут видеть в административной части в разделе записей рядом с названием каждого поста, откройте файл functions.php, и вставьте в него примерно такой код:

add_filter( 'display_post_states','custom_post_state');
function custom_post_state( $states ) {
	global $post;
	$show_custom_state = get_post_meta( $post->ID, '_status' );
	   if ( $show_custom_state ) {
		$states[] = __( ''.$show_custom_state[0].'' );
		}
	return $states;
}
add_action( 'post_submitbox_misc_actions', 'custom_status_metabox' );
function custom_status_metabox(){
	global $post;
	$custom  = get_post_custom($post->ID);
	$status  = $custom["_status"][0];
	$i   = 0;
	/* ----------------------------------- */
	/*   Array of custom status messages            */
	/* ----------------------------------- */
	$custom_status = array(
			'Spelling',
			'Review',
			'Errors',
			'Source',
			'Rejected',
			'Final',
		);
	echo '
'; echo ''; echo 'Custom status'; echo '-----------------'; for($i=0;$i<count($custom_status);$i++){ if($status == $custom_status[$i]){ echo ''.$custom_status[$i].''; }else{ echo ''.$custom_status[$i].''; } } echo ''; echo '
'; } add_action('save_post', 'save_status'); function save_status(){ global $post; if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE){ return $post->ID; } update_post_meta($post->ID, "_status", $_POST["status"]); } add_action( 'admin_head', 'status_css' ); function status_css() { echo ' .default{font-weight:bold;} .custom{border-top:solid 1px #e5e5e5;} .custom_state{ font-size:9px; color:#666; background:#e5e5e5; padding:3px 6px 3px 6px; -moz-border-radius:3px; } /* ----------------------------------- */ /* вы можете изменить цвета выделения */ /* ----------------------------------- */ .spelling{background:#4BC8EB;color:#fff;} .review{background:#CB4BEB;color:#fff;} .errors{background:#FF0000;color:#fff;} .source{background:#D7E01F;color:#333;} .rejected{background:#000000;color:#fff;} .final{background:#DE9414;color:#333;} '; }

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

Автор tiaurus 2182 Articles
Являюсь создателем n-wp.ru — блога о WordPress для новичков. Мне интересно многое, поэтому еще я сделал 123-box.ru — блог о программах для Windows, и tiaurus.info — блог о красоте.

5 Комментарии

  1. А как можно русифицировать эту функцию?
    Т.е., чтобы вместо слов spelling, reviev, error выводились русские слова?

  2. Т.е., понятно, что можно написать на их месте русские буквы, но при этом надо сохранить вывод css свойств. Если я напишу вместо слова rejected слово “удалить”, то у меня и css свойство будет “.удалить”, а не .rejected, а русские символы css не учитывает

    • Можно попробовать так – заменить перебор статусов на статусы с точным определением. Код, начиная с 31 cтрочки:
      [cc lang=”php” first_line=”31″]
      for($i=0;$iпроверить орфографию‘;
      }elseif($status == Review){
      echo ‘‘;
      }
      }elseif($status == Errors){
      echo ‘‘;
      }
      }elseif($status == Source){
      echo ‘‘;
      }
      }elseif($status == Rejected){
      echo ‘‘;
      }
      }elseif($status == Final){
      echo ‘‘;
      }
      }else{
      echo ‘‘;
      }
      }

  3. Здравствуйте! А возможно ли изменять данные статусы через frond end, т.е. сразу через сайт? Заранее спасибо за ответ!

Оставить комментарий

Ваш электронный адрес не будет опубликован.


*