GC_Customize_Nav_Menus::insert_auto_draft_post()
最后更新于:2021-11-27 04:19:27
GC_Customize_Nav_Menus::insert_auto_draft_post( array$postarr)Add a new auto-draft
post.
参数
- $postarr
-
(array) (Required) Post array. Note that post_status is overridden to be
auto-draft
响应
(GC_Post|GC_Error) Inserted auto-draft post object or error.
源文件
文件: gc-includes/class-gc-customize-nav-menus.php
public function insert_auto_draft_post( $postarr ) {
if ( ! isset( $postarr['post_type'] ) ) {
return new GC_Error( 'unknown_post_type', __( 'Invalid post type.' ) );
}
if ( empty( $postarr['post_title'] ) ) {
return new GC_Error( 'empty_title', __( 'Empty title.' ) );
}
if ( ! empty( $postarr['post_status'] ) ) {
return new GC_Error( 'status_forbidden', __( 'Status is forbidden.' ) );
}
/*
* If the changeset is a draft, this will change to draft the next time the changeset
* is updated; otherwise, auto-draft will persist in autosave revisions, until save.
*/
$postarr['post_status'] = 'auto-draft';
// Auto-drafts are allowed to have empty post_names, so it has to be explicitly set.
if ( empty( $postarr['post_name'] ) ) {
$postarr['post_name'] = sanitize_title( $postarr['post_title'] );
}
if ( ! isset( $postarr['meta_input'] ) ) {
$postarr['meta_input'] = array();
}
$postarr['meta_input']['_customize_draft_post_name'] = $postarr['post_name'];
$postarr['meta_input']['_customize_changeset_uuid'] = $this->manager->changeset_uuid();
unset( $postarr['post_name'] );
add_filter( 'gc_insert_post_empty_content', '__return_false', 1000 );
$r = gc_insert_post( gc_slash( $postarr ), true );
remove_filter( 'gc_insert_post_empty_content', '__return_false', 1000 );
if ( is_gc_error( $r ) ) {
return $r;
} else {
return get_post( $r );
}
}