8
8
9
9
namespace Leaves_And_Love \OOP_Admin_Pages \Admin_Page ;
10
10
11
+ use Leaves_And_Love \OOP_Admin_Pages \Admin_Page \WordPress_Admin_Panels \WordPress_Admin_Panel ;
12
+ use Leaves_And_Love \OOP_Admin_Pages \Admin_Page \WordPress_Admin_Panels \WordPress_Admin_Panels ;
13
+
11
14
/**
12
15
* Class representing a basic WordPress admin page.
13
16
*
@@ -28,18 +31,8 @@ class WordPress_Admin_Page extends Abstract_Admin_Page {
28
31
public function get_url () : string {
29
32
$ parent_file = $ this ->get_parent_file ();
30
33
31
- $ admin_panel = $ this ->hasConfigKey ( self ::ADMIN_PANEL ) ? $ this ->getConfigKey ( self ::ADMIN_PANEL ) : 'site ' ;
32
-
33
- switch ( $ admin_panel ) {
34
- case 'user ' :
35
- $ base_url = user_admin_url ( $ parent_file );
36
- break ;
37
- case 'network ' :
38
- $ base_url = network_admin_url ( $ parent_file );
39
- break ;
40
- default :
41
- $ base_url = admin_url ( $ parent_file );
42
- }
34
+ $ url_callback = $ this ->get_admin_panel ()->get_url_callback ();
35
+ $ base_url = call_user_func ( $ url_callback , $ parent_file );
43
36
44
37
return add_query_arg ( 'page ' , $ this ->getConfigKey ( self ::SLUG ), $ base_url );
45
38
}
@@ -52,18 +45,7 @@ public function get_url() : string {
52
45
public function register () {
53
46
$ callback = $ this ->get_register_hook_callback ();
54
47
55
- $ admin_panel = $ this ->hasConfigKey ( self ::ADMIN_PANEL ) ? $ this ->getConfigKey ( self ::ADMIN_PANEL ) : 'site ' ;
56
-
57
- switch ( $ admin_panel ) {
58
- case 'user ' :
59
- $ hook_name = 'user_admin_menu ' ;
60
- break ;
61
- case 'network ' :
62
- $ hook_name = 'network_admin_menu ' ;
63
- break ;
64
- default :
65
- $ hook_name = 'admin_menu ' ;
66
- }
48
+ $ hook_name = $ this ->get_admin_panel ()->get_hook_name ();
67
49
68
50
if ( doing_action ( $ hook_name ) ) {
69
51
call_user_func ( $ callback );
@@ -72,6 +54,21 @@ public function register() {
72
54
}
73
55
}
74
56
57
+ /**
58
+ * Gets the admin panel instance this admin page is part of.
59
+ *
60
+ * @since 1.0.0
61
+ *
62
+ * @return WordPress_Admin_Panel Admin panel instance.
63
+ */
64
+ protected function get_admin_panel () : WordPress_Admin_Panel {
65
+ if ( $ this ->hasConfigKey ( self ::ADMIN_PANEL ) ) {
66
+ return WordPress_Admin_Panels::get_panel ( $ this ->getConfigKey ( self ::ADMIN_PANEL ) );
67
+ }
68
+
69
+ return WordPress_Admin_Panels::get_current_panel ();
70
+ }
71
+
75
72
/**
76
73
* Gets the callback to use to register the admin page within WordPress.
77
74
*
0 commit comments