diff --git src/wp-admin/includes/class-wp-comments-list-table.php src/wp-admin/includes/class-wp-comments-list-table.php
index 1b288786cd..34486f5bf2 100644
--- src/wp-admin/includes/class-wp-comments-list-table.php
+++ src/wp-admin/includes/class-wp-comments-list-table.php
@@ -24,6 +24,14 @@ class WP_Comments_List_Table extends WP_List_Table {
 
 	private $user_can;
 
+	/**
+	 * Whether the comment's post post type is registered or not.
+	 *
+	 * @since 6.2.0
+	 * @var bool
+	 */
+	private $is_post_type_registered = true;
+
 	/**
 	 * Constructor.
 	 *
@@ -633,6 +641,9 @@ class WP_Comments_List_Table extends WP_List_Table {
 
 		if ( $comment->comment_post_ID > 0 ) {
 			$post = get_post( $comment->comment_post_ID );
+
+			// Check whether the post type is still registered.
+			$this->is_post_type_registered = null !== get_post_type_object( $post->post_type );
 		}
 
 		$this->user_can = current_user_can( 'edit_comment', $comment->comment_ID );
@@ -681,14 +692,6 @@ class WP_Comments_List_Table extends WP_List_Table {
 
 		$url = "comment.php?c=$comment->comment_ID";
 
-		$approve_url   = esc_url( $url . "&action=approvecomment&$approve_nonce" );
-		$unapprove_url = esc_url( $url . "&action=unapprovecomment&$approve_nonce" );
-		$spam_url      = esc_url( $url . "&action=spamcomment&$del_nonce" );
-		$unspam_url    = esc_url( $url . "&action=unspamcomment&$del_nonce" );
-		$trash_url     = esc_url( $url . "&action=trashcomment&$del_nonce" );
-		$untrash_url   = esc_url( $url . "&action=untrashcomment&$del_nonce" );
-		$delete_url    = esc_url( $url . "&action=deletecomment&$del_nonce" );
-
 		// Preorder it: Approve | Reply | Quick Edit | Edit | Spam | Trash.
 		$actions = array(
 			'approve'   => '',
@@ -703,124 +706,138 @@ class WP_Comments_List_Table extends WP_List_Table {
 			'delete'    => '',
 		);
 
-		// Not looking at all comments.
-		if ( $comment_status && 'all' !== $comment_status ) {
-			if ( 'approved' === $the_comment_status ) {
-				$actions['unapprove'] = sprintf(
-					'<a href="%s" data-wp-lists="%s" class="vim-u vim-destructive aria-button-if-js" aria-label="%s">%s</a>',
-					$unapprove_url,
-					"delete:the-comment-list:comment-{$comment->comment_ID}:e7e7d3:action=dim-comment&amp;new=unapproved",
-					esc_attr__( 'Unapprove this comment' ),
-					__( 'Unapprove' )
-				);
-			} elseif ( 'unapproved' === $the_comment_status ) {
+		$delete_url         = esc_url( $url . "&action=deletecomment&$del_nonce" );
+		$delete_action_link = sprintf(
+			'<a href="%s" data-wp-lists="%s" class="delete vim-d vim-destructive aria-button-if-js" aria-label="%s">%s</a>',
+			$delete_url,
+			"delete:the-comment-list:comment-{$comment->comment_ID}::delete=1",
+			esc_attr__( 'Delete this comment permanently' ),
+			__( 'Delete Permanently' )
+		);
+
+		if ( ! $this->is_post_type_registered ) {
+			$actions['delete'] = $delete_action_link;
+		} else {
+			$approve_url   = esc_url( $url . "&action=approvecomment&$approve_nonce" );
+			$unapprove_url = esc_url( $url . "&action=unapprovecomment&$approve_nonce" );
+			$spam_url      = esc_url( $url . "&action=spamcomment&$del_nonce" );
+			$unspam_url    = esc_url( $url . "&action=unspamcomment&$del_nonce" );
+			$trash_url     = esc_url( $url . "&action=trashcomment&$del_nonce" );
+			$untrash_url   = esc_url( $url . "&action=untrashcomment&$del_nonce" );
+
+			// Not looking at all comments.
+			if ( $comment_status && 'all' !== $comment_status ) {
+				if ( 'approved' === $the_comment_status ) {
+					$actions['unapprove'] = sprintf(
+						'<a href="%s" data-wp-lists="%s" class="vim-u vim-destructive aria-button-if-js" aria-label="%s">%s</a>',
+						$unapprove_url,
+						"delete:the-comment-list:comment-{$comment->comment_ID}:e7e7d3:action=dim-comment&amp;new=unapproved",
+						esc_attr__( 'Unapprove this comment' ),
+						__( 'Unapprove' )
+					);
+				} elseif ( 'unapproved' === $the_comment_status ) {
+					$actions['approve'] = sprintf(
+						'<a href="%s" data-wp-lists="%s" class="vim-a vim-destructive aria-button-if-js" aria-label="%s">%s</a>',
+						$approve_url,
+						"delete:the-comment-list:comment-{$comment->comment_ID}:e7e7d3:action=dim-comment&amp;new=approved",
+						esc_attr__( 'Approve this comment' ),
+						__( 'Approve' )
+					);
+				}
+			} else {
 				$actions['approve'] = sprintf(
-					'<a href="%s" data-wp-lists="%s" class="vim-a vim-destructive aria-button-if-js" aria-label="%s">%s</a>',
+					'<a href="%s" data-wp-lists="%s" class="vim-a aria-button-if-js" aria-label="%s">%s</a>',
 					$approve_url,
-					"delete:the-comment-list:comment-{$comment->comment_ID}:e7e7d3:action=dim-comment&amp;new=approved",
+					"dim:the-comment-list:comment-{$comment->comment_ID}:unapproved:e7e7d3:e7e7d3:new=approved",
 					esc_attr__( 'Approve this comment' ),
 					__( 'Approve' )
 				);
+
+				$actions['unapprove'] = sprintf(
+					'<a href="%s" data-wp-lists="%s" class="vim-u aria-button-if-js" aria-label="%s">%s</a>',
+					$unapprove_url,
+					"dim:the-comment-list:comment-{$comment->comment_ID}:unapproved:e7e7d3:e7e7d3:new=unapproved",
+					esc_attr__( 'Unapprove this comment' ),
+					__( 'Unapprove' )
+				);
 			}
-		} else {
-			$actions['approve'] = sprintf(
-				'<a href="%s" data-wp-lists="%s" class="vim-a aria-button-if-js" aria-label="%s">%s</a>',
-				$approve_url,
-				"dim:the-comment-list:comment-{$comment->comment_ID}:unapproved:e7e7d3:e7e7d3:new=approved",
-				esc_attr__( 'Approve this comment' ),
-				__( 'Approve' )
-			);
 
-			$actions['unapprove'] = sprintf(
-				'<a href="%s" data-wp-lists="%s" class="vim-u aria-button-if-js" aria-label="%s">%s</a>',
-				$unapprove_url,
-				"dim:the-comment-list:comment-{$comment->comment_ID}:unapproved:e7e7d3:e7e7d3:new=unapproved",
-				esc_attr__( 'Unapprove this comment' ),
-				__( 'Unapprove' )
-			);
-		}
+			if ( 'spam' !== $the_comment_status ) {
+				$actions['spam'] = sprintf(
+					'<a href="%s" data-wp-lists="%s" class="vim-s vim-destructive aria-button-if-js" aria-label="%s">%s</a>',
+					$spam_url,
+					"delete:the-comment-list:comment-{$comment->comment_ID}::spam=1",
+					esc_attr__( 'Mark this comment as spam' ),
+					/* translators: "Mark as spam" link. */
+					_x( 'Spam', 'verb' )
+				);
+			} elseif ( 'spam' === $the_comment_status ) {
+				$actions['unspam'] = sprintf(
+					'<a href="%s" data-wp-lists="%s" class="vim-z vim-destructive aria-button-if-js" aria-label="%s">%s</a>',
+					$unspam_url,
+					"delete:the-comment-list:comment-{$comment->comment_ID}:66cc66:unspam=1",
+					esc_attr__( 'Restore this comment from the spam' ),
+					_x( 'Not Spam', 'comment' )
+				);
+			}
 
-		if ( 'spam' !== $the_comment_status ) {
-			$actions['spam'] = sprintf(
-				'<a href="%s" data-wp-lists="%s" class="vim-s vim-destructive aria-button-if-js" aria-label="%s">%s</a>',
-				$spam_url,
-				"delete:the-comment-list:comment-{$comment->comment_ID}::spam=1",
-				esc_attr__( 'Mark this comment as spam' ),
-				/* translators: "Mark as spam" link. */
-				_x( 'Spam', 'verb' )
-			);
-		} elseif ( 'spam' === $the_comment_status ) {
-			$actions['unspam'] = sprintf(
-				'<a href="%s" data-wp-lists="%s" class="vim-z vim-destructive aria-button-if-js" aria-label="%s">%s</a>',
-				$unspam_url,
-				"delete:the-comment-list:comment-{$comment->comment_ID}:66cc66:unspam=1",
-				esc_attr__( 'Restore this comment from the spam' ),
-				_x( 'Not Spam', 'comment' )
-			);
-		}
+			if ( 'trash' === $the_comment_status ) {
+				$actions['untrash'] = sprintf(
+					'<a href="%s" data-wp-lists="%s" class="vim-z vim-destructive aria-button-if-js" aria-label="%s">%s</a>',
+					$untrash_url,
+					"delete:the-comment-list:comment-{$comment->comment_ID}:66cc66:untrash=1",
+					esc_attr__( 'Restore this comment from the Trash' ),
+					__( 'Restore' )
+				);
+			}
 
-		if ( 'trash' === $the_comment_status ) {
-			$actions['untrash'] = sprintf(
-				'<a href="%s" data-wp-lists="%s" class="vim-z vim-destructive aria-button-if-js" aria-label="%s">%s</a>',
-				$untrash_url,
-				"delete:the-comment-list:comment-{$comment->comment_ID}:66cc66:untrash=1",
-				esc_attr__( 'Restore this comment from the Trash' ),
-				__( 'Restore' )
-			);
-		}
+			if ( 'spam' === $the_comment_status || 'trash' === $the_comment_status || ! EMPTY_TRASH_DAYS ) {
+				$actions['delete'] = $delete_action_link;
+			} else {
+				$actions['trash'] = sprintf(
+					'<a href="%s" data-wp-lists="%s" class="delete vim-d vim-destructive aria-button-if-js" aria-label="%s">%s</a>',
+					$trash_url,
+					"delete:the-comment-list:comment-{$comment->comment_ID}::trash=1",
+					esc_attr__( 'Move this comment to the Trash' ),
+					_x( 'Trash', 'verb' )
+				);
+			}
 
-		if ( 'spam' === $the_comment_status || 'trash' === $the_comment_status || ! EMPTY_TRASH_DAYS ) {
-			$actions['delete'] = sprintf(
-				'<a href="%s" data-wp-lists="%s" class="delete vim-d vim-destructive aria-button-if-js" aria-label="%s">%s</a>',
-				$delete_url,
-				"delete:the-comment-list:comment-{$comment->comment_ID}::delete=1",
-				esc_attr__( 'Delete this comment permanently' ),
-				__( 'Delete Permanently' )
-			);
-		} else {
-			$actions['trash'] = sprintf(
-				'<a href="%s" data-wp-lists="%s" class="delete vim-d vim-destructive aria-button-if-js" aria-label="%s">%s</a>',
-				$trash_url,
-				"delete:the-comment-list:comment-{$comment->comment_ID}::trash=1",
-				esc_attr__( 'Move this comment to the Trash' ),
-				_x( 'Trash', 'verb' )
-			);
-		}
+			if ( 'spam' !== $the_comment_status && 'trash' !== $the_comment_status ) {
+				$actions['edit'] = sprintf(
+					'<a href="%s" aria-label="%s">%s</a>',
+					"comment.php?action=editcomment&amp;c={$comment->comment_ID}",
+					esc_attr__( 'Edit this comment' ),
+					__( 'Edit' )
+				);
 
-		if ( 'spam' !== $the_comment_status && 'trash' !== $the_comment_status ) {
-			$actions['edit'] = sprintf(
-				'<a href="%s" aria-label="%s">%s</a>',
-				"comment.php?action=editcomment&amp;c={$comment->comment_ID}",
-				esc_attr__( 'Edit this comment' ),
-				__( 'Edit' )
-			);
+				$format = '<button type="button" data-comment-id="%d" data-post-id="%d" data-action="%s" class="%s button-link" aria-expanded="false" aria-label="%s">%s</button>';
 
-			$format = '<button type="button" data-comment-id="%d" data-post-id="%d" data-action="%s" class="%s button-link" aria-expanded="false" aria-label="%s">%s</button>';
+				$actions['quickedit'] = sprintf(
+					$format,
+					$comment->comment_ID,
+					$comment->comment_post_ID,
+					'edit',
+					'vim-q comment-inline',
+					esc_attr__( 'Quick edit this comment inline' ),
+					__( 'Quick&nbsp;Edit' )
+				);
 
-			$actions['quickedit'] = sprintf(
-				$format,
-				$comment->comment_ID,
-				$comment->comment_post_ID,
-				'edit',
-				'vim-q comment-inline',
-				esc_attr__( 'Quick edit this comment inline' ),
-				__( 'Quick&nbsp;Edit' )
-			);
+				$actions['reply'] = sprintf(
+					$format,
+					$comment->comment_ID,
+					$comment->comment_post_ID,
+					'replyto',
+					'vim-r comment-inline',
+					esc_attr__( 'Reply to this comment' ),
+					__( 'Reply' )
+				);
+			}
 
-			$actions['reply'] = sprintf(
-				$format,
-				$comment->comment_ID,
-				$comment->comment_post_ID,
-				'replyto',
-				'vim-r comment-inline',
-				esc_attr__( 'Reply to this comment' ),
-				__( 'Reply' )
-			);
+			/** This filter is documented in wp-admin/includes/dashboard.php */
+			$actions = apply_filters( 'comment_row_actions', array_filter( $actions ), $comment );
 		}
 
-		/** This filter is documented in wp-admin/includes/dashboard.php */
-		$actions = apply_filters( 'comment_row_actions', array_filter( $actions ), $comment );
-
 		$always_visible = false;
 
 		$mode = get_user_setting( 'posts_list_mode', 'list' );
@@ -838,6 +855,7 @@ class WP_Comments_List_Table extends WP_List_Table {
 
 			if ( ( ( 'approve' === $action || 'unapprove' === $action ) && 2 === $i )
 				|| 1 === $i
+				|| ! $this->is_post_type_registered
 			) {
 				$separator = '';
 			} else {
@@ -876,7 +894,7 @@ class WP_Comments_List_Table extends WP_List_Table {
 		// Restores the more descriptive, specific name for use within this method.
 		$comment = $item;
 
-		if ( $this->user_can ) {
+		if ( $this->user_can && $this->is_post_type_registered ) {
 			?>
 		<label class="screen-reader-text" for="cb-select-<?php echo $comment->comment_ID; ?>"><?php _e( 'Select comment' ); ?></label>
 		<input id="cb-select-<?php echo $comment->comment_ID; ?>" type="checkbox" name="delete_comments[]" value="<?php echo $comment->comment_ID; ?>" />
@@ -997,7 +1015,7 @@ class WP_Comments_List_Table extends WP_List_Table {
 
 		echo '<div class="submitted-on">';
 
-		if ( 'approved' === wp_get_comment_status( $comment ) && ! empty( $comment->comment_post_ID ) ) {
+		if ( 'approved' === wp_get_comment_status( $comment ) && ! empty( $comment->comment_post_ID ) && $this->is_post_type_registered ) {
 			printf(
 				'<a href="%s">%s</a>',
 				esc_url( get_comment_link( $comment ) ),
@@ -1028,11 +1046,16 @@ class WP_Comments_List_Table extends WP_List_Table {
 			$this->pending_count[ $post->ID ] = $pending_comments;
 		}
 
-		if ( current_user_can( 'edit_post', $post->ID ) ) {
+		if ( $this->is_post_type_registered && current_user_can( 'edit_post', $post->ID ) ) {
 			$post_link  = "<a href='" . get_edit_post_link( $post->ID ) . "' class='comments-edit-item-link'>";
 			$post_link .= esc_html( get_the_title( $post->ID ) ) . '</a>';
 		} else {
-			$post_link = esc_html( get_the_title( $post->ID ) );
+			$post_link = '<p>' . esc_html( get_the_title( $post->ID ) ) . '</p>';
+
+			if ( ! $this->is_post_type_registered ) {
+				/* Translators: %s. The comment's post post type name */
+				$post_link .= '<p class="description">' . sprintf( esc_html__( '(The %s post type is not available)' ), '<code>' . esc_html( $post->post_type ) . '</code>' ) . '</p>';
+			}
 		}
 
 		echo '<div class="response-links">';
@@ -1046,12 +1069,14 @@ class WP_Comments_List_Table extends WP_List_Table {
 
 		echo $post_link;
 
-		$post_type_object = get_post_type_object( $post->post_type );
-		echo "<a href='" . get_permalink( $post->ID ) . "' class='comments-view-item-link'>" . $post_type_object->labels->view_item . '</a>';
-
-		echo '<span class="post-com-count-wrapper post-com-count-', $post->ID, '">';
-		$this->comments_bubble( $post->ID, $pending_comments );
-		echo '</span> ';
+		// Only display the view item link & the comments bubble if the post type is still registered.
+		if ( $this->is_post_type_registered ) {
+			$post_type_object = get_post_type_object( $post->post_type );
+			echo "<a href='" . get_permalink( $post->ID ) . "' class='comments-view-item-link'>" . $post_type_object->labels->view_item . '</a>';
+			echo '<span class="post-com-count-wrapper post-com-count-', $post->ID, '">';
+			$this->comments_bubble( $post->ID, $pending_comments );
+			echo '</span> ';
+		}
 
 		echo '</div>';
 	}
diff --git src/wp-admin/includes/dashboard.php src/wp-admin/includes/dashboard.php
index 4c1f1f6797..b504f4c338 100644
--- src/wp-admin/includes/dashboard.php
+++ src/wp-admin/includes/dashboard.php
@@ -688,12 +688,27 @@ function wp_dashboard_recent_drafts( $drafts = false ) {
 function _wp_dashboard_recent_comments_row( &$comment, $show_date = true ) {
 	$GLOBALS['comment'] = clone $comment;
 
+	$comment_post_link       = '';
+	$is_post_type_registered = true;
+
 	if ( $comment->comment_post_ID > 0 ) {
-		$comment_post_title = _draft_or_post_title( $comment->comment_post_ID );
-		$comment_post_url   = get_the_permalink( $comment->comment_post_ID );
-		$comment_post_link  = '<a href="' . esc_url( $comment_post_url ) . '">' . $comment_post_title . '</a>';
-	} else {
-		$comment_post_link = '';
+		$post = get_post( $comment->comment_post_ID );
+
+		// Check whether the post type is still registered.
+		$is_post_type_registered = null !== get_post_type_object( $post->post_type );
+
+		if ( $is_post_type_registered ) {
+			$comment_post_title = _draft_or_post_title( $post );
+			$comment_post_url   = get_the_permalink( $comment->comment_post_ID );
+			$comment_post_link  = '<a href="' . esc_url( $comment_post_url ) . '">' . $comment_post_title . '</a>';
+		} else {
+			$comment_post_link = sprintf(
+				/* Translators: 1. The comment's post post title. 2. The comment's post post type name */
+				esc_html__( '%1$s (The %2$s post type is not available)' ),
+				esc_html( get_the_title( $post->ID ) ),
+				'<code>' . esc_html( $post->post_type ) . '</code>'
+			);
+		}
 	}
 
 	$actions_string = '';
@@ -713,89 +728,95 @@ function _wp_dashboard_recent_comments_row( &$comment, $show_date = true ) {
 		$del_nonce     = esc_html( '_wpnonce=' . wp_create_nonce( "delete-comment_$comment->comment_ID" ) );
 		$approve_nonce = esc_html( '_wpnonce=' . wp_create_nonce( "approve-comment_$comment->comment_ID" ) );
 
-		$approve_url   = esc_url( "comment.php?action=approvecomment&p=$comment->comment_post_ID&c=$comment->comment_ID&$approve_nonce" );
-		$unapprove_url = esc_url( "comment.php?action=unapprovecomment&p=$comment->comment_post_ID&c=$comment->comment_ID&$approve_nonce" );
-		$spam_url      = esc_url( "comment.php?action=spamcomment&p=$comment->comment_post_ID&c=$comment->comment_ID&$del_nonce" );
-		$trash_url     = esc_url( "comment.php?action=trashcomment&p=$comment->comment_post_ID&c=$comment->comment_ID&$del_nonce" );
-		$delete_url    = esc_url( "comment.php?action=deletecomment&p=$comment->comment_post_ID&c=$comment->comment_ID&$del_nonce" );
-
-		$actions['approve'] = sprintf(
-			'<a href="%s" data-wp-lists="%s" class="vim-a aria-button-if-js" aria-label="%s">%s</a>',
-			$approve_url,
-			"dim:the-comment-list:comment-{$comment->comment_ID}:unapproved:e7e7d3:e7e7d3:new=approved",
-			esc_attr__( 'Approve this comment' ),
-			__( 'Approve' )
+		$delete_url         = esc_url( "comment.php?action=deletecomment&p=$comment->comment_post_ID&c=$comment->comment_ID&$del_nonce" );
+		$delete_action_link = sprintf(
+			'<a href="%s" data-wp-lists="%s" class="delete vim-d vim-destructive aria-button-if-js" aria-label="%s">%s</a>',
+			$delete_url,
+			"delete:the-comment-list:comment-{$comment->comment_ID}::trash=1",
+			esc_attr__( 'Delete this comment permanently' ),
+			__( 'Delete Permanently' )
 		);
 
-		$actions['unapprove'] = sprintf(
-			'<a href="%s" data-wp-lists="%s" class="vim-u aria-button-if-js" aria-label="%s">%s</a>',
-			$unapprove_url,
-			"dim:the-comment-list:comment-{$comment->comment_ID}:unapproved:e7e7d3:e7e7d3:new=unapproved",
-			esc_attr__( 'Unapprove this comment' ),
-			__( 'Unapprove' )
-		);
-
-		$actions['edit'] = sprintf(
-			'<a href="%s" aria-label="%s">%s</a>',
-			"comment.php?action=editcomment&amp;c={$comment->comment_ID}",
-			esc_attr__( 'Edit this comment' ),
-			__( 'Edit' )
-		);
+		if ( ! $is_post_type_registered ) {
+			$actions['delete'] = $delete_action_link;
+		} else {
+			$approve_url   = esc_url( "comment.php?action=approvecomment&p=$comment->comment_post_ID&c=$comment->comment_ID&$approve_nonce" );
+			$unapprove_url = esc_url( "comment.php?action=unapprovecomment&p=$comment->comment_post_ID&c=$comment->comment_ID&$approve_nonce" );
+			$spam_url      = esc_url( "comment.php?action=spamcomment&p=$comment->comment_post_ID&c=$comment->comment_ID&$del_nonce" );
+			$trash_url     = esc_url( "comment.php?action=trashcomment&p=$comment->comment_post_ID&c=$comment->comment_ID&$del_nonce" );
+
+			$actions['approve'] = sprintf(
+				'<a href="%s" data-wp-lists="%s" class="vim-a aria-button-if-js" aria-label="%s">%s</a>',
+				$approve_url,
+				"dim:the-comment-list:comment-{$comment->comment_ID}:unapproved:e7e7d3:e7e7d3:new=approved",
+				esc_attr__( 'Approve this comment' ),
+				__( 'Approve' )
+			);
 
-		$actions['reply'] = sprintf(
-			'<button type="button" onclick="window.commentReply && commentReply.open(\'%s\',\'%s\');" class="vim-r button-link hide-if-no-js" aria-label="%s">%s</button>',
-			$comment->comment_ID,
-			$comment->comment_post_ID,
-			esc_attr__( 'Reply to this comment' ),
-			__( 'Reply' )
-		);
+			$actions['unapprove'] = sprintf(
+				'<a href="%s" data-wp-lists="%s" class="vim-u aria-button-if-js" aria-label="%s">%s</a>',
+				$unapprove_url,
+				"dim:the-comment-list:comment-{$comment->comment_ID}:unapproved:e7e7d3:e7e7d3:new=unapproved",
+				esc_attr__( 'Unapprove this comment' ),
+				__( 'Unapprove' )
+			);
 
-		$actions['spam'] = sprintf(
-			'<a href="%s" data-wp-lists="%s" class="vim-s vim-destructive aria-button-if-js" aria-label="%s">%s</a>',
-			$spam_url,
-			"delete:the-comment-list:comment-{$comment->comment_ID}::spam=1",
-			esc_attr__( 'Mark this comment as spam' ),
-			/* translators: "Mark as spam" link. */
-			_x( 'Spam', 'verb' )
-		);
+			$actions['edit'] = sprintf(
+				'<a href="%s" aria-label="%s">%s</a>',
+				"comment.php?action=editcomment&amp;c={$comment->comment_ID}",
+				esc_attr__( 'Edit this comment' ),
+				__( 'Edit' )
+			);
 
-		if ( ! EMPTY_TRASH_DAYS ) {
-			$actions['delete'] = sprintf(
-				'<a href="%s" data-wp-lists="%s" class="delete vim-d vim-destructive aria-button-if-js" aria-label="%s">%s</a>',
-				$delete_url,
-				"delete:the-comment-list:comment-{$comment->comment_ID}::trash=1",
-				esc_attr__( 'Delete this comment permanently' ),
-				__( 'Delete Permanently' )
+			$actions['reply'] = sprintf(
+				'<button type="button" onclick="window.commentReply && commentReply.open(\'%s\',\'%s\');" class="vim-r button-link hide-if-no-js" aria-label="%s">%s</button>',
+				$comment->comment_ID,
+				$comment->comment_post_ID,
+				esc_attr__( 'Reply to this comment' ),
+				__( 'Reply' )
 			);
-		} else {
-			$actions['trash'] = sprintf(
-				'<a href="%s" data-wp-lists="%s" class="delete vim-d vim-destructive aria-button-if-js" aria-label="%s">%s</a>',
-				$trash_url,
-				"delete:the-comment-list:comment-{$comment->comment_ID}::trash=1",
-				esc_attr__( 'Move this comment to the Trash' ),
-				_x( 'Trash', 'verb' )
+
+			$actions['spam'] = sprintf(
+				'<a href="%s" data-wp-lists="%s" class="vim-s vim-destructive aria-button-if-js" aria-label="%s">%s</a>',
+				$spam_url,
+				"delete:the-comment-list:comment-{$comment->comment_ID}::spam=1",
+				esc_attr__( 'Mark this comment as spam' ),
+				/* translators: "Mark as spam" link. */
+				_x( 'Spam', 'verb' )
 			);
-		}
 
-		$actions['view'] = sprintf(
-			'<a class="comment-link" href="%s" aria-label="%s">%s</a>',
-			esc_url( get_comment_link( $comment ) ),
-			esc_attr__( 'View this comment' ),
-			__( 'View' )
-		);
+			if ( ! EMPTY_TRASH_DAYS ) {
+				$actions['delete'] = $delete_action_link;
+			} else {
+				$actions['trash'] = sprintf(
+					'<a href="%s" data-wp-lists="%s" class="delete vim-d vim-destructive aria-button-if-js" aria-label="%s">%s</a>',
+					$trash_url,
+					"delete:the-comment-list:comment-{$comment->comment_ID}::trash=1",
+					esc_attr__( 'Move this comment to the Trash' ),
+					_x( 'Trash', 'verb' )
+				);
+			}
 
-		/**
-		 * Filters the action links displayed for each comment in the 'Recent Comments'
-		 * dashboard widget.
-		 *
-		 * @since 2.6.0
-		 *
-		 * @param string[]   $actions An array of comment actions. Default actions include:
-		 *                            'Approve', 'Unapprove', 'Edit', 'Reply', 'Spam',
-		 *                            'Delete', and 'Trash'.
-		 * @param WP_Comment $comment The comment object.
-		 */
-		$actions = apply_filters( 'comment_row_actions', array_filter( $actions ), $comment );
+			$actions['view'] = sprintf(
+				'<a class="comment-link" href="%s" aria-label="%s">%s</a>',
+				esc_url( get_comment_link( $comment ) ),
+				esc_attr__( 'View this comment' ),
+				__( 'View' )
+			);
+
+			/**
+			 * Filters the action links displayed for each comment in the 'Recent Comments'
+			 * dashboard widget.
+			 *
+			 * @since 2.6.0
+			 *
+			 * @param string[]   $actions An array of comment actions. Default actions include:
+			 *                            'Approve', 'Unapprove', 'Edit', 'Reply', 'Spam',
+			 *                            'Delete', and 'Trash'.
+			 * @param WP_Comment $comment The comment object.
+			 */
+			$actions = apply_filters( 'comment_row_actions', array_filter( $actions ), $comment );
+		}
 
 		$i = 0;
 
@@ -804,6 +825,7 @@ function _wp_dashboard_recent_comments_row( &$comment, $show_date = true ) {
 
 			if ( ( ( 'approve' === $action || 'unapprove' === $action ) && 2 === $i )
 				|| 1 === $i
+				|| ! $is_post_type_registered
 			) {
 				$separator = '';
 			} else {
@@ -1070,7 +1092,16 @@ function wp_dashboard_recent_comments( $total_items = 5 ) {
 		}
 
 		foreach ( $possible as $comment ) {
-			if ( ! current_user_can( 'read_post', $comment->comment_post_ID ) ) {
+			$is_post_type_registered = true;
+
+			if ( $comment->comment_post_ID > 0 ) {
+				$post                    = get_post( $comment->comment_post_ID );
+				$is_post_type_registered = null !== get_post_type_object( $post->post_type );
+			}
+
+			$can_read = ! $is_post_type_registered ? current_user_can( 'edit_others_posts' ) : current_user_can( 'read_post', $comment->comment_post_ID );
+
+			if ( ! $can_read ) {
 				continue;
 			}
 
diff --git src/wp-includes/capabilities.php src/wp-includes/capabilities.php
index d06887a2bb..37f9752aa7 100644
--- src/wp-includes/capabilities.php
+++ src/wp-includes/capabilities.php
@@ -571,7 +571,7 @@ function map_meta_cap( $cap, $user_id, ...$args ) {
 			 * Fall back to the edit_posts capability, instead.
 			 */
 			if ( $post ) {
-				$caps = map_meta_cap( 'edit_post', $user_id, $post->ID );
+				$caps = get_post_type_object( $post->post_type ) ? map_meta_cap( 'edit_post', $user_id, $post->ID ) : array( 'edit_others_posts' );
 			} else {
 				$caps = map_meta_cap( 'edit_posts', $user_id );
 			}
