-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathwpdevs-classic-editor-widgets.php
More file actions
136 lines (119 loc) · 4.42 KB
/
Copy pathwpdevs-classic-editor-widgets.php
File metadata and controls
136 lines (119 loc) · 4.42 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
<?php
/**
* Plugin Name: Classic Editor & Classic Widgets by Aminul Islam
* Plugin URI: https://wordpress.org/plugins/wpdevs-classic-editor-widgets/
* Description: Enables the traditional WordPress classic editor, classic widgets, and the previous version of the Edit Post screen featuring TinyMCE, Meta Boxes, and more. This also supports older plugins that enhance this screen.
* Version: 1.1
* Author: WPDevs
* Author URI: https://wpdevs.xyz
* License: GPLv2 or later
* License URI: http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
* Text Domain: wpdevs-classic-editor
* Domain Path: /languages
* Requires PHP: 7.4
*
* @package WPDevs_Classic_Editor_Widgets
*/
add_action( 'plugins_loaded', 'wpdevs_ce_init' );
/**
* Initialize the plugin.
*/
function wpdevs_ce_init() {
load_plugin_textdomain( 'wpdevs-classic-editor', false, basename( __DIR__ ) . '/languages' );
if ( false === get_option( 'wpdevs_classic_editor_settings' ) ) {
$default_options = array(
'disable_gutenberg' => 1,
'disable_gutenberg_widgets' => 1,
);
add_option( 'wpdevs_classic_editor_settings', $default_options );
}
$options = get_option( 'wpdevs_classic_editor_settings' );
if ( isset( $options['disable_gutenberg'] ) && $options['disable_gutenberg'] ) {
add_filter( 'use_block_editor_for_post', '__return_false', 10 );
add_filter( 'use_block_editor_for_post_type', '__return_false', 10 );
}
if ( isset( $options['disable_gutenberg_widgets'] ) && $options['disable_gutenberg_widgets'] ) {
add_action( 'after_setup_theme', 'wpdevs_ce_disable_widgets_editor' );
}
add_filter( 'plugin_action_links_' . plugin_basename( __FILE__ ), 'wpdevs_ce_add_settings_link' );
}
/**
* Disable the block-based widgets editor.
*/
function wpdevs_ce_disable_widgets_editor() {
remove_theme_support( 'widgets-block-editor' );
}
add_action( 'admin_init', 'wpdevs_ce_register_settings_to_writing_page' );
/**
* Register plugin settings and add fields to the Writing settings page.
*/
function wpdevs_ce_register_settings_to_writing_page() {
register_setting(
'writing',
'wpdevs_classic_editor_settings',
array(
'sanitize_callback' => 'wpdevs_ce_sanitize_settings',
)
);
add_settings_section(
'wpdevs_classic_editor_general_settings',
__( 'WPDevs Classic Editor & Widgets', 'wpdevs-classic-editor' ),
null,
'writing'
);
add_settings_field(
'disable_gutenberg',
__( 'Back To Traditional Editor', 'wpdevs-classic-editor' ),
'wpdevs_ce_disable_gutenberg_cb',
'writing',
'wpdevs_classic_editor_general_settings'
);
add_settings_field(
'disable_gutenberg_widgets',
__( 'Back To Traditional Widgets', 'wpdevs-classic-editor' ),
'wpdevs_ce_disable_gutenberg_widgets_cb',
'writing',
'wpdevs_classic_editor_general_settings'
);
}
/**
* Sanitize plugin settings input.
*
* @param array $input Raw input from settings form.
* @return array Sanitized settings.
*/
function wpdevs_ce_sanitize_settings( $input ) {
$output = array();
$output['disable_gutenberg'] = ( isset( $input['disable_gutenberg'] ) && 1 === (int) $input['disable_gutenberg'] ) ? 1 : 0;
$output['disable_gutenberg_widgets'] = ( isset( $input['disable_gutenberg_widgets'] ) && 1 === (int) $input['disable_gutenberg_widgets'] ) ? 1 : 0;
return $output;
}
/**
* Render the classic editor checkbox field.
*/
function wpdevs_ce_disable_gutenberg_cb() {
$options = get_option( 'wpdevs_classic_editor_settings' );
?>
<input type="checkbox" name="wpdevs_classic_editor_settings[disable_gutenberg]" value="1" <?php checked( 1, isset( $options['disable_gutenberg'] ) ? $options['disable_gutenberg'] : 1, true ); ?>>
<?php
}
/**
* Render the classic widgets checkbox field.
*/
function wpdevs_ce_disable_gutenberg_widgets_cb() {
$options = get_option( 'wpdevs_classic_editor_settings' );
?>
<input type="checkbox" name="wpdevs_classic_editor_settings[disable_gutenberg_widgets]" value="1" <?php checked( 1, isset( $options['disable_gutenberg_widgets'] ) ? $options['disable_gutenberg_widgets'] : 1, true ); ?>>
<?php
}
/**
* Add a Settings link to the plugin action links.
*
* @param array $links Existing plugin action links.
* @return array Modified plugin action links.
*/
function wpdevs_ce_add_settings_link( $links ) {
$settings_link = '<a href="' . esc_url( admin_url( 'options-writing.php' ) ) . '">' . __( 'Settings', 'wpdevs-classic-editor' ) . '</a>';
array_unshift( $links, $settings_link );
return $links;
}