diff --git wp-includes/comment-functions.php wp-includes/comment-functions.php
index 261a1f4..f238354 100644
--- wp-includes/comment-functions.php
+++ wp-includes/comment-functions.php
@@ -2657,29 +2657,53 @@ function wp_handle_comment_submission( $comment_data ) {
 	} elseif ( 'trash' == $status ) {
 
 		/**
-		 * Fires when a comment is attempted on a trashed post.
+		 * Allow comments on trashed posts.
 		 *
-		 * @since 2.9.0
+		 * Allow comments on trashed posts, per #19739.
 		 *
-		 * @param int $comment_post_ID Post ID.
+		 * @since 4.4.0
+		 *
+		 * @param bool $allow_comments_on_trash Whether to allow comments on trashed posts
+		 * @param int  $comment_post_ID 		The post_id for comments to be enabled on.
 		 */
-		do_action( 'comment_on_trash', $comment_post_ID );
+		if ( ! apply_filters( 'allow_comment_on_trash', false, $comment_post_ID ) ) {
 
-		return new WP_Error( 'comment_on_trash' );
+			/**
+			 * Fires when a comment is attempted on a trashed post.
+			 *
+			 * @since 2.9.0
+			 *
+			 * @param int $comment_post_ID Post ID.
+			 */
+			do_action( 'comment_on_trash', $comment_post_ID );
 
+			return new WP_Error( 'comment_on_trash' );
+		}
 	} elseif ( ! $status_obj->public && ! $status_obj->private ) {
 
 		/**
-		 * Fires when a comment is attempted on a post in draft mode.
+		 * Allow comments on draft posts.
 		 *
-		 * @since 1.5.1
+		 * Allow comments on draft posts, per #19739.
 		 *
-		 * @param int $comment_post_ID Post ID.
+		 * @since 4.4.0
+		 *
+		 * @param bool $allow_comments_on_draft Whether to allow comments on draft posts
+		 * @param int  $comment_post_ID 		The post_id for comments to be enabled on.
 		 */
-		do_action( 'comment_on_draft', $comment_post_ID );
+		if ( ! apply_filters( 'allow_comment_on_draft', false, $comment_post_ID ) ) {
 
-		return new WP_Error( 'comment_on_draft' );
+			/**
+			 * Fires when a comment is attempted on a post in draft mode.
+			 *
+			 * @since 1.5.1
+			 *
+			 * @param int $comment_post_ID Post ID.
+			 */
+			do_action( 'comment_on_draft', $comment_post_ID );
 
+			return new WP_Error( 'comment_on_draft' );
+		}
 	} elseif ( post_password_required( $comment_post_ID ) ) {
 
 		/**
