diff --git a/plugins/view-transitions/hooks.php b/plugins/view-transitions/hooks.php index 376c3003d..260cc7381 100644 --- a/plugins/view-transitions/hooks.php +++ b/plugins/view-transitions/hooks.php @@ -31,6 +31,7 @@ function plvt_render_generator(): void { add_action( 'after_setup_theme', 'plvt_polyfill_theme_support', PHP_INT_MAX ); add_action( 'init', 'plvt_sanitize_view_transitions_theme_support', 1 ); add_action( 'wp_enqueue_scripts', 'plvt_load_view_transitions' ); +add_action( 'admin_head', 'plvt_print_view_transitions_admin_style' ); /** * Hooks related to the View Transitions settings. diff --git a/plugins/view-transitions/includes/admin.php b/plugins/view-transitions/includes/admin.php new file mode 100644 index 000000000..bd121d8e0 --- /dev/null +++ b/plugins/view-transitions/includes/admin.php @@ -0,0 +1,36 @@ + + + '.wp-block-post-title, .entry-title', 'post_thumbnail_selector' => '.wp-post-image', 'post_content_selector' => '.wp-block-post-content, .entry-content', + 'enable_admin_transitions' => false, ); } @@ -72,7 +74,7 @@ function plvt_get_setting_default(): array { * * @since 1.0.0 * - * @return array{ default_transition_animation: non-empty-string, header_selector: non-empty-string, main_selector: non-empty-string, post_title_selector: non-empty-string, post_thumbnail_selector: non-empty-string, post_content_selector: non-empty-string } { + * @return array{ default_transition_animation: non-empty-string, header_selector: non-empty-string, main_selector: non-empty-string, post_title_selector: non-empty-string, post_thumbnail_selector: non-empty-string, post_content_selector: non-empty-string, enable_admin_transitions: bool } { * Stored setting value. * * @type string $default_transition_animation Default view transition animation. @@ -81,6 +83,7 @@ function plvt_get_setting_default(): array { * @type string $post_title_selector CSS selector for the post title element. * @type string $post_thumbnail_selector CSS selector for the post thumbnail element. * @type string $post_content_selector CSS selector for the post content element. + * @type bool $enable_admin_transitions Whether to use view transitions in the admin area. * } */ function plvt_get_stored_setting_value(): array { @@ -93,7 +96,7 @@ function plvt_get_stored_setting_value(): array { * @since 1.0.0 * * @param mixed $input Setting to sanitize. - * @return array{ default_transition_animation: non-empty-string, header_selector: non-empty-string, main_selector: non-empty-string, post_title_selector: non-empty-string, post_thumbnail_selector: non-empty-string, post_content_selector: non-empty-string } { + * @return array{ default_transition_animation: non-empty-string, header_selector: non-empty-string, main_selector: non-empty-string, post_title_selector: non-empty-string, post_thumbnail_selector: non-empty-string, post_content_selector: non-empty-string, enable_admin_transitions: bool } { * Sanitized setting. * * @type string $default_transition_animation Default view transition animation. @@ -102,6 +105,7 @@ function plvt_get_stored_setting_value(): array { * @type string $post_title_selector CSS selector for the post title element. * @type string $post_thumbnail_selector CSS selector for the post thumbnail element. * @type string $post_content_selector CSS selector for the post content element. + * @type bool $enable_admin_transitions Whether to use view transitions in the admin area. * } */ function plvt_sanitize_setting( $input ): array { @@ -136,6 +140,11 @@ function plvt_sanitize_setting( $input ): array { } } + // Sanitize "enable_admin_transitions" as a boolean. + if ( isset( $input['enable_admin_transitions'] ) ) { + $value['enable_admin_transitions'] = (bool) $input['enable_admin_transitions']; + } + return $value; } @@ -270,8 +279,22 @@ static function (): void { 'title' => __( 'Post Content Selector', 'view-transitions' ), 'description' => __( 'Provide the CSS selector to detect the post content element.', 'view-transitions' ), ), + 'enable_admin_transitions' => array( + 'title' => __( 'WP Admin', 'view-transitions' ), + 'description' => __( 'Enable view transitions in the WordPress admin area.', 'view-transitions' ), + ), ); foreach ( $fields as $slug => $args ) { + $additional_args = array( + 'field' => $slug, + 'label_for' => "plvt-view-transitions-field-{$slug}", + ); + + // Remove 'label_for' for checkbox field to avoid duplicate label association. + if ( 'enable_admin_transitions' === $slug ) { + unset( $additional_args['label_for'] ); + } + add_settings_field( "plvt_view_transitions_{$slug}", $args['title'], @@ -279,10 +302,7 @@ static function (): void { 'reading', 'plvt_view_transitions', array_merge( - array( - 'field' => $slug, - 'label_for' => "plvt-view-transitions-field-{$slug}", - ), + $additional_args, $args ) ); @@ -312,6 +332,10 @@ function plvt_render_settings_field( array $args ): void { $type = 'select'; $choices = plvt_get_view_transition_animation_labels(); break; + case 'enable_admin_transitions': + $type = 'checkbox'; + $choices = array(); // Defined just for consistency. + break; default: $type = 'text'; $choices = array(); // Defined just for consistency. @@ -346,12 +370,26 @@ function plvt_render_settings_field( array $args ): void { ?> + + " - value="" + value="" class="regular-text code"