Изменение статуса поста в 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 в 2009 году. Организатор и спикер на конференциях WordCamp. Преподаватель в школе Нетология.

Если вам нужна помощь с сайтом или разработка с нуля на WordPress / WooCommerce — пишите. Я и моя команда будем рады вам помочь!

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

Если вы хотите добавить код, не забудьте обернуть его в <pre lang="php"></pre>, если же код – меньше одной строчки, то можно и в <code></code>.