diff --git a/assets/js/gutenberg-plugin.js b/assets/js/gutenberg-plugin.js index 2fe6800c2..8b1448222 100644 --- a/assets/js/gutenberg-plugin.js +++ b/assets/js/gutenberg-plugin.js @@ -153,45 +153,47 @@ const DistributorIcon = () => ( * Add the Distributor panel to Gutenberg */ const DistributorPlugin = () => { - // Ensure the user has proper permissions - if ( - dtGutenberg.noPermissions && - 1 === parseInt( dtGutenberg.noPermissions ) - ) { - return null; - } - - // eslint-disable-next-line no-shadow, react-hooks/rules-of-hooks -- permission checks are needed. + // eslint-disable-next-line no-shadow const postType = useSelect( ( select ) => select( 'core/editor' ).getCurrentPostType() ); - // eslint-disable-next-line no-shadow, react-hooks/rules-of-hooks -- permission checks are needed. + // eslint-disable-next-line no-shadow const postStatus = useSelect( ( select ) => select( 'core/editor' ).getCurrentPostAttribute( 'status' ) ); - // Ensure we are on a supported post type - if ( - dtGutenberg.supportedPostTypes && - dtGutenberg.supportedPostTypes[ postType ] === undefined - ) { - return null; - } - + // eslint-disable-next-line @wordpress/no-unused-vars-before-return const distributorTopMenu = document.querySelector( '#wp-admin-bar-distributor' ); - // eslint-disable-next-line no-shadow, react-hooks/rules-of-hooks -- permission checks are needed. + // eslint-disable-next-line no-shadow const post = useSelect( ( select ) => select( 'core/editor' ).getCurrentPost() ); + + // Ensure the user has proper permissions. + if ( + dtGutenberg.noPermissions && + 1 === parseInt( dtGutenberg.noPermissions ) + ) { + return null; + } + + // Ensure we are on a supported post type. + if ( + dtGutenberg.supportedPostTypes && + dtGutenberg.supportedPostTypes[ postType ] === undefined + ) { + return null; + } + // Make the post title and status available to the top menu. dt.postTitle = post.title; dt.postStatus = post.status; - // If we are on a non-supported post status, change what we show + // If we are on a non-supported post status, change what we show. if ( dtGutenberg.supportedPostStati && ! dtGutenberg.supportedPostStati.includes( postStatus ) diff --git a/includes/classes/DistributorPost.php b/includes/classes/DistributorPost.php index 17d1d5eb3..fef6d0c18 100644 --- a/includes/classes/DistributorPost.php +++ b/includes/classes/DistributorPost.php @@ -748,7 +748,11 @@ protected function parse_blocks_for_attachment_id( $block ) { } if ( in_array( $block['blockName'], $block_names, true ) ) { - $media[] = $block['attrs'][ $media_blocks[ $block['blockName'] ] ]; + $attribute_key = $media_blocks[ $block['blockName'] ]; + + if ( isset( $block['attrs'][ $attribute_key ] ) ) { + $media[] = $block['attrs'][ $attribute_key ]; + } } return $media; diff --git a/includes/rest-api.php b/includes/rest-api.php index 5cc2b656e..cf7d914b1 100644 --- a/includes/rest-api.php +++ b/includes/rest-api.php @@ -586,12 +586,7 @@ function distributor_meta() { * Check user permissions for available post types */ function check_post_types_permissions() { - $types = get_post_types( - array( - 'show_in_rest' => true, - ), - 'objects' - ); + $types = Utils\distributable_post_types( 'objects' ); $response = array( 'can_get' => array(), diff --git a/includes/utils.php b/includes/utils.php index 1e53a57f9..607a07985 100644 --- a/includes/utils.php +++ b/includes/utils.php @@ -434,7 +434,13 @@ function excluded_meta() { */ function prepare_meta( $post_id ) { update_postmeta_cache( array( $post_id ) ); - $meta = get_post_meta( $post_id ); + $meta = get_post_meta( $post_id ); + + if ( false === $meta ) { + return array(); + } + + $meta = is_array( $meta ) ? $meta : array(); $prepared_meta = array(); $excluded_meta = excluded_meta();