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
|
<?php /** * Loader for settings page * @package Meta Box * @subpackage MB Settings Page * @author Tran Ngoc Tuan Anh <rilwis@gmail.com> */
/** * Loader class */ class MB_Settings_Page_Loader { /** * Meta boxes for terms only. * @var array */ protected $meta_boxes = array();
/** * Run hooks to get meta boxes for terms and initialize them. */ public function init() { add_action( 'admin_menu', array( $this, 'register_settings_pages' ), 1 );
add_filter( 'rwmb_meta_boxes', array( $this, 'filter' ), 999 );
/** * Initialize meta boxes for term. * 'rwmb_meta_boxes' runs at priority 10, we use priority 20 to make sure $this->meta_boxes is set. * @see mb_term_meta_filter() */ add_action( 'admin_init', array( $this, 'register' ), 20 ); }
/** * Register settings pages. */ function register_settings_pages() { $settings_pages = apply_filters( 'mb_settings_pages', array() );
// Prevent errors showing if invalid value is returned from the filter above if ( empty( $settings_pages ) || ! is_array( $settings_pages ) ) { return; }
foreach ( $settings_pages as $settings_page ) { new MB_Settings_Page( $settings_page ); } }
/** * Filter meta boxes to get only meta boxes for terms and remove them from posts. * * @param array $meta_boxes * * @return array */ public function filter( $meta_boxes ) { foreach ( $meta_boxes as $k => $meta_box ) { if ( isset( $meta_box['settings_pages'] ) ) { $this->meta_boxes[] = $meta_box; unset( $meta_boxes[ $k ] ); } }
return $meta_boxes; }
/** * Register meta boxes for term, each meta box is a section */ public function register() { foreach ( $this->meta_boxes as $meta_box ) { new MB_Settings_Page_Meta_Box( $meta_box ); } } }
|