diff --git src/wp-admin/includes/class-wp-community-events.php src/wp-admin/includes/class-wp-community-events.php
index cfe12fd52c..211d37ea5e 100644
--- src/wp-admin/includes/class-wp-community-events.php
+++ src/wp-admin/includes/class-wp-community-events.php
@@ -107,7 +107,7 @@ class WP_Community_Events {
 		} elseif ( 200 !== $response_code ) {
 			$response_error = new WP_Error(
 				'api-error',
-				/* translators: %s is a numeric HTTP status code; e.g., 400, 403, 500, 504, etc. */
+				/* translators: %d: numeric HTTP status code, e.g. 400, 403, 500, 504, etc. */
 				sprintf( __( 'Invalid API response code (%d)' ), $response_code )
 			);
 		} elseif ( ! isset( $response_body['location'], $response_body['events'] ) ) {
diff --git src/wp-admin/js/tags.js src/wp-admin/js/tags.js
index fc923f1f8d..c35efaa177 100644
--- src/wp-admin/js/tags.js
+++ src/wp-admin/js/tags.js
@@ -1,50 +1,113 @@
 /* global ajaxurl, wpAjax, tagsl10n, showNotice, validateForm */
+/**
+ * Contains logic for both adding and deleting tags. For deleting tags it makes a request
+ * to the server to delete the tag. For adding tags it makes a request to the server to
+ * add the tag.
+ *
+ * @summary Contains logic for deleting and adding tags
+ */
 
 jQuery(document).ready(function($) {
 
+	/**
+	 * @summary Adds an event handler to the delete term link on the term overview page.
+	 *
+	 * Adds an event handler to the delete term link on the term overview page.
+	 * Cancels default event handling and event bubbling.
+	 *
+	 * @since 2.8.0
+	 *
+	 * @returns boolean Always returns false to cancel the default event handling.
+	 */
 	$( '#the-list' ).on( 'click', '.delete-tag', function() {
 		var t = $(this), tr = t.parents('tr'), r = true, data;
+
 		if ( 'undefined' != showNotice )
 			r = showNotice.warn();
+
 		if ( r ) {
 			data = t.attr('href').replace(/[^?]*\?/, '').replace(/action=delete/, 'action=delete-tag');
+
+			/**
+			 * @summary Makes a request to the server to delete the term that
+			 * corresponds to the delete term button.
+			 *
+			 * @param {string} r The response from the server.
+			 *
+			 * @returns {void}
+			 */
 			$.post(ajaxurl, data, function(r){
 				if ( '1' == r ) {
 					$('#ajax-response').empty();
 					tr.fadeOut('normal', function(){ tr.remove(); });
-					// Remove the term from the parent box and tag cloud
+
+					/**
+					 * @summary Remove the term from the parent box and the tag cloud
+					 *
+					 * `data.match(/tag_ID=(\d+)/)[1]` matches the term id from the data variable.
+					 * This term id is then used to select the relevant HTML elements:
+					 * The parent box and the tag cloud.
+					 */
 					$('select#parent option[value="' + data.match(/tag_ID=(\d+)/)[1] + '"]').remove();
 					$('a.tag-link-' + data.match(/tag_ID=(\d+)/)[1]).remove();
+
 				} else if ( '-1' == r ) {
 					$('#ajax-response').empty().append('<div class="error"><p>' + tagsl10n.noPerm + '</p></div>');
 					tr.children().css('backgroundColor', '');
+
 				} else {
 					$('#ajax-response').empty().append('<div class="error"><p>' + tagsl10n.broken + '</p></div>');
 					tr.children().css('backgroundColor', '');
 				}
 			});
+
 			tr.children().css('backgroundColor', '#f33');
 		}
+
 		return false;
 	});
 
+	/**
+	 * Adds a deletion confirmation when removing a tag.
+	 *
+	 * @since 4.8.0
+	 *
+	 * @returns {void}
+	 */
 	$( '#edittag' ).on( 'click', '.delete', function( e ) {
 		if ( 'undefined' === typeof showNotice ) {
 			return true;
 		}
 
+		// Confirms the deletion, a negative response means the deletion must not be executed.
 		var response = showNotice.warn();
 		if ( ! response ) {
 			e.preventDefault();
 		}
 	});
 
+	/**
+	 * @summary Adds an event handler tot he form submit on the term overview page.
+	 *
+	 * Cancels default event handling and event bubbling.
+	 *
+	 * @since 2.8.0
+	 *
+	 * @returns boolean Always returns false to cancel the default event handling.
+	 */
 	$('#submit').click(function(){
 		var form = $(this).parents('form');
 
 		if ( ! validateForm( form ) )
 			return false;
 
+		/**
+		 * Does a request to the server to add a new term to the database
+		 *
+		 * @param {string} r The response from the server.
+		 *
+		 * @returns {void}
+		 */
 		$.post(ajaxurl, $('#addtag').serialize(), function(r){
 			var res, parent, term, indent, i;
 
diff --git src/wp-content/themes/twentysixteen/inc/template-tags.php src/wp-content/themes/twentysixteen/inc/template-tags.php
index eb87203062..fa1ad8efed 100644
--- src/wp-content/themes/twentysixteen/inc/template-tags.php
+++ src/wp-content/themes/twentysixteen/inc/template-tags.php
@@ -213,7 +213,7 @@ function twentysixteen_categorized_blog() {
 		set_transient( 'twentysixteen_categories', $all_the_cool_cats );
 	}
 
-	if ( $all_the_cool_cats > 1 ) {
+	if ( $all_the_cool_cats > 1 || is_preview() ) {
 		// This blog has more than 1 category so twentysixteen_categorized_blog should return true.
 		return true;
 	} else {
diff --git src/wp-includes/class-wp-editor.php src/wp-includes/class-wp-editor.php
index 8879797914..73de84de2b 100644
--- src/wp-includes/class-wp-editor.php
+++ src/wp-includes/class-wp-editor.php
@@ -144,7 +144,7 @@ final class _WP_Editors {
 	 * @static
 	 * @param string $content The initial content of the editor.
 	 * @param string $editor_id ID for the textarea and TinyMCE and Quicktags instances (can contain only ASCII letters and numbers).
-	 * @param array $settings See the _parse_settings() method for description.
+	 * @param array $settings See _WP_Editors()::parse_settings() for description.
 	 */
 	public static function editor( $content, $editor_id, $settings = array() ) {
 		$set = self::parse_settings( $editor_id, $settings );
diff --git src/wp-includes/functions.php src/wp-includes/functions.php
index 966dcd8265..828f123491 100644
--- src/wp-includes/functions.php
+++ src/wp-includes/functions.php
@@ -158,6 +158,8 @@ function date_i18n( $dateformatstring, $unixtimestamp = false, $gmt = false ) {
  *
  * @since 4.4.0
  *
+ * @global WP_Locale $wp_locale
+ *
  * @param string $date Formatted date string.
  * @return string The date, declined if locale specifies it.
  */
diff --git src/wp-includes/vars.php src/wp-includes/vars.php
index 2e97c9a0ae..89b3532327 100644
--- src/wp-includes/vars.php
+++ src/wp-includes/vars.php
@@ -139,5 +139,12 @@ function wp_is_mobile() {
 		$is_mobile = false;
 	}
 
-	return $is_mobile;
+	/**
+	 * Filters whether the request should be treated as coming from a mobile device or not.
+	 *
+	 * @since 4.9.0
+	 *
+	 * @param bool $is_mobile Whether the request is from a mobile device or not.
+	 */
+	return apply_filters( 'wp_is_mobile', $is_mobile );
 }
diff --git src/wp-includes/wp-db.php src/wp-includes/wp-db.php
index 74dedd5130..2c9cceabf7 100644
--- src/wp-includes/wp-db.php
+++ src/wp-includes/wp-db.php
@@ -3268,7 +3268,7 @@ class wpdb {
 	 *
 	 * @param string $db_cap The feature to check for. Accepts 'collation',
 	 *                       'group_concat', 'subqueries', 'set_charset',
-	 *                       or 'utf8mb4'.
+	 *                       'utf8mb4', or 'utf8mb4_520'.
 	 * @return int|false Whether the database feature is supported, false otherwise.
 	 */
 	public function has_cap( $db_cap ) {
