PluginProbe ʕ •ᴥ•ʔ
Admin and Site Enhancements (ASE) / 7.6.2
Admin and Site Enhancements (ASE) v7.6.2
9.1.0 9.0.2 9.0.1 9.0.0 8.9.2 8.9.1 8.9.0 8.8.8 8.8.7 8.8.6 8.8.5 8.8.4 8.8.3 8.8.2 8.8.1 8.8.0 8.7.3 8.7.2 8.7.1 8.2.1 8.2.2 8.2.3 8.3.0 8.3.1 8.3.2 8.4.0 8.4.1 8.4.2 8.5.0 8.5.1 8.5.2 8.6.0 8.6.1 8.6.2 8.7.0 5.0.1 5.0.2 5.0.2.1 5.0.2.2 5.0.2.3 5.0.2.4 5.1.0 5.2.0 5.2.1 5.2.10 5.2.11 5.2.2 5.2.3 5.2.4 5.2.5 5.2.6 5.2.7 5.2.8 5.2.9 5.3.0 5.3.1 5.3.2 5.4.0 5.4.1 5.5.0 5.5.1 5.5.2 5.6.0 5.6.1 5.6.2 5.7.0 5.7.1 5.8.0 5.8.1 6.0.0 6.0.3 6.0.4 6.0.5 6.0.5.1 6.0.6 6.0.7 6.0.8.1 6.1.0 6.1.3 6.2.0 6.2.1 6.2.2 6.2.3 6.2.4 6.2.5 6.2.6 6.2.7 6.3.0 6.3.1 6.3.2 6.4.0 6.5.0 6.5.1 6.6.0 6.7.0 6.8.0 6.8.2 6.8.3 6.9.0 6.9.1 6.9.10 6.9.11 6.9.12 6.9.13.1 6.9.13.2 6.9.2 6.9.3 6.9.4 6.9.5 6.9.6 6.9.7 6.9.8 6.9.9 7.0.0 7.0.2 7.0.2.1 7.0.2.2 7.0.2.3 7.0.3 7.1.0 7.1.1 7.1.2 7.1.3 7.1.4 7.1.5 7.2.0 7.2.1 7.3.0 7.3.1 7.3.2 7.3.3 7.4.0 7.4.2 7.4.4 7.4.5 7.4.6 7.4.7 7.4.8 7.5.0 7.5.1 7.5.2 7.5.3 7.5.4 7.6.0 7.6.1 7.6.1.1 7.6.10 7.6.11 7.6.2 7.6.3 7.6.4 7.6.5 7.6.6 7.6.7 7.6.7.1 7.6.8 7.6.9 7.7.0 7.8.0 7.8.1 7.8.10 7.8.11 7.8.12 7.8.13 7.8.14 7.8.15 7.8.16 7.8.17 7.8.18 7.8.2 7.8.3 7.8.4 7.8.5 7.8.5.1 7.8.6 7.8.7 7.8.8 7.8.9 7.9.0 7.9.1 7.9.10 7.9.11 7.9.2 7.9.3 7.9.4 7.9.5 7.9.6 7.9.7 7.9.8 7.9.9 8.0.0 8.0.1 8.0.2 8.0.3 8.0.4 8.0.5 8.0.6 8.0.7 8.0.8 8.1.0 8.1.1 8.1.2 8.1.3 8.1.4 8.2.0 trunk 1.0.0 1.1.0 1.2.0 1.3.0 1.4.0 1.5.0 1.6.0 1.7.0 1.8.0 1.9.0 2.0.0 2.1.0 2.2.0 2.3.0 2.4.0 2.5.0 2.6.0 2.7.0 2.8.0 2.8.1 2.8.2 2.8.3 2.9.0 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.0.5 3.0.6 3.1.0 3.2.0 3.3.0 3.4.0 3.5.0 3.6.1 3.7.0 3.8.0 3.9.0 3.9.1 3.9.2 4.0.0 4.0.1 4.1.0 4.2.0 4.2.1 4.2.2 4.3.0 4.3.1 4.4.0 4.5.0 4.6.0 4.7.0 4.7.1 4.7.2 4.7.3 4.7.4 4.8.0 4.8.1 4.8.2 4.8.3 4.9.0 4.9.1 4.9.2 4.9.3 5.0.0
admin-site-enhancements / classes / class-disable-gutenberg.php
admin-site-enhancements / classes Last commit date
class-activation.php 1 year ago class-admin-menu-organizer.php 1 year ago class-auto-publish-posts-with-missed-schedule.php 1 year ago class-avif-upload.php 1 year ago class-change-login-url.php 1 year ago class-cleanup-admin-bar.php 1 year ago class-common-methods.php 1 year ago class-content-duplication.php 1 year ago class-content-order.php 1 year ago class-custom-admin-footer-text.php 1 year ago class-custom-body-class.php 1 year ago class-custom-css.php 1 year ago class-custom-nav-menu-items-in-new-tab.php 1 year ago class-deactivation.php 1 year ago class-disable-comments.php 1 year ago class-disable-dashboard-widgets.php 1 year ago class-disable-feeds.php 1 year ago class-disable-gutenberg.php 1 year ago class-disable-rest-api.php 1 year ago class-disable-smaller-components.php 1 year ago class-disable-updates.php 1 year ago class-disable-xml-rpc.php 1 year ago class-display-system-summary.php 1 year ago class-email-address-obfuscator.php 1 year ago class-email-delivery.php 1 year ago class-enhance-list-tables.php 1 year ago class-external-permalinks.php 1 year ago class-heartbeat-control.php 1 year ago class-hide-admin-bar.php 1 year ago class-hide-admin-notices.php 1 year ago class-image-sizes-panel.php 1 year ago class-image-upload-control.php 1 year ago class-insert-head-body-footer-code.php 1 year ago class-last-login-column.php 1 year ago class-limit-login-attempts.php 1 year ago class-login-id-type.php 1 year ago class-login-logout-menu.php 1 year ago class-maintenance-mode.php 1 year ago class-manage-ads-appads-txt.php 1 year ago class-manage-robots-txt.php 1 year ago class-media-replacement.php 1 year ago class-multiple-user-roles.php 1 year ago class-obfuscate-author-slugs.php 1 year ago class-open-external-links-in-new-tab.php 1 year ago class-password-protection.php 1 year ago class-redirect-after-login.php 1 year ago class-redirect-after-logout.php 1 year ago class-redirect-fourofour.php 1 year ago class-registration-date-column.php 1 year ago class-revisions-control.php 1 year ago class-search-engines-visibility.php 1 year ago class-settings-fields-render.php 1 year ago class-settings-sanitization.php 1 year ago class-settings-sections-fields.php 1 year ago class-show-custom-taxonomy-filters.php 1 year ago class-site-identity-on-login-page.php 1 year ago class-svg-upload.php 1 year ago class-various-admin-ui-enhancements.php 1 year ago class-view-admin-as-role.php 1 year ago class-wider-admin-menu.php 1 year ago class-wp-config-transformer.php 1 year ago
class-disable-gutenberg.php
180 lines
1 <?php
2
3 namespace ASENHA\Classes;
4
5 /**
6 * Class for Disable Gutenberg module
7 *
8 * @since 6.9.5
9 */
10 class Disable_Gutenberg {
11 /**
12 * Disable Gutenberg in wp-admin for some or all post types
13 *
14 * @since 2.8.0
15 */
16 public function disable_gutenberg_for_post_types_admin() {
17 // Get current page's post type from WP core globals and query parameters
18 global $pagenow, $typenow;
19 $post_type = null;
20 if ( 'edit.php' === $pagenow ) {
21 // on the list table screen, $typenow returns correct post type
22 $post_type = $typenow;
23 } elseif ( 'post.php' === $pagenow ) {
24 // on the edit screen, $typenow is empty, so we detect it
25 $post_type = ( isset( $_GET['post'] ) ? get_post_type( $_GET['post'] ) : 'post' );
26 } elseif ( 'post-new.php' === $pagenow ) {
27 // on the add new screen, best to get post type from GET parameter
28 $post_type = ( isset( $_GET['post_type'] ) ? $_GET['post_type'] : 'post' );
29 } else {
30 }
31 // Check if Gutenberg feature is enabled for the site
32 // Before/after WP v5.0.0 via feature plugin
33 $gutenberg = function_exists( 'gutenberg_register_scripts_and_styles' );
34 // Since WP v5.0.0, gutenberg is in core
35 $block_editor = has_action( 'enqueue_block_assets' );
36 // Gutenberg feature is not enabled for the site
37 if ( !$gutenberg && false === $block_editor ) {
38 return;
39 // do nothing
40 }
41 // Assemble single-dimensional array of post types for which Gutenberg should be disabled
42 $options = get_option( ASENHA_SLUG_U );
43 $disable_gutenberg_type = 'only-on';
44 $disable_gutenberg_for = $options['disable_gutenberg_for'];
45 $post_types_for_disable_gutenberg = array();
46 foreach ( $disable_gutenberg_for as $post_type_slug => $is_gutenberg_disabled ) {
47 if ( $is_gutenberg_disabled ) {
48 $post_types_for_disable_gutenberg[] = $post_type_slug;
49 }
50 }
51 // Selectively disable Gutenberg
52 if ( 'only-on' == $disable_gutenberg_type && in_array( $post_type, $post_types_for_disable_gutenberg ) || 'except-on' == $disable_gutenberg_type && !in_array( $post_type, $post_types_for_disable_gutenberg ) || 'all-post-types' == $disable_gutenberg_type ) {
53 // For WP v5.0.0 upwards
54 add_filter( 'use_block_editor_for_post_type', '__return_false', 100 );
55 // If Gutenberg feature plugin is activated
56 if ( $gutenberg ) {
57 add_filter( 'gutenberg_can_edit_post_type', '__return_false', 100 );
58 $this->remove_all_gutenberg_hooks();
59 }
60 }
61 }
62
63 /**
64 * Remove Gutenberg hooks added via feature plugin.
65 *
66 * @link https://plugins.trac.wordpress.org/browser/classic-editor/tags/1.6.2/classic-editor.php#L138
67 * @since 2.8.0
68 */
69 public function remove_all_gutenberg_hooks() {
70 remove_action( 'admin_menu', 'gutenberg_menu' );
71 remove_action( 'admin_init', 'gutenberg_redirect_demo' );
72 // Gutenberg 5.3+
73 remove_action( 'wp_enqueue_scripts', 'gutenberg_register_scripts_and_styles' );
74 remove_action( 'admin_enqueue_scripts', 'gutenberg_register_scripts_and_styles' );
75 remove_action( 'admin_notices', 'gutenberg_wordpress_version_notice' );
76 remove_action( 'rest_api_init', 'gutenberg_register_rest_widget_updater_routes' );
77 remove_action( 'admin_print_styles', 'gutenberg_block_editor_admin_print_styles' );
78 remove_action( 'admin_print_scripts', 'gutenberg_block_editor_admin_print_scripts' );
79 remove_action( 'admin_print_footer_scripts', 'gutenberg_block_editor_admin_print_footer_scripts' );
80 remove_action( 'admin_footer', 'gutenberg_block_editor_admin_footer' );
81 remove_action( 'admin_enqueue_scripts', 'gutenberg_widgets_init' );
82 remove_action( 'admin_notices', 'gutenberg_build_files_notice' );
83 remove_filter( 'load_script_translation_file', 'gutenberg_override_translation_file' );
84 remove_filter( 'block_editor_settings', 'gutenberg_extend_block_editor_styles' );
85 remove_filter( 'default_content', 'gutenberg_default_demo_content' );
86 remove_filter( 'default_title', 'gutenberg_default_demo_title' );
87 remove_filter( 'block_editor_settings', 'gutenberg_legacy_widget_settings' );
88 remove_filter( 'rest_request_after_callbacks', 'gutenberg_filter_oembed_result' );
89 // Previously used, compat for older Gutenberg versions.
90 remove_filter( 'wp_refresh_nonces', 'gutenberg_add_rest_nonce_to_heartbeat_response_headers' );
91 remove_filter( 'get_edit_post_link', 'gutenberg_revisions_link_to_editor' );
92 remove_filter( 'wp_prepare_revision_for_js', 'gutenberg_revisions_restore' );
93 remove_action( 'rest_api_init', 'gutenberg_register_rest_routes' );
94 remove_action( 'rest_api_init', 'gutenberg_add_taxonomy_visibility_field' );
95 remove_filter( 'registered_post_type', 'gutenberg_register_post_prepare_functions' );
96 remove_action( 'do_meta_boxes', 'gutenberg_meta_box_save' );
97 remove_action( 'submitpost_box', 'gutenberg_intercept_meta_box_render' );
98 remove_action( 'submitpage_box', 'gutenberg_intercept_meta_box_render' );
99 remove_action( 'edit_page_form', 'gutenberg_intercept_meta_box_render' );
100 remove_action( 'edit_form_advanced', 'gutenberg_intercept_meta_box_render' );
101 remove_filter( 'redirect_post_location', 'gutenberg_meta_box_save_redirect' );
102 remove_filter( 'filter_gutenberg_meta_boxes', 'gutenberg_filter_meta_boxes' );
103 remove_filter( 'body_class', 'gutenberg_add_responsive_body_class' );
104 remove_filter( 'admin_url', 'gutenberg_modify_add_new_button_url' );
105 // old
106 remove_action( 'admin_enqueue_scripts', 'gutenberg_check_if_classic_needs_warning_about_blocks' );
107 remove_filter( 'register_post_type_args', 'gutenberg_filter_post_type_labels' );
108 }
109
110 /**
111 * Disable Gutenberg styles and scripts on the front end for all or some post types
112 *
113 * @since 2.8.0
114 */
115 public function disable_gutenberg_for_post_types_frontend() {
116 global $post;
117 if ( !is_null( $post ) ) {
118 if ( property_exists( $post, 'post_type' ) ) {
119 $post_type = $post->post_type;
120 // Assemble single-dimensional array of post types for which Gutenberg should be disabled
121 $options = get_option( ASENHA_SLUG_U );
122 $disable_gutenberg_type = 'only-on';
123 $disable_gutenberg_for = $options['disable_gutenberg_for'];
124 $post_types_for_disable_gutenberg = array();
125 foreach ( $disable_gutenberg_for as $post_type_slug => $is_gutenberg_disabled ) {
126 if ( $is_gutenberg_disabled ) {
127 $post_types_for_disable_gutenberg[] = $post_type_slug;
128 }
129 }
130 // Selectively disable for the selected post types
131 if ( 'only-on' == $disable_gutenberg_type && in_array( $post_type, $post_types_for_disable_gutenberg ) || 'except-on' == $disable_gutenberg_type && !in_array( $post_type, $post_types_for_disable_gutenberg ) || 'all-post-types' == $disable_gutenberg_type ) {
132 global $wp_styles;
133 // As needed, exclude some block styles from dequeuing
134 $keep_enqueued = array();
135 // e.g. array( 'wp-block-navigation' );
136 foreach ( $wp_styles->queue as $handle ) {
137 // For all stye handles that starts with 'wp-block', e.g. 'wp-block-library', 'wp-block-library-theme'
138 if ( false !== strpos( $handle, 'wp-block' ) ) {
139 if ( !in_array( $handle, $keep_enqueued ) ) {
140 wp_dequeue_style( $handle );
141 }
142 }
143 }
144 // Additional dequeuing
145 wp_dequeue_style( 'core-block-supports' );
146 wp_dequeue_style( 'global-styles' );
147 // theme.json
148 wp_dequeue_style( 'classic-theme-styles' );
149 // classic theme
150 }
151 wp_deregister_style( 'wp-block-library' );
152 }
153 }
154 }
155
156 /**
157 * Temporary fix for Safari 18 negative horizontal margin on floats.
158 * [TODO] Remove when Safari 18 implements a fix on their end.
159 *
160 * @link https://wordpress.org/support/topic/safari-18-0-breaking-classic-editor/
161 * @link https://plugins.trac.wordpress.org/changeset/3158976/classic-editor/trunk/classic-editor.php
162 */
163 public function safari_18_fix() {
164 global $current_screen;
165 if ( isset( $current_screen->base ) && 'post' === $current_screen->base ) {
166 $clear = ( is_rtl() ? 'right' : 'left' );
167 ?>
168 <style id="classic-editor-safari-18-temp-fix">
169 _::-webkit-full-page-media, _:future, :root #post-body #postbox-container-2 {
170 clear: <?php
171 echo $clear;
172 ?>;
173 }
174 </style>
175 <?php
176 }
177 }
178
179 }
180