diff --git src/wp-admin/includes/file.php src/wp-admin/includes/file.php
index efc846b..b348c11 100644
--- src/wp-admin/includes/file.php
+++ src/wp-admin/includes/file.php
@@ -36,6 +36,7 @@ $wp_file_descriptions = array(
 	'single.php'            => __( 'Single Post' ),
 	'page.php'              => __( 'Single Page' ),
 	'front-page.php'        => __( 'Homepage' ),
+	'privacy-policy.php'    => __( 'Privacy Policy Page' ),
 	// Attachments
 	'attachment.php'        => __( 'Attachment Template' ),
 	'image.php'             => __( 'Image Attachment Template' ),
diff --git src/wp-includes/class-wp-query.php src/wp-includes/class-wp-query.php
index 02f2406..f778402 100644
--- src/wp-includes/class-wp-query.php
+++ src/wp-includes/class-wp-query.php
@@ -326,6 +326,14 @@ class WP_Query {
 	public $is_home = false;
 
 	/**
+	 * Signifies whether the current query is for the Privacy Policy page.
+	 *
+	 * @since 5.2.0
+	 * @var bool
+	 */
+	public $is_privacy_policy = false;
+
+	/**
 	 * Signifies whether the current query couldn't find anything.
 	 *
 	 * @since 1.5.0
@@ -463,6 +471,7 @@ class WP_Query {
 		$this->is_comment_feed      = false;
 		$this->is_trackback         = false;
 		$this->is_home              = false;
+		$this->is_privacy_policy    = false;
 		$this->is_404               = false;
 		$this->is_paged             = false;
 		$this->is_admin             = false;
@@ -998,6 +1007,10 @@ class WP_Query {
 				$this->is_home       = true;
 				$this->is_posts_page = true;
 			}
+
+			if ( isset( $this->queried_object_id ) && $this->queried_object_id == get_option( 'wp_page_for_privacy_policy' ) ) {
+				$this->is_privacy_policy = true;
+			}
 		}
 
 		if ( $qv['page_id'] ) {
@@ -1006,6 +1019,10 @@ class WP_Query {
 				$this->is_home       = true;
 				$this->is_posts_page = true;
 			}
+
+			if ( $qv['page_id'] == get_option( 'wp_page_for_privacy_policy' ) ) {
+				$this->is_privacy_policy = true;
+			}
 		}
 
 		if ( ! empty( $qv['post_type'] ) ) {
@@ -3878,6 +3895,29 @@ class WP_Query {
 	}
 
 	/**
+	 * Is the query for the Privacy Policy page?
+	 *
+	 * This is the page which shows the Privacy Policy content of your site.
+	 *
+	 * Depends on the site's "Change your Privacy Policy page" Privacy Settings 'wp_page_for_privacy_policy'.
+	 *
+	 * This function will return true only on the page you set as the "Privacy Policy page".
+	 *
+	 * @see WP_Query::is_front_page()
+	 *
+	 * @since 5.2.0
+	 *
+	 * @return bool True, if Privacy Policy page.
+	 */
+	public function is_privacy_policy() {
+		if ( get_option( 'wp_page_for_privacy_policy' ) && $this->is_page( get_option( 'wp_page_for_privacy_policy' ) ) ) {
+			return true;
+		} else {
+			return false;
+		}
+	}
+
+	/**
 	 * Is the query for an existing month archive?
 	 *
 	 * @since 3.1.0
diff --git src/wp-includes/post-template.php src/wp-includes/post-template.php
index 3cf0c7c..7738fcb 100644
--- src/wp-includes/post-template.php
+++ src/wp-includes/post-template.php
@@ -603,6 +603,9 @@ function get_body_class( $class = '' ) {
 	if ( is_home() ) {
 		$classes[] = 'blog';
 	}
+	if ( is_privacy_policy() ) {
+		$classes[] = 'privacy-policy';
+	}
 	if ( is_archive() ) {
 		$classes[] = 'archive';
 	}
diff --git src/wp-includes/query.php src/wp-includes/query.php
index 9d2db74..9d668f0 100644
--- src/wp-includes/query.php
+++ src/wp-includes/query.php
@@ -490,6 +490,36 @@ function is_home() {
 }
 
 /**
+ * Determines whether the query is for the Privacy Policy page.
+ *
+ * The Privacy Policy page is the page that shows the Privacy Policy content of the site.
+ *
+ * is_privacy_policy() is dependent on the site's "Change your Privacy Policy page" Privacy Settings 'wp_page_for_privacy_policy'.
+ *
+ * This function will return true only on the page you set as the "Privacy Policy page".
+ *
+ * For more information on this and similar theme functions, check out
+ * the {@link https://developer.wordpress.org/themes/basics/conditional-tags/
+ * Conditional Tags} article in the Theme Developer Handbook.
+ *
+ * @since 5.2.0
+ *
+ * @global WP_Query $wp_query Global WP_Query instance.
+ *
+ * @return bool
+ */
+function is_privacy_policy() {
+	global $wp_query;
+
+	if ( ! isset( $wp_query ) ) {
+		_doing_it_wrong( __FUNCTION__, __( 'Conditional query tags do not work before the query is run. Before then, they always return false.' ), '3.1.0' );
+		return false;
+	}
+
+	return $wp_query->is_privacy_policy();
+}
+
+/**
  * Determines whether the query is for an existing month archive.
  *
  * For more information on this and similar theme functions, check out
diff --git src/wp-includes/template-loader.php src/wp-includes/template-loader.php
index 0879798..7e627c5 100644
--- src/wp-includes/template-loader.php
+++ src/wp-includes/template-loader.php
@@ -51,6 +51,7 @@ if ( wp_using_themes() ) :
 	elseif ( is_search() && $template = get_search_template() ) :
 	elseif ( is_front_page() && $template = get_front_page_template() ) :
 	elseif ( is_home() && $template = get_home_template() ) :
+	elseif ( is_privacy_policy() && $template = get_privacy_policy_template() ) :
 	elseif ( is_post_type_archive() && $template = get_post_type_archive_template() ) :
 	elseif ( is_tax() && $template = get_taxonomy_template() ) :
 	elseif ( is_attachment() && $template = get_attachment_template() ) :
diff --git src/wp-includes/template.php src/wp-includes/template.php
index 862b2cc..67db6dd 100644
--- src/wp-includes/template.php
+++ src/wp-includes/template.php
@@ -33,7 +33,7 @@ function get_query_template( $type, $templates = array() ) {
 	 * The last element in the array should always be the fallback template for this query type.
 	 *
 	 * Possible values for `$type` include: 'index', '404', 'archive', 'author', 'category', 'tag', 'taxonomy', 'date',
-	 * 'embed', 'home', 'frontpage', 'page', 'paged', 'search', 'single', 'singular', and 'attachment'.
+	 * 'embed', 'home', 'frontpage', 'privacypolicy', 'page', 'paged', 'search', 'single', 'singular', and 'attachment'.
 	 *
 	 * @since 4.7.0
 	 *
@@ -51,7 +51,7 @@ function get_query_template( $type, $templates = array() ) {
 	 * This hook also applies to various types of files loaded as part of the Template Hierarchy.
 	 *
 	 * Possible values for `$type` include: 'index', '404', 'archive', 'author', 'category', 'tag', 'taxonomy', 'date',
-	 * 'embed', 'home', 'frontpage', 'page', 'paged', 'search', 'single', 'singular', and 'attachment'.
+	 * 'embed', 'home', 'frontpage', 'privacypolicy', 'page', 'paged', 'search', 'single', 'singular', and 'attachment'.
 	 *
 	 * @since 1.5.0
 	 * @since 4.8.0 The `$type` and `$templates` parameters were added.
@@ -377,6 +377,24 @@ function get_front_page_template() {
 }
 
 /**
+ * Retrieve path of Privacy Policy page template in current or parent template.
+ *
+ * The template hierarchy and template path are filterable via the {@see '$type_template_hierarchy'}
+ * and {@see '$type_template'} dynamic hooks, where `$type` is 'privacypolicy'.
+ *
+ * @since 5.2.0
+ *
+ * @see get_query_template()
+ *
+ * @return string Full path to front page template file.
+ */
+function get_privacy_policy_template() {
+	$templates = array( 'privacy-policy.php' );
+
+	return get_query_template( 'privacy_policy', $templates );
+}
+
+/**
  * Retrieve path of page template in current or parent template.
  *
  * The hierarchy for this template looks like:
diff --git tests/phpunit/includes/abstract-testcase.php tests/phpunit/includes/abstract-testcase.php
index 7858862..e064fe3 100644
--- tests/phpunit/includes/abstract-testcase.php
+++ tests/phpunit/includes/abstract-testcase.php
@@ -836,6 +836,7 @@ abstract class WP_UnitTestCase_Base extends PHPUnit_Framework_TestCase {
 			'is_time',
 			'is_trackback',
 			'is_year',
+			'is_privacy_policy',
 		);
 		$true = func_get_args();
 
diff --git tests/phpunit/tests/post/getBodyClass.php tests/phpunit/tests/post/getBodyClass.php
index 5b0ade1..9c8ce67 100644
--- tests/phpunit/tests/post/getBodyClass.php
+++ tests/phpunit/tests/post/getBodyClass.php
@@ -202,4 +202,28 @@ class Tests_Post_GetBodyClass extends WP_UnitTestCase {
 		$this->assertContains( "attachmentid-{$attachment_id}", $class );
 		$this->assertContains( 'attachment-jpeg', $class );
 	}
+
+	/**
+	 * @ticket 44005
+	 * @group privacy
+	 */
+	public function test_privacy_policy_body_class() {
+		$page_id = self::factory()->post->create(
+			array(
+				'post_type'  => 'page',
+				'post_title' => 'Privacy Policy',
+			)
+		);
+		update_option( 'wp_page_for_privacy_policy', $page_id );
+
+		$this->go_to( get_permalink( $page_id ) );
+
+		$class = get_body_class();
+
+		$this->assertContains( 'privacy-policy', $class );
+		$this->assertContains( 'page-template-default', $class );
+		$this->assertContains( 'page', $class );
+		$this->assertContains( "page-id-{$page_id}", $class );
+	}
+
 }
diff --git tests/phpunit/tests/query/conditionals.php tests/phpunit/tests/query/conditionals.php
index 6be39be..5b296d5 100644
--- tests/phpunit/tests/query/conditionals.php
+++ tests/phpunit/tests/query/conditionals.php
@@ -1590,4 +1590,23 @@ class Tests_Query_Conditionals extends WP_UnitTestCase {
 		$this->assertTrue( is_single( $p2 ) );
 		$this->assertFalse( is_single( $p1 ) );
 	}
+	/**
+	 * @ticket 44005
+	 * @group privacy
+	 */
+	public function test_is_privacy_policy() {
+		$page_id = self::factory()->post->create(
+			array(
+				'post_type'  => 'page',
+				'post_title' => 'Privacy Policy',
+			)
+		);
+
+		update_option( 'wp_page_for_privacy_policy', $page_id );
+
+		$this->go_to( get_permalink( $page_id ) );
+
+		$this->assertQueryTrue( 'is_page', 'is_singular', 'is_privacy_policy' );
+	}
+
 }
diff --git tests/phpunit/tests/template.php tests/phpunit/tests/template.php
index 3a0b66b..ba79ab4 100644
--- tests/phpunit/tests/template.php
+++ tests/phpunit/tests/template.php
@@ -13,6 +13,15 @@ class Tests_Template extends WP_UnitTestCase {
 	protected static $page;
 	protected static $post;
 
+	/**
+	 * Page For Privacy Policy.
+	 *
+	 * @since 5.2.0
+	 *
+	 * @var WP_Post $page_for_privacy_policy
+	 */
+	protected static $page_for_privacy_policy;
+
 	public static function wpSetUpBeforeClass( WP_UnitTest_Factory $factory ) {
 		self::$page_on_front = $factory->post->create_and_get(
 			array(
@@ -45,6 +54,13 @@ class Tests_Template extends WP_UnitTestCase {
 		);
 		set_post_format( self::$post, 'quote' );
 		add_post_meta( self::$post->ID, '_wp_page_template', 'templates/post.php' );
+
+		self::$page_for_privacy_policy = $factory->post->create_and_get(
+			array(
+				'post_type'  => 'page',
+				'post_title' => 'Privacy Policy',
+			)
+		);
 	}
 
 	public function setUp() {
@@ -273,6 +289,24 @@ class Tests_Template extends WP_UnitTestCase {
 	}
 
 	/**
+ 	 * @ticket 44005
+	 * @group privacy
+	 */
+	public function test_privacy_template_hierarchy() {
+		update_option( 'wp_page_for_privacy_policy', self::$page_for_privacy_policy->ID );
+
+		$this->assertTemplateHierarchy(
+			get_permalink( self::$page_for_privacy_policy->ID ),
+			array(
+				'page-privacy-policy.php',
+				'page-' . self::$page_for_privacy_policy->ID . '.php',
+				'page.php',
+				'singular.php',
+			)
+		);
+	}
+
+	/**
 	 * @ticket 18375
 	 */
 	public function test_single_template_hierarchy_for_post() {
diff --git tests/phpunit/tests/url/getPrivacyPolicyUrl.php tests/phpunit/tests/url/getPrivacyPolicyUrl.php
index b6d6a23..6938470 100644
--- tests/phpunit/tests/url/getPrivacyPolicyUrl.php
+++ tests/phpunit/tests/url/getPrivacyPolicyUrl.php
@@ -45,8 +45,6 @@ class Tests_Url_GetPrivacyPolicyUrl extends WP_UnitTestCase {
 				'post_title' => WP_TESTS_DOMAIN . ' Privacy Policy',
 			)
 		);
-
-		self::$privacy_policy_url = get_permalink( self::$privacy_policy_page_id );
 	}
 
 	/**
@@ -60,9 +58,10 @@ class Tests_Url_GetPrivacyPolicyUrl extends WP_UnitTestCase {
 	 * The function should return the privacy policy URL when `wp_page_for_privacy_policy` is set.
 	 */
 	public function test_get_privacy_policy_url_should_return_valid_url_when_policy_page_set() {
+		$privacy_policy_url = get_permalink( self::$privacy_policy_page_id );
 		update_option( 'wp_page_for_privacy_policy', self::$privacy_policy_page_id );
 
-		$this->assertSame( self::$privacy_policy_url, get_privacy_policy_url() );
+		$this->assertSame( $privacy_policy_url, get_privacy_policy_url() );
 	}
 
 	/**
