-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathBackRoute.php
More file actions
47 lines (43 loc) · 1.77 KB
/
BackRoute.php
File metadata and controls
47 lines (43 loc) · 1.77 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
<?php
// Setup BackRoute
namespace Balise\Bridge;
class BackRoute extends Route {
public static $routes = array();
static function start() {
add_action('init', 'flush_rewrite_rules' );
add_action('init', array('\Balise\Bridge\BackRoute', 'onInit'));
add_action('parse_query', array('\Balise\Bridge\BackRoute', 'bypassQuery'));
}
static function onInit() {
global $wp_query;
add_rewrite_tag( '%backendroute%', '(.*)' );
$adminUrl = parse_url(admin_url());
$wpadmin = substr($adminUrl['path'],1);
foreach (self::$routes as $route) {
$resolver = preg_replace('/{\w+}/i','([^\/]+)',$route[1]);
add_rewrite_rule('^'.$wpadmin.$resolver.'$', 'index.php?backendroute=1', 'top');
}
}
static function bypassQuery() {
global $_wp_submenu_nopriv, $wp_db_version, $menu;
if (get_query_var("backendroute", false)) {
$_wp_submenu_nopriv = array();
$menu = array();
$wp_db_version = get_option('db_version');
add_submenu_page(null, 'wpbackendroutingtest', 'test', 'read', 'wpbackendroutingtest', function(){
$adminUrl = parse_url(admin_url());
$wpadmin = substr($adminUrl['path'],1);
$resolved = self::routesResolver(self::$routes, $wpadmin);
echo '<div class="wrap">'.call_user_func_array ($resolved[2], $resolved[4]).'</div>';
});
$_GET['post_type'] = 'post';
$_GET['page'] = 'wpbackendroutingtest';
add_action( 'admin_head', function() {
echo '<base href="'.admin_url().'">';
} );
require_once(ABSPATH."/wp-admin/index.php");
die();
}
}
}
BackRoute::start();