PluginProbe ʕ •ᴥ•ʔ
Admin and Site Enhancements (ASE) / 1.9.0
Admin and Site Enhancements (ASE) v1.9.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 / bootstrap.php
admin-site-enhancements Last commit date
assets 3 years ago classes 3 years ago includes 3 years ago LICENSE.md 3 years ago README.md 3 years ago admin-site-enhancements.php 3 years ago bootstrap.php 3 years ago
bootstrap.php
189 lines
1 <?php
2
3 // We're using the singleton design pattern
4 // https://code.tutsplus.com/articles/design-patterns-in-wordpress-the-singleton-pattern--wp-31621
5 // https://carlalexander.ca/singletons-in-wordpress/
6 // https://torquemag.io/2016/11/singletons-wordpress-good-evil/
7
8 /**
9 * Main class of the plugin used to add functionalities
10 *
11 * @since 1.0.0
12 */
13 class Admin_Site_Enhancements {
14
15 // Refers to a single instance of this class
16 private static $instance = null;
17
18 /**
19 * Creates or returns a single instance of this class
20 *
21 * @return Admin_Site_Enhancements a single instance of this class
22 * @since 1.0.0
23 */
24 public static function get_instance() {
25
26 if ( null == self::$instance ) {
27
28 self::$instance = new self;
29
30 }
31
32 return self::$instance;
33
34 }
35
36 /**
37 * Initialize plugin functionalities
38 */
39 private function __construct() {
40
41 // Setup admin menu, admin page, admin scripts, plugin action links, etc.
42
43 // Register admin menu and add the settings page.
44 add_action( 'admin_menu', 'asenha_register_admin_menu' );
45
46 // Register plugin settings
47 add_action( 'admin_init', 'asenha_register_settings' );
48
49 // Suppress all notices on the plugin's main page. Then add notification for successful settings update.
50 add_action( 'admin_notices', 'asenha_notices', 5 );
51
52 // Enqueue admin scripts and styles only on the plugin's main page
53 add_action( 'admin_enqueue_scripts', 'asenha_admin_scripts' );
54
55 // Add action links in plugins page
56 add_filter( 'plugin_action_links_' . ASENHA_SLUG . '/' . ASENHA_SLUG . '.php', 'asenha_plugin_action_links' );
57
58 // Update footer text
59 add_filter( 'admin_footer_text', 'asenha_footer_text' );
60
61 // Selectively enable enhancements based on options value
62
63 // Get all WP Enhancements options, default to empty array in case it's not been created yet
64 $options = get_option( ASENHA_SLUG_U, array() );
65
66 // Instantiate object for Content Management features
67 $content_management = new ASENHA\Classes\Content_Management;
68
69 // Content Management >> Enable Page and Post Duplication
70 if ( array_key_exists( 'enable_duplication', $options ) && $options['enable_duplication'] ) {
71 add_action( 'admin_action_asenha_enable_duplication', [ $content_management, 'asenha_enable_duplication' ] );
72 add_filter( 'page_row_actions', [ $content_management, 'add_duplication_action_link' ], 10, 2 );
73 add_filter( 'post_row_actions', [ $content_management, 'add_duplication_action_link' ], 10, 2 );
74 }
75
76 // Content Management >> Enable Media Replacement
77 if ( array_key_exists( 'enable_media_replacement', $options ) && $options['enable_media_replacement'] ) {
78 add_filter( 'media_row_actions', [ $content_management, 'modify_media_list_table_edit_link' ], 10, 2 );
79 add_filter( 'attachment_fields_to_edit', [ $content_management, 'add_media_replacement_button' ] );
80 add_action( 'edit_attachment', [ $content_management, 'replace_media' ] );
81 add_filter( 'post_updated_messages', [ $content_management, 'attachment_updated_custom_message' ] );
82 }
83
84 // Content Management >> Enhance List Tables
85 if ( array_key_exists( 'enhance_list_tables', $options ) && $options['enhance_list_tables'] ) {
86
87 // Show Featured Image Column
88 if ( array_key_exists( 'show_featured_image_column', $options ) && $options['show_featured_image_column'] ) {
89 add_action( 'admin_init', [ $content_management, 'show_featured_image_column' ] );
90 }
91
92 // Show Excerpt Column
93 if ( array_key_exists( 'show_excerpt_column', $options ) && $options['show_excerpt_column'] ) {
94 add_action( 'admin_init', [ $content_management, 'show_excerpt_column' ] );
95 }
96
97 // Show ID Column
98 if ( array_key_exists( 'show_id_column', $options ) && $options['show_id_column'] ) {
99 add_action( 'admin_init', [ $content_management, 'show_id_column' ] );
100 }
101
102 // Hide Comments Column
103 if ( array_key_exists( 'hide_comments_column', $options ) && $options['hide_comments_column'] ) {
104 add_action( 'admin_init', [ $content_management, 'hide_comments_column' ] );
105 }
106
107 // Hide Post Tags Column
108 if ( array_key_exists( 'hide_post_tags_column', $options ) && $options['hide_post_tags_column'] ) {
109 add_action( 'admin_init', [ $content_management, 'hide_post_tags_column' ] );
110 }
111
112 // Show Custom Taxonomy Filters
113 if ( array_key_exists( 'show_custom_taxonomy_filters', $options ) && $options['show_custom_taxonomy_filters'] ) {
114 add_action( 'restrict_manage_posts', [ $content_management, 'show_custom_taxonomy_filters' ] );
115 }
116
117 }
118
119 // Instantiate object for Admin Interface features
120 $admin_interface = new ASENHA\Classes\Admin_Interface;
121
122 // Admin Interface >> Hide Admin Notices
123 if ( array_key_exists( 'hide_admin_notices', $options ) && $options['hide_admin_notices'] ) {
124 add_action( 'all_admin_notices', [ $admin_interface, 'admin_notices_wrapper' ] );
125 add_action( 'admin_bar_menu', [ $admin_interface, 'admin_notices_menu' ] );
126 add_action( 'admin_enqueue_scripts', [ $admin_interface, 'admin_notices_menu_inline_css' ] ); // wp-admin
127 }
128
129 // Admin Interface >> Hide Admin Bar
130 if ( array_key_exists( 'hide_admin_bar', $options ) && $options['hide_admin_bar'] && array_key_exists( 'hide_admin_bar_for', $options ) && isset( $options['hide_admin_bar_for'] ) ) {
131 add_filter( 'show_admin_bar', [ $admin_interface, 'hide_admin_bar_for_roles' ] );
132 }
133
134 // Admin Interface >> View Admin as Role
135 if ( array_key_exists( 'view_admin_as_role', $options ) && $options['view_admin_as_role'] ) {
136 add_action( 'admin_bar_menu', [ $admin_interface, 'view_admin_as_admin_bar_menu' ], 8 ); // Priority 8 so it is next to username section
137 add_action( 'init', [ $admin_interface, 'role_switcher_to_view_admin_as' ] );
138 add_action( 'wp_die_handler', [ $admin_interface, 'custom_error_page_on_switch_failure' ] );
139 }
140
141 // Admin Interface >> Hide or Modify Elements
142 if ( array_key_exists( 'hide_modify_elements', $options ) && $options['hide_modify_elements'] ) {
143 add_filter( 'admin_bar_menu', [ $admin_interface, 'modify_admin_bar_menu' ], 5 ); // priority 5 to execute earlier than the normal 10
144 }
145
146 // Instantiate object for Security features
147 $security = new ASENHA\Classes\Security;
148
149 // Security >> Change Login URL
150 if ( array_key_exists( 'change_login_url', $options ) && $options['change_login_url'] ) {
151 if ( array_key_exists( 'custom_login_slug', $options ) && ! empty( $options['custom_login_slug'] ) ) {
152 add_action( 'login_head', [ $security, 'redirect_on_default_login_urls' ] );
153 add_action( 'init', [ $security, 'redirect_on_custom_login_url' ] );
154 add_action( 'wp_login_failed', [ $security, 'redirect_to_custom_login_url' ] );
155 add_action( 'wp_logout', [ $security, 'redirect_to_custom_login_url' ] );
156 }
157 }
158
159 // Instantiate object for Utilities features
160 $utilities = new ASENHA\Classes\Utilities;
161
162 // Utilities >> Redirect After Login
163 if ( array_key_exists( 'redirect_after_login', $options ) && $options['redirect_after_login'] ) {
164 if ( array_key_exists( 'redirect_after_login_to_slug', $options ) && ! empty( $options['redirect_after_login_to_slug'] ) ) {
165 if ( array_key_exists( 'redirect_after_login_for', $options ) && ! empty( $options['redirect_after_login_for'] ) ) {
166 add_filter( 'login_redirect', [ $utilities, 'redirect_for_roles_after_login' ], 10, 3 );
167 }
168 }
169 }
170
171 // Utilities >> Redirect After Logout
172 if ( array_key_exists( 'redirect_after_logout', $options ) && $options['redirect_after_logout'] ) {
173 if ( array_key_exists( 'redirect_after_logout_to_slug', $options ) && ! empty( $options['redirect_after_logout_to_slug'] ) ) {
174 if ( array_key_exists( 'redirect_after_logout_for', $options ) && ! empty( $options['redirect_after_logout_for'] ) ) {
175 add_action( 'wp_logout', [ $utilities, 'redirect_after_logout' ], 5, 1 ); // load earlier than Change Login URL add_action
176 }
177 }
178 }
179
180 // Utilities >> Redirect 404 to Homepage
181 if ( array_key_exists( 'redirect_404_to_homepage', $options ) && $options['redirect_404_to_homepage'] ) {
182 add_filter( 'wp', [ $utilities, 'redirect_404_to_homepage' ] );
183 }
184
185 }
186
187 }
188
189 Admin_Site_Enhancements::get_instance();