-
Notifications
You must be signed in to change notification settings - Fork 6
/
gardener.php
109 lines (101 loc) · 3.12 KB
/
gardener.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
<?php
/**
* Gardener plugin for WordPress
*
* @category Plugin
* @package Gardener
* @author Pär Thernström <[email protected]>
* @copyright 2009-2019 Pär Thernström
* @license GPL v2 or later
* @link https://github.com/bonny/gardener
*
* Plugin Name: Gardener
* Description: Cleanup WordPress frontend and backend
* Version: 0.1
* Plugin URI: https://github.com/bonny/gardener/
* Author: Pär Thernström
* Author URI: https://eskapism.se/
* Text Domain: gardener
* Domain Path: /languages/
* Requires PHP: 7.0
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
namespace Gardener;
defined('ABSPATH') || die();
/*
Nothing is modified by default. Add different cleanup things by calling
'add_theme_support'
for example
add_theme_support('gardener-relative-links');
or add all opinionated by using wildcard *
add_theme_support('gardener-*');
*/
/**
* Check for enabled features on init.
* We can detect all features added with add_theme_support(), for example
* add_theme_support('gardener-cleanup-dashboard');
*
* Call with prio 1 so executed earlier than most things.
*/
add_action('init', __NAMESPACE__ . '\checkForEnabledFeatures', 1);
/**
* Check for enabled features and load required files.
*
* Called from init action.
*/
function checkForEnabledFeatures()
{
$features = getFeatures();
array_walk($features, function ($feature, $featureKey) {
// Load feature if support has been requested.
$featureKeyWithPrefix = "gardener-{$featureKey}";
if (($support = get_theme_support($featureKeyWithPrefix)) !== false) {
$featureArguments = [];
if (is_array($support) && isset($support[0])) {
$featureArguments = $support[0];
}
// error_log("user has added support for $featureKey");
loadFeature($featureKey, $featureArguments);
}
});
}
/**
* Get features.
*
* @return array Array with features. Key is feature slug.
* Array as value to make room for any future customiziation or informaton.
*/
function getFeatures()
{
return [
'remove-emoji' => [],
'relative-links' => [],
'cleanup-upload-filenames' => [],
'cleanup-dashboard' => [],
// Supports argument "message" and "image".
'enhance-login-screen' => [],
'cleanup-frontend' => [],
'hide-posts' => [],
'hide-comments' => []
];
}
/**
* Load a feature.
*
* @param string $featureKey.
*/
function loadFeature($featureKey, array $featureArguments = [])
{
$featureFile = __DIR__ . '/features/' . "{$featureKey}.php";
// error_log("loading feature file $featureFile");
@include $featureFile;
}