get_default_post_to_edit()WP 2.0.0

Получает дефолтные данные для формы записи (поста), при добавлении новой записи в админке.

Когда мы жмешь в админке добавить пост, то в БД создается записи (пост) со статусом draft. За то какие данные при этому будут созданы и какие данные мы увидим в форме добавления поста отвечает эта функция.

Для использования фукнции на фронте, нужно подключить файл:

require_once ABSPATH . 'wp-admin/includes/post.php';

В функции есть три хука, которые позволяют изменить: заголовок, текст и короткий текст (цитату) вновь создаваемой записи.

$post->post_content = apply_filters( 'default_content', $post_content, $post );

$post->post_title   = apply_filters( 'default_title',   $post_title,   $post );

$post->post_excerpt = apply_filters( 'default_excerpt', $post_excerpt, $post );
Хуки из функции

Возвращает

WP_Post. Объект поста, который содержит все дефолтные данные записи.

Использование

get_default_post_to_edit( $post_type, $create_in_db );
$post_type(строка)
Тип поста, данные для которого будут созданы.
По умолчанию: 'post'
$create_in_db(true/false)
Нужно ли вставлять (добавлять) данные в базу данных. Если поставить false, то функция просто соберет объект поста и вернет его, при этом в БД ничего не создаст.
По умолчанию: false

Примеры

1

#1 Пример создания данных новой записи

require_once ABSPATH . 'wp-admin/includes/post.php';

$def_postdata = get_default_post_to_edit( 'post', false );

print_r( $def_postdata );

/*
WP_Post Object
(
	[ID] => 0
	[post_author] => 
	[post_date] => 
	[post_date_gmt] => 
	[post_content] => 
	[post_title] => 
	[post_excerpt] => 
	[post_status] => draft
	[comment_status] => open
	[ping_status] => open
	[post_password] => 
	[post_name] => 
	[to_ping] => 
	[pinged] => 
	[post_modified] => 0000-00-00 00:00:00
	[post_modified_gmt] => 0000-00-00 00:00:00
	[post_content_filtered] => 
	[post_parent] => 0
	[guid] => 
	[menu_order] => 0
	[post_type] => post
	[post_mime_type] => 
	[comment_count] => 0
	[filter] => 
	[post_pingback] => 
	[post_category] => 1
	[page_template] => default
)
*/

Список изменений

С версии 2.0.0 Введена.

Код get_default_post_to_edit() WP 6.4.3

function get_default_post_to_edit( $post_type = 'post', $create_in_db = false ) {
	$post_title = '';
	if ( ! empty( $_REQUEST['post_title'] ) ) {
		$post_title = esc_html( wp_unslash( $_REQUEST['post_title'] ) );
	}

	$post_content = '';
	if ( ! empty( $_REQUEST['content'] ) ) {
		$post_content = esc_html( wp_unslash( $_REQUEST['content'] ) );
	}

	$post_excerpt = '';
	if ( ! empty( $_REQUEST['excerpt'] ) ) {
		$post_excerpt = esc_html( wp_unslash( $_REQUEST['excerpt'] ) );
	}

	if ( $create_in_db ) {
		$post_id = wp_insert_post(
			array(
				'post_title'  => __( 'Auto Draft' ),
				'post_type'   => $post_type,
				'post_status' => 'auto-draft',
			),
			false,
			false
		);
		$post    = get_post( $post_id );
		if ( current_theme_supports( 'post-formats' ) && post_type_supports( $post->post_type, 'post-formats' ) && get_option( 'default_post_format' ) ) {
			set_post_format( $post, get_option( 'default_post_format' ) );
		}
		wp_after_insert_post( $post, false, null );

		// Schedule auto-draft cleanup.
		if ( ! wp_next_scheduled( 'wp_scheduled_auto_draft_delete' ) ) {
			wp_schedule_event( time(), 'daily', 'wp_scheduled_auto_draft_delete' );
		}
	} else {
		$post                 = new stdClass();
		$post->ID             = 0;
		$post->post_author    = '';
		$post->post_date      = '';
		$post->post_date_gmt  = '';
		$post->post_password  = '';
		$post->post_name      = '';
		$post->post_type      = $post_type;
		$post->post_status    = 'draft';
		$post->to_ping        = '';
		$post->pinged         = '';
		$post->comment_status = get_default_comment_status( $post_type );
		$post->ping_status    = get_default_comment_status( $post_type, 'pingback' );
		$post->post_pingback  = get_option( 'default_pingback_flag' );
		$post->post_category  = get_option( 'default_category' );
		$post->page_template  = 'default';
		$post->post_parent    = 0;
		$post->menu_order     = 0;
		$post                 = new WP_Post( $post );
	}

	/**
	 * Filters the default post content initially used in the "Write Post" form.
	 *
	 * @since 1.5.0
	 *
	 * @param string  $post_content Default post content.
	 * @param WP_Post $post         Post object.
	 */
	$post->post_content = (string) apply_filters( 'default_content', $post_content, $post );

	/**
	 * Filters the default post title initially used in the "Write Post" form.
	 *
	 * @since 1.5.0
	 *
	 * @param string  $post_title Default post title.
	 * @param WP_Post $post       Post object.
	 */
	$post->post_title = (string) apply_filters( 'default_title', $post_title, $post );

	/**
	 * Filters the default post excerpt initially used in the "Write Post" form.
	 *
	 * @since 1.5.0
	 *
	 * @param string  $post_excerpt Default post excerpt.
	 * @param WP_Post $post         Post object.
	 */
	$post->post_excerpt = (string) apply_filters( 'default_excerpt', $post_excerpt, $post );

	return $post;
}