Изменение статуса поста в WordPress

В WordPress есть функция get_post_status(), которая возвращает статус указанного или текущего поста в цикле WordPress. Но есть ли подобная функция для того, чтобы изменить статус поста?

Да, кстати, про статусы постов есть отдельный урок.

Вообще в ядре WordPress нет функции set_post_status(), поэтому давайте её напишем сами. Это будет совсем не сложно.

if( ! function_exists( 'set_post_status' ) ) {
 
	function set_post_status( $post_status, $post = null ) {
 
		$post = get_post( $post );
 
		if ( ! is_object( $post ) ) {
			return false;
		}
 
    		$post_id = wp_update_post( array(
			'ID' => $post->ID,
			'post_status' => $post_status
		) );
 
		if( $post_id ) {
			return true;
		} else {
			return false;
		}
	}
}
  • Код можете вставить в functions.php текущей или дочерней темы.
  • Функция возвращает true, если статус поста был успешно изменён, если нет – false.

Пример использования функции:

set_post_status( 'draft' ); // изменяем статус текущего поста в цикле на Черновик

Или:

set_post_status( 'publish', 5 ); // изменяем статус поста с ID=5

Вот в целом и всё!

И да, хочу порекомендовать вам свой видеокурс по созданию темы WordPress на основе готовой вёрстки!

Источник: Блог Миши Рудрастых

Миша Рудрастых

Путешествует по миру и рассказывает всем о WordPress лично, у себя в блогах и на курсах в Санкт-Петербурге. Умеет просто объяснять сложные вещи, делает это красиво. Организовывает неплохие WordCamp's, но совсем не умеет слушать чужие доклады.

Добавить комментарий

%d такие блоггеры, как: