diff --git a/src/wp-includes/class-wp-query.php b/src/wp-includes/class-wp-query.php
index 7c3f8e1a12..b91d9d9e45 100644
--- a/src/wp-includes/class-wp-query.php
+++ b/src/wp-includes/class-wp-query.php
@@ -394,6 +394,20 @@ class WP_Query {
 	}

 	/**
+	 * Helper to check current query type against provided condition.
+	 *
+	 * Centralizes logic shared by is_*() conditional methods to reduce
+	 * duplication and ease maintenance.
+	 *
+	 * @since 7.0.0
+	 *
+	 * @param string $type Conditional type (e.g., 'is_home', 'is_single').
+	 * @return bool True if current query matches the given type.
+	 */
+	protected function is_query_type( $type ) {
+		return ! empty( $this->$type ) && true === $this->$type;
+	}
+
+	/**
 	 * Is the query for the blog homepage?
 	 *
 	 * @since 1.5.0
@@ -401,7 +415,7 @@ class WP_Query {
 	 * @return bool
 	 */
 	public function is_home() {
-		return (bool) $this->is_home;
+		return $this->is_query_type( 'is_home' );
 	}

 	/**
@@ -409,7 +423,7 @@ class WP_Query {
 	 * @return bool
 	 */
 	public function is_single() {
-		return (bool) $this->is_single;
+		return $this->is_query_type( 'is_single' );
 	}

 	/**
@@ -417,7 +431,7 @@ class WP_Query {
 	 * @return bool
 	 */
 	public function is_page() {
-		return (bool) $this->is_page;
+		return $this->is_query_type( 'is_page' );
 	}
