В 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; } } }
Пример использования функции:
set_post_status( 'draft' ); // изменяем статус текущего поста в цикле на Черновик
Или:
set_post_status( 'publish', 5 ); // изменяем статус поста с ID=5
Вот в целом и всё!