PluginProbe ʕ •ᴥ•ʔ
Admin and Site Enhancements (ASE) / 2.8.0
Admin and Site Enhancements (ASE) v2.8.0
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-components.php
admin-site-enhancements / classes Last commit date
class-activation.php 3 years ago class-admin-interface.php 3 years ago class-common-methods.php 3 years ago class-content-management.php 3 years ago class-deactivation.php 3 years ago class-disable-components.php 3 years ago class-security.php 3 years ago class-settings-fields-render.php 3 years ago class-settings-sanitization.php 3 years ago class-settings-sections-fields.php 3 years ago class-utilities.php 3 years ago
class-disable-components.php
244 lines
1 <?php
2
3 namespace ASENHA\CLasses;
4
5 /**
6 * Class related to the Disable Components feature
7 *
8 * @since 2.2.0
9 */
10 class Disable_Components {
11
12 /**
13 * Disable comments for post types
14 *
15 * @since 2.7.0
16 */
17 public function disable_comments_for_post_types_edit() {
18
19 $options = get_option( ASENHA_SLUG_U );
20 $disable_comments_for = $options['disable_comments_for'];
21
22 foreach ( $disable_comments_for as $post_type_slug => $is_commenting_disabled ) {
23 if ( $is_commenting_disabled ) {
24 remove_post_type_support( $post_type_slug, 'comments' );
25 remove_post_type_support( $post_type_slug, 'trackbacks' );
26 remove_meta_box( 'commentstatusdiv', $post_type_slug, 'normal' );
27 remove_meta_box( 'commentstatusdiv', $post_type_slug, 'side' );
28 remove_meta_box( 'commentsdiv', $post_type_slug, 'normal' );
29 remove_meta_box( 'commentsdiv', $post_type_slug, 'side' );
30 }
31 }
32
33 }
34
35 /**
36 * Hide existing comments from the frontend post
37 *
38 * @since 2.7.0
39 */
40 public function hide_existing_comments_on_frontend( $comments, $post_id ) {
41 $options = get_option( ASENHA_SLUG_U );
42 $disable_comments_for = $options['disable_comments_for'];
43 $current_post_type = get_post_type();
44
45 foreach ( $disable_comments_for as $post_type_slug => $is_commenting_disabled ) {
46 if ( ( $current_post_type === $post_type_slug ) && $is_commenting_disabled ) {
47 return array(); // return an empty array instead of the existing comments array
48 } else {
49 return $comments;
50 }
51 }
52 }
53
54 /**
55 * Close commenting on the frontend
56 *
57 * @since 2.7.0
58 */
59 public function close_commenting_on_frontend() {
60 $options = get_option( ASENHA_SLUG_U );
61 $disable_comments_for = $options['disable_comments_for'];
62 $current_post_type = get_post_type();
63
64 foreach ( $disable_comments_for as $post_type_slug => $is_commenting_disabled ) {
65 if ( ( $current_post_type === $post_type_slug ) && $is_commenting_disabled ) {
66 return false; // close commenting
67 } else {
68 return true; // keep commenting open
69 }
70 }
71 }
72
73 /**
74 * Disable Gutenberg in wp-admin for some or all post types
75 *
76 * @since 2.8.0
77 */
78 public function disable_gutenberg_for_post_types_admin() {
79
80 // Get current page's post type from WP core globals and query parameters
81
82 global $pagenow, $typenow;
83
84 $post_type = null;
85
86 if ( 'edit.php' === $pagenow ) { // on the list table screen, $typenow returns correct post type
87
88 $post_type = $typenow;
89
90 } elseif ( 'post.php' === $pagenow ) { // on the edit screen, $typenow is empty, so we detect it
91
92 $post_type = get_post_type( $_GET['post'] );
93
94 } elseif ( 'post-new.php' === $pagenow ) { // on the add new screen, best to get post type from GET parameter
95
96 $post_type = isset( $_GET['post_type'] ) ? $_GET['post_type'] : 'post';
97
98 } else {}
99
100 // Check if Gutenberg feature is enabled for the site
101
102 // Before/after WP v5.0.0 via feature plugin
103 $gutenberg = function_exists( 'gutenberg_register_scripts_and_styles' );
104
105 // Since WP v5.0.0, gutenberg is in core
106 $block_editor = has_action( 'enqueue_block_assets' );
107
108 // Gutenberg feature is not enabled for the site
109 if ( ! $gutenberg && ( false === $block_editor ) ) {
110 return; // do nothing
111 }
112
113 // Assemble single-dimensional array of post types for which Gutenberg should be disabled
114 $options = get_option( ASENHA_SLUG_U );
115 $disable_gutenberg_for = $options['disable_gutenberg_for'];
116 $post_types_for_disable_gutenberg = array();
117
118 foreach( $disable_gutenberg_for as $post_type_slug => $is_gutenberg_disabled ) {
119 if ( $is_gutenberg_disabled ) {
120 $post_types_for_disable_gutenberg[] = $post_type_slug;
121 }
122 }
123
124 // Selectively disable Gutenberg
125 if ( in_array( $post_type, $post_types_for_disable_gutenberg ) ) {
126
127 // For WP v5.0.0 upwards
128 add_filter( 'use_block_editor_for_post_type', '__return_false', 100 );
129
130 // If Gutenberg feature plugin is activated
131 if ( $gutenberg ) {
132 add_filter( 'gutenberg_can_edit_post_type', '__return_false', 100 );
133 $this->remove_all_gutenberg_hook();
134 }
135
136 }
137
138 }
139
140 /**
141 * Remove Gutenberg hooks added via feature plugin.
142 *
143 * @link https://plugins.trac.wordpress.org/browser/classic-editor/tags/1.6.2/classic-editor.php#L138
144 * @since 2.8.0
145 */
146 public function remove_all_gutenberg_hooks() {
147
148 remove_action( 'admin_menu', 'gutenberg_menu' );
149 remove_action( 'admin_init', 'gutenberg_redirect_demo' );
150
151 // Gutenberg 5.3+
152 remove_action( 'wp_enqueue_scripts', 'gutenberg_register_scripts_and_styles' );
153 remove_action( 'admin_enqueue_scripts', 'gutenberg_register_scripts_and_styles' );
154 remove_action( 'admin_notices', 'gutenberg_wordpress_version_notice' );
155 remove_action( 'rest_api_init', 'gutenberg_register_rest_widget_updater_routes' );
156 remove_action( 'admin_print_styles', 'gutenberg_block_editor_admin_print_styles' );
157 remove_action( 'admin_print_scripts', 'gutenberg_block_editor_admin_print_scripts' );
158 remove_action( 'admin_print_footer_scripts', 'gutenberg_block_editor_admin_print_footer_scripts' );
159 remove_action( 'admin_footer', 'gutenberg_block_editor_admin_footer' );
160 remove_action( 'admin_enqueue_scripts', 'gutenberg_widgets_init' );
161 remove_action( 'admin_notices', 'gutenberg_build_files_notice' );
162
163 remove_filter( 'load_script_translation_file', 'gutenberg_override_translation_file' );
164 remove_filter( 'block_editor_settings', 'gutenberg_extend_block_editor_styles' );
165 remove_filter( 'default_content', 'gutenberg_default_demo_content' );
166 remove_filter( 'default_title', 'gutenberg_default_demo_title' );
167 remove_filter( 'block_editor_settings', 'gutenberg_legacy_widget_settings' );
168 remove_filter( 'rest_request_after_callbacks', 'gutenberg_filter_oembed_result' );
169
170 // Previously used, compat for older Gutenberg versions.
171 remove_filter( 'wp_refresh_nonces', 'gutenberg_add_rest_nonce_to_heartbeat_response_headers' );
172 remove_filter( 'get_edit_post_link', 'gutenberg_revisions_link_to_editor' );
173 remove_filter( 'wp_prepare_revision_for_js', 'gutenberg_revisions_restore' );
174
175 remove_action( 'rest_api_init', 'gutenberg_register_rest_routes' );
176 remove_action( 'rest_api_init', 'gutenberg_add_taxonomy_visibility_field' );
177 remove_filter( 'registered_post_type', 'gutenberg_register_post_prepare_functions' );
178
179 remove_action( 'do_meta_boxes', 'gutenberg_meta_box_save' );
180 remove_action( 'submitpost_box', 'gutenberg_intercept_meta_box_render' );
181 remove_action( 'submitpage_box', 'gutenberg_intercept_meta_box_render' );
182 remove_action( 'edit_page_form', 'gutenberg_intercept_meta_box_render' );
183 remove_action( 'edit_form_advanced', 'gutenberg_intercept_meta_box_render' );
184 remove_filter( 'redirect_post_location', 'gutenberg_meta_box_save_redirect' );
185 remove_filter( 'filter_gutenberg_meta_boxes', 'gutenberg_filter_meta_boxes' );
186
187 remove_filter( 'body_class', 'gutenberg_add_responsive_body_class' );
188 remove_filter( 'admin_url', 'gutenberg_modify_add_new_button_url' ); // old
189 remove_action( 'admin_enqueue_scripts', 'gutenberg_check_if_classic_needs_warning_about_blocks' );
190 remove_filter( 'register_post_type_args', 'gutenberg_filter_post_type_labels' );
191 }
192
193 /**
194 * Disable Gutenberg styles and scripts on the front end for all or some post types
195 *
196 * @since 2.8.0
197 */
198 public function disable_gutenberg_for_post_types_frontend() {
199
200 $post = get_queried_object();
201 $post_type = $post->post_type;
202
203 // Assemble single-dimensional array of post types for which Gutenberg should be disabled
204 $options = get_option( ASENHA_SLUG_U );
205 $disable_gutenberg_for = $options['disable_gutenberg_for'];
206 $post_types_for_disable_gutenberg = array();
207
208 foreach( $disable_gutenberg_for as $post_type_slug => $is_gutenberg_disabled ) {
209 if ( $is_gutenberg_disabled ) {
210 $post_types_for_disable_gutenberg[] = $post_type_slug;
211 }
212 }
213
214 // Selectively disable for the selected post types
215 if ( in_array( $post_type, $post_types_for_disable_gutenberg ) ) {
216
217 global $wp_styles;
218
219 // As needed, exclude some block styles from dequeuing
220 $keep_enqueued = array(); // e.g. array( 'wp-block-navigation' );
221
222 foreach ( $wp_styles->queue as $handle ) {
223
224 // For all stye handles that starts with 'wp-block'
225 if ( false !== strpos( $handle, 'wp-block' ) ) {
226
227 if ( ! in_array( $handle, $keep_enqueued ) ) {
228 wp_dequeue_style( $handle );
229 }
230
231 }
232
233 }
234
235 // Additional dequeuing
236 wp_dequeue_style( 'core-block-supports' );
237 wp_dequeue_style( 'global-styles' ); // theme.json
238 wp_dequeue_style( 'classic-theme-styles' ); // classic theme
239
240 }
241
242 }
243
244 }