+/**
+ * Adds the "Customize" link to the Toolbar.
+ *
+ * @since 4.3.0
+ *
+ * @param WP_Admin_Bar $wp_admin_bar WP_Admin_Bar instance.
+ * @global WP_Customize_Manager $wp_customize
+ */
+function wp_admin_bar_customize_menu( $wp_admin_bar ) {
+ global $wp_customize;
+
+ // Don't show for users who can't access the customizer or when in the admin.
+ if ( ! current_user_can( 'customize' ) || is_admin() ) {
+ return;
+ }
+
+ // Don't show if the user cannot edit a given customize_changeset post currently being previewed.
+ if ( is_customize_preview() && $wp_customize->changeset_post_id() && ! current_user_can( get_post_type_object( 'customize_changeset' )->cap->edit_post, $wp_customize->changeset_post_id() ) ) {
+ return;
+ }
+
+ $current_url = ( is_ssl() ? 'https://' : 'http://' ) . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
+ if ( is_customize_preview() && $wp_customize->changeset_uuid() ) {
+ $current_url = remove_query_arg( 'customize_changeset_uuid', $current_url );
+ }
+
+ $customize_url = add_query_arg( 'url', urlencode( $current_url ), wp_customize_url() );
+ if ( is_customize_preview() ) {
+ $customize_url = add_query_arg( array( 'changeset_uuid' => $wp_customize->changeset_uuid() ), $customize_url );
+ }
+
+ $wp_admin_bar->add_menu( array(
+ 'id' => 'customize',
+ 'title' => __( 'Customize' ),
+ 'href' => $customize_url,
+ 'meta' => array(
+ 'class' => 'hide-if-no-customize',
+ ),
+ ) );
+ add_action( 'wp_before_admin_bar_render', 'wp_customize_support_script' );
+}
+