# wp_publish_post()

URL: https://chugunov.pro/api-wordpress/functions/wp_publish_post/
Проверено на WordPress 6.9, обновлено 06.08.2026.
Источник: независимый русскоязычный справочник chugunov.pro. Не является официальной документацией WordPress.

Тип: функция.
Появился в версии: 2.1.0.

## Сигнатура

```php
wp_publish_post( int|WP_Post $post )
```

## Описание

Публикует запись, переводя её статус.

## Параметры

- `$post` `int|WP_Post` — обязательный. Идентификатор записи или объект записи.

## Исходный код

Файл: `wp-includes/post.php:5307`

```php
function wp_publish_post( $post ) {
	global $wpdb;

	$post = get_post( $post );

	if ( ! $post ) {
		return;
	}

	if ( 'publish' === $post->post_status ) {
		return;
	}

	$post_before = get_post( $post->ID );

	// Ensure at least one term is applied for taxonomies with a default term.
	foreach ( get_object_taxonomies( $post->post_type, 'object' ) as $taxonomy => $tax_object ) {
		// Skip taxonomy if no default term is set.
		if (
			'category' !== $taxonomy &&
			empty( $tax_object->default_term )
		) {
			continue;
		}

		// Do not modify previously set terms.
		if ( ! empty( get_the_terms( $post, $taxonomy ) ) ) {
			continue;
		}

		if ( 'category' === $taxonomy ) {
			$default_term_id = (int) get_option( 'default_category', 0 );
		} else {
			$default_term_id = (int) get_option( 'default_term_' . $taxonomy, 0 );
		}

		if ( ! $default_term_id ) {
			continue;
		}
		wp_set_post_terms( $post->ID, array( $default_term_id ), $taxonomy );
	}

	$wpdb->update( $wpdb->posts, array( 'post_status' => 'publish' ), array( 'ID' => $post->ID ) );

	clean_post_cache( $post->ID );

	$old_status        = $post->post_status;
	$post->post_status = 'publish';
	wp_transition_post_status( 'publish', $old_status, $post );

	/** This action is documented in wp-includes/post.php */
	do_action( "edit_post_{$post->post_type}", $post->ID, $post );

	/** This action is documented in wp-includes/post.php */
	do_action( 'edit_post', $post->ID, $post );

	/** This action is documented in wp-includes/post.php */
	do_action( "save_post_{$post->post_type}", $post->ID, $post, true );

	/** This action is documented in wp-includes/post.php */
	do_action( 'save_post', $post->ID, $post, true );

	/** This action is documented in wp-includes/post.php */
	do_action( 'wp_insert_post', $post->ID, $post, true );

	wp_after_insert_post( $post, true, $post_before );
}
```

## История изменений

- 2.1.0 — Introduced.

## Связанные

Использует: [`wp_after_insert_post`](https://chugunov.pro/api-wordpress/functions/wp_after_insert_post/), [`get_the_terms`](https://chugunov.pro/api-wordpress/functions/get_the_terms/), [`get_object_taxonomies`](https://chugunov.pro/api-wordpress/functions/get_object_taxonomies/), [`clean_post_cache`](https://chugunov.pro/api-wordpress/functions/clean_post_cache/), [`wp_set_post_terms`](https://chugunov.pro/api-wordpress/functions/wp_set_post_terms/), [`wp_transition_post_status`](https://chugunov.pro/api-wordpress/functions/wp_transition_post_status/), `wpdb::update`, [`do_action`](https://chugunov.pro/api-wordpress/functions/do_action/), [`get_option`](https://chugunov.pro/api-wordpress/functions/get_option/), [`get_post`](https://chugunov.pro/api-wordpress/functions/get_post/).
Используется в: [`check_and_publish_future_post`](https://chugunov.pro/api-wordpress/functions/check_and_publish_future_post/).

Оригинал в официальной документации: https://developer.wordpress.org/reference/functions/wp_publish_post/
