mirror of
https://gh.wpcy.net/https://github.com/presscustomizr/hueman.git
synced 2026-04-28 14:09:22 +08:00
116 lines
No EOL
3.9 KiB
PHP
116 lines
No EOL
3.9 KiB
PHP
<?php
|
|
/**************************************************************************************************
|
|
* MULTIPICKER CLASSES
|
|
***************************************************************************************************/
|
|
if ( ! class_exists( 'HU_Customize_Multipicker_Control' ) ) :
|
|
/**
|
|
* Customize Multi-picker Control Class
|
|
*
|
|
* @package WordPress
|
|
* @subpackage Customize
|
|
* @since 3.4.10
|
|
*/
|
|
abstract class HU_Customize_Multipicker_Control extends HU_controls {
|
|
|
|
public function render_content() {
|
|
|
|
if ( ! $this -> type ) return;
|
|
do_action( '__before_setting_control' , $this -> id );
|
|
|
|
$dropdown = $this -> hu_get_dropdown_multipicker();
|
|
|
|
if ( empty( $dropdown ) ) return;
|
|
|
|
$dropdown = str_replace( '<select', '<select multiple="multiple"' . $this->get_link(), $dropdown );
|
|
//start rendering
|
|
if (!empty( $this->title)) :
|
|
?>
|
|
<h3 class="czr-customizr-title"><?php echo esc_html( $this->title); ?></h3>
|
|
<?php endif; ?>
|
|
|
|
<label>
|
|
<span class="customize-control-title"><?php echo $this->label; ?></span>
|
|
<?php echo $dropdown; ?>
|
|
<?php if(!empty( $this -> notice)) : ?>
|
|
<span class="czr-notice"><?php echo $this -> notice ?></span>
|
|
<?php endif; ?>
|
|
</label>
|
|
<?php
|
|
do_action( '__after_setting_control' , $this -> id );
|
|
}
|
|
|
|
//to define in the extended classes
|
|
abstract public function hu_get_dropdown_multipicker();
|
|
}//end class
|
|
endif;
|
|
|
|
if ( ! class_exists( 'HU_Customize_Multipicker_Categories_Control' ) ) :
|
|
class HU_Customize_Multipicker_Categories_Control extends HU_Customize_Multipicker_Control {
|
|
|
|
public function hu_get_dropdown_multipicker() {
|
|
$cats_dropdown = wp_dropdown_categories(
|
|
array(
|
|
'name' => '_customize-'.$this->type,
|
|
'id' => $this -> id,
|
|
//hide empty, set it to false to avoid complains
|
|
'hide_empty' => 0 ,
|
|
'echo' => 0 ,
|
|
'walker' => new HU_Walker_CategoryDropdown_Multipicker(),
|
|
'hierarchical' => 1,
|
|
'class' => 'select2 '.$this->type,
|
|
'selected' => implode(',', $this->value() )
|
|
)
|
|
);
|
|
|
|
return $cats_dropdown;
|
|
}
|
|
}
|
|
endif;
|
|
|
|
|
|
/**
|
|
* @ dropdown multi-select walker
|
|
* Create HTML dropdown list of Categories.
|
|
*
|
|
* @package WordPress
|
|
* @since 2.1.0
|
|
* @uses Walker
|
|
*
|
|
* we need to allow more than one "selected" attribute
|
|
*/
|
|
|
|
if ( ! class_exists( 'HU_Walker_CategoryDropdown_Multipicker' ) ) :
|
|
class HU_Walker_CategoryDropdown_Multipicker extends Walker_CategoryDropdown {
|
|
/**
|
|
* Start the element output.
|
|
*
|
|
* @Override
|
|
*
|
|
* @see Walker::start_el()
|
|
*
|
|
* @param string $output Passed by reference. Used to append additional content.
|
|
* @param object $category Category data object.
|
|
* @param int $depth Depth of category. Used for padding.
|
|
* @param array $args Uses 'selected', 'show_count', and 'value_field' keys, if they exist.
|
|
* See {@see wp_dropdown_categories()}.
|
|
*/
|
|
public function start_el( &$output, $category, $depth = 0, $args = array(), $id = 0 ) {
|
|
$pad = str_repeat('—', $depth );
|
|
/** This filter is documented in wp-includes/category-template.php */
|
|
$cat_name = apply_filters( 'list_cats', $category->name, $category );
|
|
|
|
$value_field = 'term_id';
|
|
|
|
$output .= "\t<option class=\"level-$depth\" value=\"" . esc_attr( $category->{$value_field} ) . "\"";
|
|
//Treat selected arg as array
|
|
if ( in_array( (string) $category->{$value_field}, explode( ',', $args['selected'] ) ) )
|
|
$output .= ' selected="selected"';
|
|
|
|
$output .= '>';
|
|
$output .= $pad.$cat_name;
|
|
if ( $args['show_count'] )
|
|
$output .= ' ('. number_format_i18n( $category->count ) .')';
|
|
$output .= "</option>\n";
|
|
}
|
|
}
|
|
endif;
|