Customize: Prevent auto-draft post/page stubs from being saved with empty slugs or published with non-unique slugs.
* Allow `WP_Customize_Nav_Menus::insert_auto_draft_post()` to take full post array to pass to `wp_insert_post()`, except for `post_status`. Require `post_title`. * Ensure empty `post_name` gets explicitly set to slugified `post_title`. * Explicitly allow only `post_type` and `post_title` params in `WP_Customize_Nav_Menus::ajax_insert_auto_draft_post()`. * Use `wp_update_post()` instead of `wp_publish_post()` to ensure unique slugs are assigned to published auto-draft posts. * Re-use `WP_Customize_Nav_Menus::insert_auto_draft_post()` when inserting stubs from starter content. See #38114, #38013, #34923. Fixes #38539. Built from https://develop.svn.wordpress.org/trunk@39038 git-svn-id: http://core.svn.wordpress.org/trunk@38980 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
@@ -959,10 +959,10 @@ final class WP_Customize_Manager {
|
||||
// Posts & pages.
|
||||
if ( ! empty( $posts ) ) {
|
||||
foreach ( array_keys( $posts ) as $post_symbol ) {
|
||||
$posts[ $post_symbol ]['ID'] = wp_insert_post( wp_slash( array_merge(
|
||||
$posts[ $post_symbol ],
|
||||
array( 'post_status' => 'auto-draft' )
|
||||
) ) );
|
||||
$r = $this->nav_menus->insert_auto_draft_post( $posts[ $post_symbol ] );
|
||||
if ( $r instanceof WP_Post ) {
|
||||
$posts[ $post_symbol ]['ID'] = $r->ID;
|
||||
}
|
||||
}
|
||||
$this->set_post_value( 'nav_menus_created_posts', wp_list_pluck( $posts, 'ID' ) ); // This is why nav_menus component is dependency for adding posts.
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user