Получение информации для редактирования поста в WordPress: функция get_default_post_to_edit()

Получение информации для редактирования поста в WordPress

Функция get_default_post_to_edit() используется для заполнения формы "Написать пост" стандартной информацией о посте.

Хуки функции

  • default_content — Позволяет фильтровать содержимое по умолчанию.
  • default_title — Позволяет фильтровать заголовок по умолчанию.
  • default_excerpt — Позволяет фильтровать краткое содержание по умолчанию.

Возвращаемое значение

Функция возвращает объект WP_Post, который содержит все стандартные данные о посте в виде атрибутов.

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

get_default_post_to_edit( $post_type, $create_in_db );

Параметры

  • $post_type (строка) — Тип поста. По умолчанию: 'post'.
  • $create_in_db (true|false) — Создавать ли пост в базе данных? По умолчанию: false.

Примеры использования

Пример 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
)
*/

Описание кода функции

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'  => __( 'Автоматический черновик' ),
                '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 );

        // Запланируем очистку авто-черновиков.
        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 );
    }

    // Фильтры для настроек поста
    $post->post_content = (string) apply_filters( 'default_content', $post_content, $post );
    $post->post_title = (string) apply_filters( 'default_title', $post_title, $post );
    $post->post_excerpt = (string) apply_filters( 'default_excerpt', $post_excerpt, $post );

    return $post;
}

Изменения

  • С версии 2.0.0 — функция была внедрена в WordPress.

Связанные функции

  • wp_delete_post()
  • wp_insert_post()
  • wp_publish_post()
  • wp_trash_post()
  • wp_update_post()

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *