diff --git wordpress.org/public_html/wp-content/plugins/plugin-directory/class-template.php wordpress.org/public_html/wp-content/plugins/plugin-directory/class-template.php
index 09f5ada0..684c5702 100644
--- wordpress.org/public_html/wp-content/plugins/plugin-directory/class-template.php
+++ wordpress.org/public_html/wp-content/plugins/plugin-directory/class-template.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace WordPressdotorg\Plugin_Directory;
 
 // Explicitly require dependencies so this file can be sourced outside the Plugin Directory.
@@ -12,7 +13,6 @@ require_once( __DIR__ . '/class-plugin-geopattern-svgtext.php' );
  * @package WordPressdotorg\Plugin_Directory
  */
 class Template {
-
 	/**
 	 * Prints markup information in the head of a page.
 	 *
@@ -26,7 +26,7 @@ class Template {
 		if ( is_front_page() ) :
 			echo PHP_EOL;
 			?>
-<script type="application/ld+json">
+            <script type="application/ld+json">
 	{
 		"@context": "http://schema.org",
 		"@type": "WebSite",
@@ -40,7 +40,8 @@ class Template {
 			}
 		]
 	}
-</script>
+
+            </script>
 			<?php
 		endif;
 
@@ -64,7 +65,7 @@ class Template {
 
 		echo PHP_EOL;
 		?>
-<script type="application/ld+json">
+        <script type="application/ld+json">
 	[
 		{
 			"@context": "http://schema.org",
@@ -123,7 +124,8 @@ class Template {
 			}
 		}
 	]
-</script>
+
+        </script>
 		<?php
 	}
 
@@ -156,6 +158,7 @@ class Template {
 	 *
 	 * @param bool              $full Optional. Whether to include "active installations" suffix. Default: true.
 	 * @param int|\WP_Post|null $post Optional. Post ID or post object. Defaults to global $post.
+	 *
 	 * @return string "1+ million" or "1+ million active installations" depending on $full.
 	 */
 	public static function active_installs( $full = true, $post = null ) {
@@ -179,9 +182,10 @@ class Template {
 	 * Returns the number of downloads for a plugin.
 	 *
 	 * @static
-	 * @global \wpdb $wpdb WordPress database abstraction object.
+	 * @global \wpdb            $wpdb WordPress database abstraction object.
 	 *
 	 * @param int|\WP_Post|null $post Optional.
+	 *
 	 * @return int
 	 */
 	public static function get_downloads_count( $post = null ) {
@@ -224,6 +228,7 @@ class Template {
 	 * @static
 	 *
 	 * @param int|\WP_Post|null $post Optional. Post ID or post object. Defaults to global $post.
+	 *
 	 * @return string
 	 */
 	public static function get_star_rating( $post = null ) {
@@ -235,16 +240,16 @@ class Template {
 
 		return
 			'<div class="plugin-rating">' .
-				Template::dashicons_stars( $rating ) .
-				'<span class="rating-count">(' .
-					'<a href="https://wordpress.org/support/plugin/' . $post->post_name . '/reviews/">' .
-					sprintf(
-						/* translators: 1: number of ratings */
-						__( '%1$s<span class="screen-reader-text"> total ratings</span>', 'wporg-plugins' ),
-						number_format_i18n( $num_ratings )
-					) .
-				'</a>' .
-				')</span>' .
+			Template::dashicons_stars( $rating ) .
+			'<span class="rating-count">(' .
+			'<a href="https://wordpress.org/support/plugin/' . $post->post_name . '/reviews/">' .
+			sprintf(
+			/* translators: 1: number of ratings */
+				__( '%1$s<span class="screen-reader-text"> total ratings</span>', 'wporg-plugins' ),
+				number_format_i18n( $num_ratings )
+			) .
+			'</a>' .
+			')</span>' .
 			'</div>';
 	}
 
@@ -254,6 +259,7 @@ class Template {
 	 * @static
 	 *
 	 * @param int|\WP_Post|null $post Optional. Post ID or post object. Defaults to global $post.
+	 *
 	 * @return array
 	 */
 	public static function get_plugin_sections( $post = null ) {
@@ -352,6 +358,7 @@ class Template {
 	 *
 	 * @param int|\WP_Post|null $post   Optional. Post ID or post object. Defaults to global $post.
 	 * @param string            $output Optional. Output type. 'html' or 'raw'. Default: 'raw'.
+	 *
 	 * @return mixed
 	 */
 	public static function get_plugin_icon( $post = null, $output = 'raw' ) {
@@ -404,8 +411,8 @@ class Template {
 
 		switch ( $output ) {
 			case 'html':
-				$id    = "plugin-icon-{$plugin->post_name}";
-				$html  = "<style type='text/css'>";
+				$id   = "plugin-icon-{$plugin->post_name}";
+				$html = "<style type='text/css'>";
 				$html .= "#{$id} { background-image: url('{$icon}'); } .plugin-icon { background-size: cover; height: 128px; width: 128px; }";
 				if ( ! empty( $icon_2x ) && ! $generated ) {
 					$html .= "@media only screen and (-webkit-min-device-pixel-ratio: 1.5), only screen and (min-resolution: 144dpi) { #{$id} { background-image: url('{$icon_2x}'); } }";
@@ -429,6 +436,7 @@ class Template {
 	 *
 	 * @param int|\WP_Post|null $post   Optional. Post ID or post object. Defaults to global $post.
 	 * @param string            $output Optional. Output type. 'html' or 'raw'. Default: 'raw'.
+	 *
 	 * @return mixed
 	 */
 	public static function get_plugin_banner( $post = null, $output = 'raw' ) {
@@ -476,8 +484,8 @@ class Template {
 
 		switch ( $output ) {
 			case 'html':
-				$id    = "plugin-banner-{$plugin->post_name}";
-				$html  = "<style type='text/css'>";
+				$id   = "plugin-banner-{$plugin->post_name}";
+				$html = "<style type='text/css'>";
 				$html .= "#{$id} { background-image: url('{$banner}'); }";
 				if ( ! empty( $banner_2x ) ) {
 					$html .= "@media only screen and (-webkit-min-device-pixel-ratio: 1.5), only screen and (min-resolution: 144dpi) { #{$id} { background-image: url('{$banner_2x}'); } }";
@@ -504,6 +512,7 @@ class Template {
 	 * @param int|\WP_Post|null $post  Optional. Post ID or post object. Defaults to global $post.
 	 * @param array             $asset Assets folder information.
 	 * @param bool              $cdn   Optional. If the url should be CDN'ised. Default true.
+	 *
 	 * @return string
 	 */
 	public static function get_asset_url( $post, $asset, $cdn = true ) {
@@ -538,7 +547,8 @@ class Template {
 	 *
 	 * @static
 	 *
-	 * @param int|\WP_Post|null $post  Optional. Post ID or post object. Defaults to global $post.
+	 * @param int|\WP_Post|null $post Optional. Post ID or post object. Defaults to global $post.
+	 *
 	 * @return string
 	 */
 	public static function get_support_url( $post = null ) {
@@ -564,11 +574,11 @@ class Template {
 	 *
 	 * @static
 	 *
-	 * @param int|array $args {
-	 *    If numeric arg passed, assumed to be 'rating'.
+	 * @param int|array $args     {
+	 *                            If numeric arg passed, assumed to be 'rating'.
 	 *
-	 *    @type int    $rating   The rating to display.
-	 *    @type string $template The HTML template to use for each star.
+	 * @type int        $rating   The rating to display.
+	 * @type string     $template The HTML template to use for each star.
 	 *                           %1$s is the class, %2$s is the rating.
 	 * }
 	 * @return string The Rating HTML.
@@ -586,7 +596,7 @@ class Template {
 
 		$output  = '<div class="wporg-ratings" aria-label="' . esc_attr( $title ) . '" data-title-template="' . esc_attr( $title_template ) . '" data-rating="' . esc_attr( $rating ) . '" style="color:#ffb900;">';
 		$counter = round( $rating * 2 );
-		for ( $i = 1; $i <= 5; $i++ ) {
+		for ( $i = 1; $i <= 5; $i ++ ) {
 			switch ( $counter ) {
 				case 0:
 					$output .= sprintf( $template, 'dashicons dashicons-star-empty', $i );
@@ -594,7 +604,7 @@ class Template {
 
 				case 1:
 					$output .= sprintf( $template, 'dashicons dashicons-star-half', $i );
-					$counter--;
+					$counter --;
 					break;
 
 				default:
@@ -613,6 +623,7 @@ class Template {
 	 *
 	 * @param int|\WP_Post|null $post    Optional. Post ID or post object. Defaults to global $post.
 	 * @param string            $version The version to link to. Optional. Default: latest.
+	 *
 	 * @return string The Download URL.
 	 */
 	public static function download_link( $post = null, $version = 'latest' ) {
@@ -635,6 +646,7 @@ class Template {
 	 * @static
 	 *
 	 * @param string $string
+	 *
 	 * @return string
 	 */
 	public static function encode( $string ) {
@@ -648,6 +660,7 @@ class Template {
 	 *
 	 * @param int|\WP_Post|null $post Optional. Post ID or post object. Defaults to global $post.
 	 * @param mixed             $user The user to alter the favorite status for.
+	 *
 	 * @return string URL to toggle status.
 	 */
 	public static function get_favorite_link( $post = null, $user = 0 ) {
@@ -656,12 +669,82 @@ class Template {
 		$favorited = Tools::favorited_plugin( $post, $user );
 
 		return add_query_arg( array(
-			'_wpnonce' => wp_create_nonce( 'wp_rest' ),
-			( $favorited ? 'unfavorite' : 'favorite' ) => '1'
+			'_wpnonce'                                 => wp_create_nonce( 'wp_rest' ),
+			( $favorited ? 'unfavorite' : 'favorite' ) => '1',
 		), home_url( 'wp-json/plugins/v1/plugin/' . $post->post_name . '/favorite' ) );
 	}
 
 	/**
+	 * Checks whether a plugin is closed or not.
+	 *
+	 * @return bool
+	 */
+	public static function plugin_is_closed() {
+		$status = get_post_status();
+		if ( in_array( $status, array( 'closed', 'disabled' ) ) ) {
+			return true;
+		}
+
+		return false;
+	}
+
+	/**
+	 * Returns text to show to plugin authors on closed pages
+	 */
+	public static function plugin_closed_author_info() {
+		return sprintf(
+		/* translators: 1: plugins@wordpress.org */
+			__( 'If you did not request this change, please contact <a href="mailto:%1$s">%1$s</a> for a status. All developers with commit access are contacted when a plugin is closed, with the reasons why, so check your spam email too.', 'wporg-plugins' ),
+			'plugins@wordpress.org'
+		);
+	}
+
+	/**
+	 * Returns a string about why the plugin isn't active.
+	 *
+	 * @return array {
+	 *      @type string $message The reason the plugin isn't active
+	 *      @type string $notice_type The notice type.
+	 * }
+	 */
+	public static function plugin_not_active_reason() {
+		$status      = get_post_status();
+		$notice_type = 'notice-error';
+		switch ( $status ) {
+			case 'draft':
+			case 'pending':
+				$message     = __( 'This plugin is requested and not visible to the public yet. Please be patient as your plugin gets reviewed.', 'wporg-plugins' );
+				$notice_type = 'notice-info';
+				break;
+
+			case 'approved':
+				$message     = __( 'This plugin is approved and awaiting data upload but not visible to the public yet. Once you make your first commit, the plugin will become public.', 'wporg-plugins' );
+				$notice_type = 'notice-info';
+				break;
+
+			case 'rejected':
+				$message = __( 'This plugin has been rejected and is not visible to the public.', 'wporg-plugins' );
+				break;
+
+			case 'disabled':
+				if ( current_user_can( 'plugin_approve' ) ) {
+					$message = __( 'This plugin is disabled (closed, but actively serving updates).', 'wporg-plugins' );
+					break;
+				} else {
+					$message = __( 'This plugin has been closed for new installs.', 'wporg-plugins' );
+					break;
+				}
+			// fall through
+			default:
+			case 'closed':
+				$message = __( 'This plugin has been closed and is no longer available for download.', 'wporg-plugins' );
+				break;
+		}
+
+		return compact( $message, $notice_type );
+	}
+
+	/**
 	 * Returns the reasons for closing or disabling a plugin.
 	 *
 	 * @return array Close/disable reason labels.
@@ -681,6 +764,7 @@ class Template {
 	 * Returns the close/disable reason for a plugin.
 	 *
 	 * @param int|\WP_Post|null $post Optional. Post ID or post object. Defaults to global $post.
+	 *
 	 * @return string Close/disable reason.
 	 */
 	public static function get_close_reason( $post = null ) {
@@ -688,7 +772,7 @@ class Template {
 
 		$close_reasons = self::get_close_reasons();
 		$close_reason  = (string) get_post_meta( $post->ID, '_close_reason', true );
-		
+
 		if ( isset( $close_reasons[ $close_reason ] ) ) {
 			$reason_label = $close_reasons[ $close_reason ];
 		} else {
@@ -753,21 +837,21 @@ class Template {
 			$sites['en_US'] = (object) array(
 				'locale'    => 'en_US',
 				'hreflang'  => 'en',
-				'subdomain' => ''
+				'subdomain' => '',
 			);
 
-			uasort( $sites, function( $a, $b ) {
+			uasort( $sites, function ( $a, $b ) {
 				return strcasecmp( $a->hreflang, $b->hreflang );
 			} );
 
-			wp_cache_set( 'local-sites-'.get_post()->post_name, $sites, 'locale-associations', DAY_IN_SECONDS );
+			wp_cache_set( 'local-sites-' . get_post()->post_name, $sites, 'locale-associations', DAY_IN_SECONDS );
 		}
 
 		foreach ( $sites as $site ) {
 			$url = sprintf(
 				'https://%swordpress.org%s',
 				$site->subdomain ? "{$site->subdomain}." : '',
-				$_SERVER[ 'REQUEST_URI' ]
+				$_SERVER['REQUEST_URI']
 			);
 
 			printf(
diff --git wordpress.org/public_html/wp-content/themes/pub/wporg-plugins/template-parts/plugin-single.php wordpress.org/public_html/wp-content/themes/pub/wporg-plugins/template-parts/plugin-single.php
index 7646230e..9d21434e 100644
--- wordpress.org/public_html/wp-content/themes/pub/wporg-plugins/template-parts/plugin-single.php
+++ wordpress.org/public_html/wp-content/themes/pub/wporg-plugins/template-parts/plugin-single.php
@@ -2,143 +2,112 @@
 /**
  * Template part for displaying posts.
  *
- * @link https://codex.wordpress.org/Template_Hierarchy
+ * @link    https://codex.wordpress.org/Template_Hierarchy
  *
  * @package WordPressdotorg\Plugin_Directory\Theme
  */
 
 namespace WordPressdotorg\Plugin_Directory\Theme;
+
 use WordPressdotorg\Plugin_Directory\Plugin_Directory;
 use WordPressdotorg\Plugin_Directory\Template;
 use WordPressdotorg\Plugin_Directory\Tools;
+
 global $section, $section_slug, $section_content, $section_read_more;
 
 $content = Plugin_Directory::instance()->split_post_content_into_pages( get_the_content() );
-$status  = get_post_status();
-
-?><article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
-    <?php
-    // Don't show the plugin banner for closed plugins
-    if ( ! in_array( $status, array( 'closed', 'disabled' ) ) ) {
-	    echo Template::get_plugin_banner( get_post(), 'html' );
-    }
-    ?>
-
-	<header class="plugin-header">
-		<?php if ( time() - get_post_modified_time() > 2 * YEAR_IN_SECONDS ) : ?>
-			<div class="plugin-notice notice notice-warning notice-alt">
-				<p><?php _e( 'This plugin <strong>hasn&#146;t been updated in over 2 years</strong>. It may no longer be maintained or supported and may have compatibility issues when used with more recent versions of WordPress.', 'wporg-plugins' ); ?></p>
-			</div>
-		<?php endif; ?>
-		<?php if ( 'publish' !== $status ) :
-				$notice_type = 'notice-error';
-				switch ( $status ) {
-					case 'draft':
-					case 'pending':
-						$message = __( 'This plugin is requested and not visible to the public yet. Please be patient as your plugin gets reviewed.', 'wporg-plugins' );
-						$notice_type = 'notice-info';
-						break;
-
-					case 'approved':
-						$message = __( 'This plugin is approved and awaiting data upload but not visible to the public yet. Once you make your first commit, the plugin will become public.', 'wporg-plugins' );
-						$notice_type = 'notice-info';
-						break;
-
-					case 'rejected':
-						$message = __( 'This plugin has been rejected and is not visible to the public.', 'wporg-plugins' );
-						break;
-
-					case 'disabled':
-						if ( current_user_can( 'plugin_approve' ) ) {
-							$message = __( 'This plugin is disabled (closed, but actively serving updates).', 'wporg-plugins' );
-							break;
-						} else {
-							$message = __( 'This plugin has been closed for new installs.', 'wporg-plugins' );
-							break;
-						}
-						// fall through
-					default:
-					case 'closed':
-						$message        = __( 'This plugin has been closed and is no longer available for download.', 'wporg-plugins' );
-						break;
-				}
 
-            if ( in_array( $status, array( 'closed', 'disabled' ) ) ) {
-	            $closed_date    = get_post_meta( get_the_ID(), 'plugin_closed_date', true );
-	            if ( ! empty( $closed_date ) ) {
-		            $message .= '<br/>';
-					$message .= sprintf( __( 'This plugin was closed on %s.', 'wporg-plugins' ), mysql2date( get_option( 'date_format' ), $closed_date ) );
+?>
+<article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
+	<?php
+	// Don't show the plugin banner for closed plugins
+	if ( ! Template::plugin_is_closed() ) {
+		echo Template::get_plugin_banner( get_post(), 'html' );
+	}
+	?>
+
+    <header class="plugin-header">
+		<?php
+
+		$status = get_post_status();
+		if ( 'publish' !== $status ) :
+            $message = Template::plugin_not_active_reason();
+			if ( Template::plugin_is_closed() ) {
+				$closed_date = get_post_meta( get_the_ID(), 'plugin_closed_date', true );
+				if ( ! empty( $closed_date ) ) {
+					$message['message'] .= '<br/>';
+					$message['message'] .= sprintf( __( 'This plugin was closed on %s.', 'wporg-plugins' ), mysql2date( get_option( 'date_format' ), $closed_date ) );
 				}
-            }
-
-		if ( ! in_array( $status, array( 'closed', 'disabled' ) ) ) {
-				    // the notice for closed and disabled is shown below the Description header, because we don't output the readme there
-			?>
-            <!-- .plugin-notice -->
-			<div class="plugin-notice notice <?php echo esc_attr( $notice_type ); ?> notice-alt">
-				<p><?php echo $message; ?></p>
-			</div>
-            <!-- .plugin-notice -->
-        <?php } ?>
-		<?php endif; ?>
-
-		<div class="entry-thumbnail">
-            <?php
-            // Don't show the icon for closed plugins
-            if ( ! in_array( $status, array( 'closed', 'disabled' ) ) ) {
-			    echo Template::get_plugin_icon( get_post(), 'html' );
-            }
-            ?>
-		</div>
-
-		<div class="plugin-actions">
+			} else {
+				// the notice for closed and disabled is shown below the Description header, because we don't output the readme there
+				?>
+                <!-- .plugin-notice -->
+                <div class="plugin-notice notice <?php echo esc_attr( $message['notice_type'] ); ?> notice-alt">
+                    <p><?php echo $message['message']; ?></p>
+                </div>
+                <!-- .plugin-notice -->
+				<?php
+			}
+
+		endif;
+
+		// Don't show the icon (and its wrapping div) for closed plugins
+		if ( ! Template::plugin_is_closed() ) {
+			printf( '<div class="entry-thumbnail">%s</div>', Template::get_plugin_icon( get_post(), 'html' ) );
+		}
+		?>
+
+        <div class="plugin-actions">
 			<?php
 			if ( is_user_logged_in() ) :
 				$url = Template::get_favorite_link();
-				$is_favorited = Tools::favorited_plugin( $post );
+				$is_favorited = Tools::favorited_plugin( get_post() );
 				?>
-				<div class="plugin-favorite">
-					<a href="<?php echo esc_url( $url ); ?>" class="plugin-favorite-heart<?php echo $is_favorited ? ' favorited' : ''; ?>">
+                <div class="plugin-favorite">
+                    <a href="<?php echo esc_url( $url ); ?>"
+                       class="plugin-favorite-heart<?php echo $is_favorited ? ' favorited' : ''; ?>">
 						<span class="screen-reader-text">
 							<?php
-								if ( $is_favorited ) {
-									/* translators: %s: plugin name */
-									printf( __( 'Unfavorite %s', 'wporg-plugins' ), get_the_title() );
-								} else {
-									/* translators: %s: plugin name */
-									printf( __( 'Favorite %s', 'wporg-plugins' ), get_the_title() );
-								}
+							if ( $is_favorited ) {
+								/* translators: %s: plugin name */
+								printf( __( 'Unfavorite %s', 'wporg-plugins' ), get_the_title() );
+							} else {
+								/* translators: %s: plugin name */
+								printf( __( 'Favorite %s', 'wporg-plugins' ), get_the_title() );
+							}
 							?>
 						</span>
-					</a>
-					<script>
-						jQuery( '.plugin-favorite-heart' )
-							.on( 'click touchstart animationend', function() {
-								jQuery( this ).toggleClass( 'is-animating' );
+                    </a>
+                    <script>
+						jQuery( ".plugin-favorite-heart" )
+							.on( "click touchstart animationend", function() {
+								jQuery( this ).toggleClass( "is-animating" );
 							} )
-							.on( 'click', function() {
-								jQuery( this ).toggleClass( 'favorited' );
+							.on( "click", function() {
+								jQuery( this ).toggleClass( "favorited" );
 							} );
-					</script>
-				</div>
+                    </script>
+                </div>
 			<?php endif; ?>
 
 			<?php if ( 'publish' === get_post_status() || current_user_can( 'plugin_admin_view', get_post() ) ) : ?>
-				<a class="plugin-download button download-button button-large" href="<?php echo esc_url( Template::download_link() ); ?>"><?php _e( 'Download', 'wporg-plugins' ); ?></a>
+                <a class="plugin-download button download-button button-large"
+                   href="<?php echo esc_url( Template::download_link() ); ?>"><?php _e( 'Download', 'wporg-plugins' ); ?></a>
 			<?php endif; ?>
-		</div>
-	
+        </div>
+
 		<?php
-		if ( in_array( $status, array( 'closed', 'disabled' ) ) ) {
-			add_filter( 'the_title', function( $title, $id ) {
+		if ( Template::plugin_is_closed() ) {
+			add_filter( 'the_title', function ( $title, $id ) {
 				$post = get_post( $id );
+
 				return $post->post_name;
 			}, 10, 2 );
 		}
-        the_title( '<h1 class="plugin-title"><a href="' . esc_url( get_permalink() ) . '">', '</a></h1>' ); ?>
+		the_title( '<h1 class="plugin-title"><a href="' . esc_url( get_permalink() ) . '">', '</a></h1>' ); ?>
 
-		<span class="byline"><?php
-			$url = get_post_meta( get_the_ID(), 'header_author_uri', true );
+        <span class="byline"><?php
+			$url    = get_post_meta( get_the_ID(), 'header_author_uri', true );
 			$author = strip_tags( get_post_meta( get_the_ID(), 'header_author', true ) ) ?: get_the_author();
 
 			printf(
@@ -149,52 +118,65 @@ $status  = get_post_status();
 				( $url ? '</a>' : '' ) .
 				'</span>'
 			);
-		?></span>
-	</header><!-- .entry-header -->
-
-<?php if ( ! get_query_var( 'plugin_advanced' ) ) { ?>
-	<span id="description"></span>
-	<span id="reviews"></span>
-	<span id="installation"></span>
-	<span id="developers"></span>
-	<ul class="tabs clear">
-		<li id="tablink-description"><a href='#description'><?php _e( 'Details', 'wporg-plugins' ); ?></a></li>
-		<li id="tablink-reviews"><a href='#reviews'><?php _e( 'Reviews', 'wporg-plugins' ); ?></a></li>
-<?php if ( isset( $content[ 'installation' ] ) && ! in_array( $status, array( 'closed', 'disabled' ) ) ) { ?>
-		<li id="tablink-installation"><a href='#installation'><?php _e( 'Installation', 'wporg-plugins' ); ?></a></li>
-<?php } ?>
-		<li id="tablink-support"><a href='<?php echo Template::get_support_url(); ?>'><?php _e( 'Support', 'wporg-plugins' ); ?></a></li>
-		<li id="tablink-developers"><a href='#developers'><?php _e( 'Development', 'wporg-plugins' ); ?></a></li>
-    </ul>
-<?php } ?>
-	<div class="entry-content">
+			?></span>
+    </header><!-- .entry-header -->
+
+	<?php if ( ! get_query_var( 'plugin_advanced' ) ) { ?>
+        <span id="description"></span>
+        <span id="reviews"></span>
+        <span id="installation"></span>
+        <span id="developers"></span>
+        <ul class="tabs clear">
+            <li id="tablink-description"><a href='#description'><?php _e( 'Details', 'wporg-plugins' ); ?></a></li>
+            <li id="tablink-reviews"><a href='#reviews'><?php _e( 'Reviews', 'wporg-plugins' ); ?></a></li>
+			<?php if ( isset( $content['installation'] ) && ! Template::plugin_is_closed() ) { ?>
+                <li id="tablink-installation"><a
+                            href='#installation'><?php _e( 'Installation', 'wporg-plugins' ); ?></a></li>
+			<?php } ?>
+            <li id="tablink-support"><a
+                        href='<?php echo Template::get_support_url(); ?>'><?php _e( 'Support', 'wporg-plugins' ); ?></a>
+            </li>
+            <li id="tablink-developers"><a href='#developers'><?php _e( 'Development', 'wporg-plugins' ); ?></a></li>
+        </ul>
+	<?php } ?>
+    <div class="entry-content">
 		<?php
 		if ( get_query_var( 'plugin_advanced' ) ) :
 			get_template_part( 'template-parts/section-advanced' );
 		else:
 			$plugin_sections = Template::get_plugin_sections();
 
-			foreach ( array( 'description', 'screenshots', 'installation', 'faq', 'reviews', 'developers', 'changelog' ) as $section_slug ) :
+			foreach (
+				array(
+					'description',
+					'screenshots',
+					'installation',
+					'faq',
+					'reviews',
+					'developers',
+					'changelog',
+				) as $section_slug
+			) :
 				if ( ! isset( $content[ $section_slug ] ) ) {
 					continue;
 				}
 
-				if ( 'description' === $section_slug && in_array( $status, array( 'closed', 'disabled' ) ) ) {
-			        // Don't show the description for closed plugins
-					$section_content = '<div class="plugin-notice notice notice-error notice-alt"><p>' . $message . '</p></div>';
-		            if ( get_current_user_id() == get_post()->post_author ) {
-			            $section_content .= '<div class="plugin-notice notice notice-info notice-alt"><p>' .
-			                                sprintf(
-			                                /* translators: 1: plugins@wordpress.org */
-				                                __( 'If you did not request this change, please contact <a href="mailto:%1$s">%1$s</a> for a status. All developers with commit access are contacted when a plugin is closed, with the reasons why, so check your spam email too.', 'wporg-plugins' ),
-				                                'plugins@wordpress.org'
-			                                ) . '</p></div><!-- .plugin-notice -->';
-		            }
-				}
-				else if ( in_array( $section_slug, array( 'screenshots', 'installation', 'faq', 'changelog' ) ) && in_array( $status, array( 'closed', 'disabled' ) ) ) {
-			        $section_content = '';
-				}
-				else {
+				if ( 'description' === $section_slug && Template::plugin_is_closed() ) {
+					// Don't show the description for closed plugins
+					$section_content = '<div class="plugin-notice notice ' . $message['notice_type'] . ' notice-alt"><p>' . $message['message'] . '</p></div>';
+					if ( get_current_user_id() == get_post()->post_author ) {
+						$section_content .= '<div class="plugin-notice notice notice-info notice-alt"><p>'
+						                    . Template::plugin_closed_author_info()
+						                    . '</p></div><!-- .plugin-notice -->';
+					}
+				} else if ( in_array( $section_slug, array(
+						'screenshots',
+						'installation',
+						'faq',
+						'changelog',
+					) ) && Template::plugin_is_closed() ) {
+					$section_content = '';
+				} else {
 					$section_content = trim( apply_filters( 'the_content', $content[ $section_slug ], $section_slug ) );
 				}
 
@@ -217,11 +199,11 @@ $status  = get_post_status();
 			endforeach;
 		endif; // plugin_advanced
 		?>
-	</div><!-- .entry-content -->
+    </div><!-- .entry-content -->
 
-	<div class="entry-meta">
+    <div class="entry-meta">
 		<?php
 		get_template_part( 'template-parts/plugin-sidebar', ( get_query_var( 'plugin_advanced' ) ? 'advanced' : '' ) );
 		?>
-	</div><!-- .entry-meta -->
+    </div><!-- .entry-meta -->
 </article><!-- #post-## -->
diff --git wordpress.org/public_html/wp-content/themes/pub/wporg-plugins/template-parts/section-advanced.php wordpress.org/public_html/wp-content/themes/pub/wporg-plugins/template-parts/section-advanced.php
index 55b0c6e4..50067c5f 100644
--- wordpress.org/public_html/wp-content/themes/pub/wporg-plugins/template-parts/section-advanced.php
+++ wordpress.org/public_html/wp-content/themes/pub/wporg-plugins/template-parts/section-advanced.php
@@ -2,77 +2,76 @@
 /**
  * Template part for displaying the plugin administration sections.
  *
- * @link https://codex.wordpress.org/Template_Hierarchy
+ * @link    https://codex.wordpress.org/Template_Hierarchy
  *
  * @package WordPressdotorg\Plugin_Directory\Theme
  */
 
 namespace WordPressdotorg\Plugin_Directory\Theme;
+
 use WordPressdotorg\Plugin_Directory\Plugin_Directory;
 use WordPressdotorg\Plugin_Directory\Template;
+
 ?>
 
 <div id="admin" class="section">
-    <?php
-    $status  = get_post_status();
-    if ( in_array( $status, array( 'closed', 'disabled' ) ) ) {
-	    echo '<div class="plugin-notice notice notice-error notice-alt"><p>' . __( 'This plugin has been closed and is no longer available for download.', 'wporg-plugins' ) . '</p></div>';
-	    if ( get_current_user_id() == get_post()->post_author ) {
-		    echo '<div class="plugin-notice notice notice-info notice-alt"><p>' .
-		                        sprintf(
-		                        /* translators: 1: plugins@wordpress.org */
-			                        __( 'If you did not request this change, please contact <a href="mailto:%1$s">%1$s</a> for a status. All developers with commit access are contacted when a plugin is closed, with the reasons why, so check your spam email too.', 'wporg-plugins' ),
-			                        'plugins@wordpress.org'
-		                        ) . '</p></div><!-- .plugin-notice -->';
-	    }
-    }
-
-    ?>
-	<h2><?php _e( 'Plugin Stats', 'wporg-plugins' ); ?></h2>
-
-	<h4><?php _e( 'Active versions', 'wporg-plugins' ); ?></h4>
-	<div id="plugin-version-stats" class="chart version-stats"></div>
-
-	<h4><?php _e( 'Downloads Per Day', 'wporg-plugins' ); ?></h4>
-	<div id="plugin-download-stats" class="chart download-stats"></div>
-
-	<h5><?php _e( 'Downloads history', 'wporg-plugins' ); ?></h5>
-	<table id="plugin-download-history-stats" class="download-history-stats">
-		<tbody></tbody>
-	</table>
-
 	<?php
+	if ( Template::plugin_is_closed() ) {
+		$message = Template::plugin_not_active_reason();
+		echo '<div class="plugin-notice notice ' . $message['notice_type'] . ' notice-alt"><p>' . $message['message'] . '</p></div>';
+		if ( get_current_user_id() == get_post()->post_author ) {
+			echo '<div class="plugin-notice notice notice-info notice-alt"><p>'
+			     . Template::plugin_closed_author_info()
+			     . '</p></div><!-- .plugin-notice -->';
+		}
+	}
 
-		$tags = (array) get_post_meta( $post->ID, 'tagged_versions', true );
-		// Sort the versions by version
-		usort( $tags, 'version_compare' );
-		// We'll want to add a Development Version if it exists
-		$tags[] = 'trunk';
+	?>
+    <h2><?php _e( 'Plugin Stats', 'wporg-plugins' ); ?></h2>
 
-		// Remove the current version, this may be trunk.
-		$tags = array_diff( $tags, array( get_post_meta( $post->ID, 'stable_tag', true ) ) );
+    <h4><?php _e( 'Active versions', 'wporg-plugins' ); ?></h4>
+    <div id="plugin-version-stats" class="chart version-stats"></div>
 
-		// List Trunk, followed by the most recent non-stable release.
-		$tags = array_reverse( $tags );
+    <h4><?php _e( 'Downloads Per Day', 'wporg-plugins' ); ?></h4>
+    <div id="plugin-download-stats" class="chart download-stats"></div>
 
-		if ( $tags && 'publish' === get_post_status() ) {
-			echo '<h5>' . __( 'Previous Versions', 'wporg-plugins' ) . '</h5>';
+    <h5><?php _e( 'Downloads history', 'wporg-plugins' ); ?></h5>
+    <table id="plugin-download-history-stats" class="download-history-stats">
+        <tbody></tbody>
+    </table>
 
-			echo '<div class="plugin-notice notice notice-info notice-alt"><p>' . __( 'Previous versions of this plugin may not be secure or stable and are available for testing purposes only.', 'wporg-plugins' ) . '</p></div>';
+	<?php
 
-			echo '<select class="previous-versions" onchange="getElementById(\'download-previous-link\').href=this.value;">';
-			foreach ( $tags as $version ) {
-				$text = ( 'trunk' == $version ? __( 'Development Version', 'wporg-plugins' ) : $version );
-				printf( '<option value="%s">%s</option>', esc_attr( Template::download_link( $post, $version ) ), esc_html( $text ) );
-			}
-			echo '</select> ';
+	$tags = (array) get_post_meta( get_the_ID(), 'tagged_versions', true );
+	// Sort the versions by version
+	usort( $tags, 'version_compare' );
+	// We'll want to add a Development Version if it exists
+	$tags[] = 'trunk';
 
-			printf(
-				'<a href="%s" id="download-previous-link" class="button">%s</a>',
-				esc_url( Template::download_link( $post, reset( $tags ) ) ),
-				__( 'Download', 'wporg-plugins' )
-			);
+	// Remove the current version, this may be trunk.
+	$tags = array_diff( $tags, array( get_post_meta( get_the_ID(), 'stable_tag', true ) ) );
+
+	// List Trunk, followed by the most recent non-stable release.
+	$tags = array_reverse( $tags );
+
+	if ( $tags && 'publish' === get_post_status() ) {
+		echo '<h5>' . __( 'Previous Versions', 'wporg-plugins' ) . '</h5>';
+
+		echo '<div class="plugin-notice notice notice-info notice-alt"><p>' . __( 'Previous versions of this plugin may not be secure or stable and are available for testing purposes only.', 'wporg-plugins' ) . '</p></div>';
+
+		echo '<select class="previous-versions" onchange="getElementById(\'download-previous-link\').href=this.value;">';
+		foreach ( $tags as $version ) {
+			$text = ( 'trunk' == $version ? __( 'Development Version', 'wporg-plugins' ) : $version );
+			printf( '<option value="%s">%s</option>', esc_attr( Template::download_link( get_post(), $version ) ), esc_html( $text ) );
 		}
+		echo '</select> ';
+
+		printf(
+			'<a href="%s" id="download-previous-link" class="button">%s</a>',
+			esc_url( Template::download_link( get_post(), reset( $tags ) ) ),
+			__( 'Download', 'wporg-plugins' )
+		);
+	}
 
 	?>
 </div>
