Index: wp-admin/css/forms.css
===================================================================
--- wp-admin/css/forms.css	(revision 38652)
+++ wp-admin/css/forms.css	(working copy)
@@ -925,6 +925,29 @@
 	vertical-align: middle;
 }
 
+.form-table.permalink-structure .available-shortcode-tags li {
+	float: left;
+	margin-right: 5px;
+}
+
+.form-table.permalink-structure .available-shortcode-tags button {
+	background: none;
+	border: 1px solid transparent;
+	padding: 0;
+	outline: none;
+}
+
+.form-table.permalink-structure .available-shortcode-tags button:focus {
+	border-color: #5b9dd9;
+	-webkit-box-shadow: 0 0 2px rgba( 30, 140, 190, 0.8 );
+	box-shadow: 0 0 2px rgba( 30, 140, 190, 0.8 );
+}
+
+.form-table.permalink-structure .available-shortcode-tags code {
+	margin: 0;
+	cursor: pointer;
+}
+
 /*------------------------------------------------------------------------------
   21.0 - Network Admin
 ------------------------------------------------------------------------------*/
Index: wp-admin/js/common.js
===================================================================
--- wp-admin/js/common.js	(revision 38652)
+++ wp-admin/js/common.js	(working copy)
@@ -175,6 +175,24 @@
 	panel.addClass('active').show();
 });
 
+/**
+ * Custom permalink structures.
+ */
+$( '.form-table.permalink-structure .available-shortcode-tags button' ).on( 'click', function() {
+	var $permalinkStructure = $( '#permalink_structure' ),
+	    textToAppend        = $( this ).find( 'code' ).text() + '/';
+
+	$( '#custom_selection' ).prop( 'checked', true );
+
+	if ( '/' !== $permalinkStructure.val().substr( -1 ) ) {
+		textToAppend = '/' + textToAppend;
+	}
+	$permalinkStructure.val( $( '#permalink_structure' ).val() + textToAppend );
+	
+	var textToAnnounce = $( this ).attr( 'data-added' );
+	$( '#custom_selection_updated' ).text( textToAnnounce );
+} )
+
 $document.ready( function() {
 	var checks, first, last, checked, sliced, mobileEvent, transitionTimeout, focusedRowActions,
 		lastClicked = false,
Index: wp-admin/options-permalink.php
===================================================================
--- wp-admin/options-permalink.php	(revision 38652)
+++ wp-admin/options-permalink.php	(working copy)
@@ -206,6 +206,44 @@
 		<td>
 			<code><?php echo get_option('home') . $blog_prefix; ?></code>
 			<input name="permalink_structure" id="permalink_structure" type="text" value="<?php echo esc_attr($permalink_structure); ?>" class="regular-text code" />
+			<div class="available-shortcode-tags hide-if-no-js">
+				<div id="custom_selection_updated" aria-live="assertive" class="screen-reader-text"></div>
+				<?php
+				$available_tags = array(
+					'%year%'     => __( 'The year of the post, four digits, for example 2004' ),
+					'%monthnum%' => __( 'Month of the year, for example 05' ),
+					'%day%'      => __( 'Day of the month, for example 28' ),
+					'%hour%'     => __( 'Hour of the day, for example 15' ),
+					'%minute%'   => __( 'Minute of the hour, for example 43' ),
+					'%second%'   => __( 'Second of the minute, for example 33' ),
+					'%post_id%'  => __( 'The unique ID of the post, for example 423' ),
+					'%postname%' => __( 'The sanitized post title (slug)' ),
+					'%category%' => __( 'Category slug. Nested sub-categories appear as nested directories in the URI.' ),
+					'%author%'   => __( 'A sanitized version of the author name.' ),
+				);
+
+				/**
+				 * Filters the list of available permalink structure tags on the Permalinks settings page.
+				 *
+				 * @since 4.7.0
+				 *
+				 * @param array $available_tags A key => value pair of available permalink structure tags.
+				 */
+				$available_tags = apply_filters( 'available_permalink_structure_tags', $available_tags );
+
+				if ( ! empty( $available_tags ) ) {
+					echo '<p>';
+					_e( 'Available tags:' );
+					echo '</p>';
+					echo '<ul>';
+					foreach ( $available_tags as $tag => $explanation ) {
+						$notification = esc_attr( sprintf( __( '%s added to permalink structure' ), $tag ) );
+						printf( '<li><button type="button" data-added="%3$s"><code>%1$s</code><span class="screen-reader-text">%2$s</span></button></li>', $tag, $explanation, $notification );
+					}
+					echo '</ul>';
+				}
+				?>
+			</div>
 		</td>
 	</tr>
 </table>
