|
1 <?php |
|
2 /** |
|
3 * Customize Section Class. |
|
4 * |
|
5 * @package WordPress |
|
6 * @subpackage Customize |
|
7 * @since 3.4.0 |
|
8 */ |
|
9 class WP_Customize_Section { |
|
10 public $manager; |
|
11 public $id; |
|
12 public $priority = 10; |
|
13 public $capability = 'edit_theme_options'; |
|
14 public $theme_supports = ''; |
|
15 public $title = ''; |
|
16 public $description = ''; |
|
17 public $controls; |
|
18 |
|
19 /** |
|
20 * Constructor. |
|
21 * |
|
22 * @since 3.4.0 |
|
23 * |
|
24 * @param WP_Customize_Manager $manager |
|
25 * @param string $id An specific ID of the section. |
|
26 * @param array $args Section arguments. |
|
27 */ |
|
28 function __construct( $manager, $id, $args = array() ) { |
|
29 $keys = array_keys( get_class_vars( __CLASS__ ) ); |
|
30 foreach ( $keys as $key ) { |
|
31 if ( isset( $args[ $key ] ) ) |
|
32 $this->$key = $args[ $key ]; |
|
33 } |
|
34 |
|
35 $this->manager = $manager; |
|
36 $this->id = $id; |
|
37 |
|
38 $this->controls = array(); // Users cannot customize the $controls array. |
|
39 |
|
40 return $this; |
|
41 } |
|
42 |
|
43 /** |
|
44 * Check if the theme supports the section and check user capabilities. |
|
45 * |
|
46 * @since 3.4.0 |
|
47 * |
|
48 * @return bool False if theme doesn't support the section or user doesn't have the capability. |
|
49 */ |
|
50 public final function check_capabilities() { |
|
51 if ( $this->capability && ! call_user_func_array( 'current_user_can', (array) $this->capability ) ) |
|
52 return false; |
|
53 |
|
54 if ( $this->theme_supports && ! call_user_func_array( 'current_theme_supports', (array) $this->theme_supports ) ) |
|
55 return false; |
|
56 |
|
57 return true; |
|
58 } |
|
59 |
|
60 /** |
|
61 * Check capabilities and render the section. |
|
62 * |
|
63 * @since 3.4.0 |
|
64 */ |
|
65 public final function maybe_render() { |
|
66 if ( ! $this->check_capabilities() ) |
|
67 return; |
|
68 |
|
69 do_action( 'customize_render_section', $this ); |
|
70 do_action( 'customize_render_section_' . $this->id ); |
|
71 |
|
72 $this->render(); |
|
73 } |
|
74 |
|
75 /** |
|
76 * Render the section. |
|
77 * |
|
78 * @since 3.4.0 |
|
79 */ |
|
80 protected function render() { |
|
81 ?> |
|
82 <li id="accordion-section-<?php echo esc_attr( $this->id ); ?>" class="control-section accordion-section"> |
|
83 <h3 class="accordion-section-title" tabindex="0"><?php echo esc_html( $this->title ); ?></h3> |
|
84 <ul class="accordion-section-content"> |
|
85 <?php if ( ! empty( $this->description ) ) : ?> |
|
86 <li><p class="description"><?php echo $this->description; ?></p></li> |
|
87 <?php endif; ?> |
|
88 <?php |
|
89 foreach ( $this->controls as $control ) |
|
90 $control->maybe_render(); |
|
91 ?> |
|
92 </ul> |
|
93 </li> |
|
94 <?php |
|
95 } |
|
96 } |