From ae807463acfb6bed121d19f9a993b1e6c8f8ff65 Mon Sep 17 00:00:00 2001 From: Sergey Biryukov <sergeybiryukov.ru@gmail.com> Date: Sun, 24 Jul 2022 13:26:12 +0000 Subject: [PATCH] Posts, Post Types: Check if the post type exists in `wp_insert_post()`. This avoids an `Attempt to read property "cap" on null` PHP warning when checking an unregistered post type's `publish_posts` capability to disallow contributors setting the post slug for pending posts. Follow-up to [9055], [42380]. Props Chouby, mukesh27, rafiahmedd, SergeyBiryukov. Fixes #55877. Built from https://develop.svn.wordpress.org/trunk@53771 git-svn-id: http://core.svn.wordpress.org/trunk@53330 1a063a9b-81f0-0310-95a4-ce76da25c4cd --- wp-includes/post.php | 12 +++++++----- wp-includes/version.php | 2 +- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/wp-includes/post.php b/wp-includes/post.php index c7dcc13b8d..df509fd114 100644 --- a/wp-includes/post.php +++ b/wp-includes/post.php @@ -4159,12 +4159,14 @@ function wp_insert_post( $postarr, $wp_error = false, $fire_after_hooks = true ) * * For new posts check the primitive capability, for updates check the meta capability. */ - $post_type_object = get_post_type_object( $post_type ); + if ( 'pending' === $post_status ) { + $post_type_object = get_post_type_object( $post_type ); - if ( ! $update && 'pending' === $post_status && ! current_user_can( $post_type_object->cap->publish_posts ) ) { - $post_name = ''; - } elseif ( $update && 'pending' === $post_status && ! current_user_can( 'publish_post', $post_ID ) ) { - $post_name = ''; + if ( ! $update && $post_type_object && ! current_user_can( $post_type_object->cap->publish_posts ) ) { + $post_name = ''; + } elseif ( $update && ! current_user_can( 'publish_post', $post_ID ) ) { + $post_name = ''; + } } /* diff --git a/wp-includes/version.php b/wp-includes/version.php index 63d76a5260..bfd72937cd 100644 --- a/wp-includes/version.php +++ b/wp-includes/version.php @@ -16,7 +16,7 @@ * * @global string $wp_version */ -$wp_version = '6.1-alpha-53770'; +$wp_version = '6.1-alpha-53771'; /** * Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.