-
Notifications
You must be signed in to change notification settings - Fork 0
/
wisvch-plugin.php
153 lines (123 loc) · 3.82 KB
/
wisvch-plugin.php
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
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
<?php
namespace WISVCH;
/**
* @package WISVCH
* @author W3Cie <[email protected]>
*
* @wordpress-plugin
* Plugin Name: WISVCH WordPress Enhancements
* Description: Adds custom post types, widgets and user portal.
* Version: 1.0.13.1
* Author: W3Cie
* Author URI: W3Cie <[email protected]>
*/
// If this file is called directly, abort.
if (!defined('WPINC')) {
die;
}
// Define base path
define('WISVCH_ASSET_BASE', __FILE__);
// Load autoloader
require "autoloader.php";
// Disable xmlrpc.php
// https://kinsta.com/nl/blog/xmlrpc-php/#schakel-xmlrpcphp-uit-zonder-plugin
add_filter('xmlrpc_enabled', '__return_false');
/**
* Initializes WordPress plug-in.
*
* @package WISVCH
*/
class WISVCH_Plugin
{
// Dashboard Glancer, adds post counts to dashboard
static protected $dashboard_glancer;
/**
* Init subcomponents.
*/
function __construct()
{
// Init Dashboard Glancer (to load admin css)
WISVCH_Plugin::dashboard_glancer();
// Init custom post types
new CPT\Ambassador\Init();
new CPT\Board\Init();
new CPT\Committee\Init();
new CPT\Company\Init();
new CPT\Event\Init();
new CPT\HonoraryMember\Init();
new CPT\JobOpening\Init();
new CPT\Slide\Init();
// Update existing post types
new CPT\News\Init();
// Init Portal
new Portal\Init();
// Init Events Synchronizer
new EventsSync\Init();
// Init shortcodes
new Shortcodes\Init();
// Register widgets
new Widgets\Init();
// Add separator to admin menu
add_action('admin_init', [$this, 'add_admin_menu_separator']);
register_activation_hook(__FILE__, [__CLASS__, 'activate']);
register_deactivation_hook(__FILE__, [__CLASS__, 'deactivate']);
}
/**
* Add separator to create a dedicated block in the admin menu.
*/
function add_admin_menu_separator()
{
global $menu;
$position = 39;
// Do not overwrite existing menu items
while (!empty($menu[$position])) {
$position++;
}
$menu[$position] = [
0 => '', // The text of the menu item
1 => 'read', // Permission level required to view the item
2 => 'separator' . $position, // The ID of the menu item
3 => '', // Empty by default.
4 => 'wp-menu-separator' // Custom class names for the menu item
];
ksort($menu);
}
/**
* Make Dashboard Glancer class statically available.
*
* @return \Gamajo_Dashboard_Glancer
*/
static function dashboard_glancer()
{
if (isset(self::$dashboard_glancer)) {
return self::$dashboard_glancer;
} else {
if (!class_exists(\Gamajo_Dashboard_Glancer::class)) {
require plugin_dir_path(__FILE__) . 'lib/class-gamajo-dashboard-glancer.php'; // WP 3.8
}
return self::$dashboard_glancer = new \Gamajo_Dashboard_Glancer();
}
}
/**
* Code executed upon plugin activation.
*/
static function activate()
{
// Create custom roles.
if (!\WISVCH\Portal\Member::register_role()) {
wp_die("Could not register custom CH Member role.", "Fatal error", ['back_link' => true]);
}
// Update permalinks
flush_rewrite_rules();
}
/**
* Code executed upon plugin deactivation.
*/
static function deactivate()
{
// Update permalinks
flush_rewrite_rules();
// Don't remove roles here, because existing members would be converted to another role.
}
}
new WISVCH_Plugin();