Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- //
- // Category Checklists
- //
- /**
- * {@internal Missing Short Description}}
- *
- * @since 2.5.1
- */
- if(!class_exists('Walker_Category_Dropdownlist')){
- class Walker_Category_Dropdownlist extends Walker {
- var $tree_type = 'category';
- var $db_fields = array ('parent' => 'parent', 'id' => 'term_id'); //TODO: decouple this
- function start_lvl(&$output, $depth, $args) {
- $indent = str_repeat("\t", $depth);
- $output .= "$indent<optgroup class='children'>\n";
- //$output .= "$indent\n";
- }
- function end_lvl(&$output, $depth, $args) {
- $indent = str_repeat("\t", $depth);
- $output .= "$indent</optgroup>\n";
- //$output .= "$indent\n";
- }
- function start_el(&$output, $category, $depth, $args) {
- extract($args);
- if ( empty($taxonomy) )
- $taxonomy = 'category';
- if ( $taxonomy == 'category' )
- $name = 'post_category';
- else
- $name = $taxonomy;
- //$name = 'tax_input['.$taxonomy.']';
- $class = in_array( $category->term_id, $popular_cats ) ? ' class="popular-category"' : '';
- //$output .= "\n<li id='{$taxonomy}-{$category->term_id}'$class>" . '<label class="selectit"><input value="' . $category->term_id . '" type="checkbox" name="'.$name.'[]" id="in-'.$taxonomy.'-' . $category->term_id . '"' . checked( in_array( $category->term_id, $selected_cats ), true, false ) . disabled( empty( $args['disabled'] ), false, false ) . ' /> ' . esc_html( apply_filters('the_category', $category->name )) . '</label>';
- $output .= "\n<option id='{$taxonomy}-{$category->term_id}'$class " . ' value="' . $category->term_id . '" ' . selected( in_array( $category->term_id, $selected_cats ), true, false ) . disabled( empty( $args['disabled'] ), false, false ) . ' /> ' . esc_html( apply_filters('the_category', $category->name )) . '';
- //$output .= '<label class="fullsize customcheckboxl" for="'.esc_html( apply_filters('the_category', $category->name )).$category->term_id.'"><input type="checkbox" id="'.esc_html( apply_filters('the_category', $category->name )).$category->term_id.'" class="customcheckbox" name="'.$name.'[]" '.checked( in_array( $category->term_id, $selected_cats ), true, false ).' value="'.$category->term_id.'" /> '.esc_html( apply_filters('the_category', $category->name )).'</label>';
- //'<label class="fullsize customcheckboxl" for="'.$language_list->cat_name.$language_list->cat_ID.'"><input type="checkbox" id="'.$language_list->cat_name.$language_list->cat_ID.'" class="customcheckbox" name="language[]" '.$check.' value="'.$language_list->cat_ID.'" /> '.$language_list->cat_name.'</label>';
- }
- function end_el(&$output, $category, $depth, $args) {
- $output .= "</option>\n";
- //$output .= "\n";
- }
- }
- }
- /**
- * {@internal Missing Short Description}}
- *
- * @since 2.5.1
- *
- * @param unknown_type $post_id
- * @param unknown_type $descendants_and_self
- * @param unknown_type $selected_cats
- * @param unknown_type $popular_cats
- */
- if(!function_exists('wp_category_dropdownlist')){
- function wp_category_dropdownlist( $post_id = 0, $descendants_and_self = 0, $selected_cats = false, $popular_cats = false, $walker = null, $checked_ontop = true ) {
- wp_terms_dropdownlist($post_id,
- array(
- 'taxonomy' => 'category',
- 'descendants_and_self' => $descendants_and_self,
- 'selected_cats' => $selected_cats,
- 'popular_cats' => $popular_cats,
- 'walker' => $walker,
- 'checked_ontop' => $checked_ontop
- ));
- }
- }
- /**
- * Taxonomy independent version of wp_category_checklist
- *
- * @since 3.0.0
- *
- * @param int $post_id
- * @param array $args
- */
- if(!function_exists('wp_terms_dropdownlist')){
- function wp_terms_dropdownlist($post_id = 0, $args = array()) {
- $defaults = array(
- 'descendants_and_self' => 0,
- 'selected_cats' => false,
- 'popular_cats' => false,
- 'walker' => null,
- 'taxonomy' => 'category',
- 'checked_ontop' => false
- );
- extract( wp_parse_args($args, $defaults), EXTR_SKIP );
- if ( empty($walker) || !is_a($walker, 'Walker') )
- $walker = new Walker_Category_Dropdownlist;
- $descendants_and_self = (int) $descendants_and_self;
- $args = array('taxonomy' => $taxonomy);
- $tax = get_taxonomy($taxonomy);
- $args['disabled'] = !current_user_can($tax->cap->assign_terms);
- if ( is_array( $selected_cats ) )
- $args['selected_cats'] = $selected_cats;
- elseif ( $post_id )
- $args['selected_cats'] = wp_get_object_terms($post_id, $taxonomy, array_merge($args, array('fields' => 'ids')));
- else
- $args['selected_cats'] = array();
- if ( is_array( $popular_cats ) )
- $args['popular_cats'] = $popular_cats;
- else
- $args['popular_cats'] = get_terms( $taxonomy, array( 'fields' => 'ids', 'orderby' => 'count', 'order' => 'DESC', 'number' => 10, 'hierarchical' => false ) );
- if ( $descendants_and_self ) {
- $categories = (array) get_terms($taxonomy, array( 'child_of' => $descendants_and_self, 'hierarchical' => 0, 'hide_empty' => 0 ) );
- $self = get_term( $descendants_and_self, $taxonomy );
- array_unshift( $categories, $self );
- } else {
- $categories = (array) get_terms($taxonomy, array('get' => 'all'));
- }
- if ( $checked_ontop ) {
- // Post process $categories rather than adding an exclude to the get_terms() query to keep the query the same across all posts (for any query cache)
- $checked_categories = array();
- $keys = array_keys( $categories );
- foreach( $keys as $k ) {
- if ( in_array( $categories[$k]->term_id, $args['selected_cats'] ) ) {
- $checked_categories[] = $categories[$k];
- unset( $categories[$k] );
- }
- }
- // Put checked cats on top
- echo call_user_func_array(array(&$walker, 'walk'), array($checked_categories, 0, $args));
- }
- // Then the rest of them
- echo call_user_func_array(array(&$walker, 'walk'), array($categories, 0, $args));
- }
- }
- /**
- * Display or retrieve the HTML dropdown list of categories.
- *
- * The list of arguments is below:
- * 'show_option_all' (string) - Text to display for showing all categories.
- * 'show_option_none' (string) - Text to display for showing no categories.
- * 'orderby' (string) default is 'ID' - What column to use for ordering the
- * categories.
- * 'order' (string) default is 'ASC' - What direction to order categories.
- * 'show_last_update' (bool|int) default is 0 - See {@link get_categories()}
- * 'show_count' (bool|int) default is 0 - Whether to show how many posts are
- * in the category.
- * 'hide_empty' (bool|int) default is 1 - Whether to hide categories that
- * don't have any posts attached to them.
- * 'child_of' (int) default is 0 - See {@link get_categories()}.
- * 'exclude' (string) - See {@link get_categories()}.
- * 'echo' (bool|int) default is 1 - Whether to display or retrieve content.
- * 'depth' (int) - The max depth.
- * 'tab_index' (int) - Tab index for select element.
- * 'name' (string) - The name attribute value for select element.
- * 'id' (string) - The ID attribute value for select element. Defaults to name if omitted.
- * 'class' (string) - The class attribute value for select element.
- * 'selected' (int) - Which category ID is selected.
- * 'taxonomy' (string) - The name of the taxonomy to retrieve. Defaults to category.
- *
- * The 'hierarchical' argument, which is disabled by default, will override the
- * depth argument, unless it is true. When the argument is false, it will
- * display all of the categories. When it is enabled it will use the value in
- * the 'depth' argument.
- *
- * @since 2.1.0
- *
- * @param string|array $args Optional. Override default arguments.
- * @return string HTML content only if 'echo' argument is 0.
- */
- function wp_terms_dropdownlist_retrieve( $args = '' ) {
- $defaults = array(
- 'show_option_all' => '', 'show_option_none' => '',
- 'orderby' => 'id', 'order' => 'ASC',
- 'show_last_update' => 0, 'show_count' => 0,
- 'hide_empty' => 0, 'child_of' => 0,
- 'exclude' => '', 'echo' => 1,
- 'selected' => 0, 'hierarchical' => 0,
- 'name' => 'cat', 'id' => '',
- 'class' => 'postform', 'depth' => 0,
- 'tab_index' => 0, 'taxonomy' => 'category',
- 'hide_if_empty' => false
- );
- $defaults['selected'] = ( is_category() ) ? get_query_var( 'cat' ) : 0;
- // Back compat.
- if ( isset( $args['type'] ) && 'link' == $args['type'] ) {
- _deprecated_argument( __FUNCTION__, '3.0', '' );
- $args['taxonomy'] = 'link_category';
- }
- $r = wp_parse_args( $args, $defaults );
- if ( !isset( $r['pad_counts'] ) && $r['show_count'] && $r['hierarchical'] ) {
- $r['pad_counts'] = true;
- }
- $r['include_last_update_time'] = $r['show_last_update'];
- extract( $r );
- $tab_index_attribute = '';
- if ( (int) $tab_index > 0 )
- $tab_index_attribute = " tabindex=\"$tab_index\"";
- $categories = get_terms( $taxonomy, $r );
- $name = esc_attr( $name );
- $class = esc_attr( $class );
- $id = $id ? esc_attr( $id ) : $name;
- if ( ! $r['hide_if_empty'] || ! empty($categories) )
- //$output = "<select name='$name' id='$id' class='$class' $tab_index_attribute>\n";
- $output = '<select name="'.$name.'[]" id="'.$id.'" class="'.$class.'" '.$tab_index_attribute.'>';
- else
- $output = '';
- /*
- if ( empty($categories) && ! $r['hide_if_empty'] && !empty($show_option_none) ) {
- $show_option_none = apply_filters( 'list_cats', $show_option_none );
- $output .= "\t<option value='-1' selected='selected'>$show_option_none</option>\n";
- }
- */
- //var_dump($r['selected']);
- $cbselect = $r['selected'];
- //var_dump($cbselect[0]);
- $r['selected'] = $cbselect[0];
- if ( ! empty( $categories ) ) {
- /*
- if ( $show_option_all ) {
- $show_option_all = apply_filters( 'list_cats', $show_option_all );
- $selected = ( '0' === strval($r['selected']) ) ? " selected='selected'" : '';
- $output .= "\t<option value='0'$selected>$show_option_all</option>\n";
- }
- if ( $show_option_none ) {
- $show_option_none = apply_filters( 'list_cats', $show_option_none );
- $selected = ( '-1' === strval($r['selected']) ) ? " selected='selected'" : '';
- $output .= "\t<option value='-1'$selected>$show_option_none</option>\n";
- //$output .= "\n<li id='{$taxonomy}-{$category->term_id}'$class>" . '<label class="selectit"><input value="' . $category->term_id . '" type="checkbox" name="'.$name.'[]" id="in-'.$taxonomy.'-' . $category->term_id . '"' . checked( in_array( $category->term_id, $selected_cats ), true, false ) . disabled( empty( $args['disabled'] ), false, false ) . ' /> ' . esc_html( apply_filters('the_category', $category->name )) . '</label>';
- }
- */
- if ( $hierarchical )
- $depth = $r['depth']; // Walk the full depth.
- else
- $depth = -1; // Flat.
- $output .= walk_category_dropdown_tree( $categories, $depth, $r );
- }
- if ( ! $r['hide_if_empty'] || ! empty($categories) )
- $output .= "</select>\n";
- $output = apply_filters( 'wp_dropdown_cats', $output );
- if ( $echo )
- echo $output;
- return $output;
- }
- ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement