wp/wp-includes/class-wp-customize-section.php
changeset 0 d970ebf37754
child 5 5e2f62d02dcd
equal deleted inserted replaced
-1:000000000000 0:d970ebf37754
       
     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 }