" .
+ '';
+ }
}
/**
@@ -95,24 +123,29 @@ class Walker_Category_Checklist extends Walker {
* @param int $depth Depth of the term in reference to parents. Default 0.
* @param array $args An array of arguments. @see wp_terms_checklist()
*/
- function end_el( &$output, $category, $depth = 0, $args = array() ) {
+ public function end_el( &$output, $category, $depth = 0, $args = array() ) {
$output .= "
\n";
}
}
/**
- * Output an unordered list of checkbox elements labelled
- * with category names.
+ * Output an unordered list of checkbox input elements labeled with category names.
*
- * @see wp_terms_checklist()
* @since 2.5.1
*
- * @param int $post_id Mark categories associated with this post as checked. $selected_cats must not be an array.
- * @param int $descendants_and_self ID of the category to output along with its descendents.
- * @param bool|array $selected_cats List of categories to mark as checked.
- * @param bool|array $popular_cats Override the list of categories that receive the "popular-category" class.
- * @param object $walker Walker object to use to build the output.
- * @param bool $checked_ontop Move checked items out of the hierarchy and to the top of the list.
+ * @see wp_terms_checklist()
+ *
+ * @param int $post_id Optional. Post to generate a categories checklist for. Default 0.
+ * $selected_cats must not be an array. Default 0.
+ * @param int $descendants_and_self Optional. ID of the category to output along with its descendants.
+ * Default 0.
+ * @param array $selected_cats Optional. List of categories to mark as checked. Default false.
+ * @param array $popular_cats Optional. List of categories to receive the "popular-category" class.
+ * Default false.
+ * @param object $walker Optional. Walker object to use to build the output.
+ * Default is a Walker_Category_Checklist instance.
+ * @param bool $checked_ontop Optional. Whether to move checked items out of the hierarchy and to
+ * the top of the list. Default true.
*/
function wp_category_checklist( $post_id = 0, $descendants_and_self = 0, $selected_cats = false, $popular_cats = false, $walker = null, $checked_ontop = true ) {
wp_terms_checklist( $post_id, array(
@@ -126,15 +159,29 @@ function wp_category_checklist( $post_id = 0, $descendants_and_self = 0, $select
}
/**
- * Output an unordered list of checkbox elements labelled
- * with term names. Taxonomy independent version of wp_category_checklist().
+ * Output an unordered list of checkbox input elements labelled with term names.
+ *
+ * Taxonomy-independent version of wp_category_checklist().
*
* @since 3.0.0
*
- * @param int $post_id
- * @param array $args
+ * @param int $post_id Optional. Post ID. Default 0.
+ * @param array|string $args {
+ * Optional. Array or string of arguments for generating a terms checklist. Default empty array.
+ *
+ * @type int $descendants_and_self ID of the category to output along with its descendants.
+ * Default 0.
+ * @type array $selected_cats List of categories to mark as checked. Default false.
+ * @type array $popular_cats List of categories to receive the "popular-category" class.
+ * Default false.
+ * @type object $walker Walker object to use to build the output.
+ * Default is a Walker_Category_Checklist instance.
+ * @type string $taxonomy Taxonomy to generate the checklist for. Default 'category'.
+ * @type bool $checked_ontop Whether to move checked items out of the hierarchy and to
+ * the top of the list. Default true.
+ * }
*/
-function wp_terms_checklist($post_id = 0, $args = array()) {
+function wp_terms_checklist( $post_id = 0, $args = array() ) {
$defaults = array(
'descendants_and_self' => 0,
'selected_cats' => false,
@@ -143,41 +190,68 @@ function wp_terms_checklist($post_id = 0, $args = array()) {
'taxonomy' => 'category',
'checked_ontop' => true
);
- $args = apply_filters( 'wp_terms_checklist_args', $args, $post_id );
- extract( wp_parse_args($args, $defaults), EXTR_SKIP );
+ /**
+ * Filter the taxonomy terms checklist arguments.
+ *
+ * @since 3.4.0
+ *
+ * @see wp_terms_checklist()
+ *
+ * @param array $args An array of arguments.
+ * @param int $post_id The post ID.
+ */
+ $params = apply_filters( 'wp_terms_checklist_args', $args, $post_id );
- if ( empty($walker) || !is_a($walker, 'Walker') )
- $walker = new Walker_Category_Checklist;
+ $r = wp_parse_args( $params, $defaults );
- $descendants_and_self = (int) $descendants_and_self;
+ if ( empty( $r['walker'] ) || ! ( $r['walker'] instanceof Walker ) ) {
+ $walker = new Walker_Category_Checklist;
+ } else {
+ $walker = $r['walker'];
+ }
- $args = array('taxonomy' => $taxonomy);
+ $taxonomy = $r['taxonomy'];
+ $descendants_and_self = (int) $r['descendants_and_self'];
- $tax = get_taxonomy($taxonomy);
- $args['disabled'] = !current_user_can($tax->cap->assign_terms);
+ $args = array( 'taxonomy' => $taxonomy );
- 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();
+ $tax = get_taxonomy( $taxonomy );
+ $args['disabled'] = ! current_user_can( $tax->cap->assign_terms );
- 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 ) );
+ $args['list_only'] = ! empty( $r['list_only'] );
+ if ( is_array( $r['selected_cats'] ) ) {
+ $args['selected_cats'] = $r['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( $r['popular_cats'] ) ) {
+ $args['popular_cats'] = $r['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 ) );
+ $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'));
+ $categories = (array) get_terms( $taxonomy, array( 'get' => 'all' ) );
}
- if ( $checked_ontop ) {
+ if ( $r['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 );
@@ -190,24 +264,24 @@ function wp_terms_checklist($post_id = 0, $args = array()) {
}
// Put checked cats on top
- echo call_user_func_array(array(&$walker, 'walk'), array($checked_categories, 0, $args));
+ 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));
+ echo call_user_func_array( array( $walker, 'walk' ), array( $categories, 0, $args ) );
}
/**
* Retrieve a list of the most popular terms from the specified taxonomy.
*
* If the $echo argument is true then the elements for a list of checkbox
- * elements labelled with the names of the selected terms is output.
+ * `` elements labelled with the names of the selected terms is output.
* If the $post_ID global isn't empty then the terms associated with that
* post will be marked as checked.
*
* @since 2.5.0
*
* @param string $taxonomy Taxonomy to retrieve terms from.
- * @param int $default Unused.
+ * @param int $default Not used.
* @param int $number Number of terms to retrieve. Defaults to 10.
* @param bool $echo Optionally output the list as well. Defaults to true.
* @return array List of popular term IDs.
@@ -235,8 +309,11 @@ function wp_popular_terms_checklist( $taxonomy, $default = 0, $number = 10, $ech
@@ -250,16 +327,19 @@ function wp_popular_terms_checklist( $taxonomy, $default = 0, $number = 10, $ech
*
* @since 2.5.1
*
- * @param unknown_type $link_id
+ * @param int $link_id
*/
function wp_link_category_checklist( $link_id = 0 ) {
$default = 1;
+ $checked_categories = array();
+
if ( $link_id ) {
$checked_categories = wp_get_link_cats( $link_id );
// No selected categories, strange
- if ( ! count( $checked_categories ) )
+ if ( ! count( $checked_categories ) ) {
$checked_categories[] = $default;
+ }
} else {
$checked_categories[] = $default;
}
@@ -271,19 +351,20 @@ function wp_link_category_checklist( $link_id = 0 ) {
foreach ( $categories as $category ) {
$cat_id = $category->term_id;
+
+ /** This filter is documented in wp-includes/category-template.php */
$name = esc_html( apply_filters( 'the_category', $category->name ) );
$checked = in_array( $cat_id, $checked_categories ) ? ' checked="checked"' : '';
echo '";
}
}
-// adds hidden fields with the data for use in the inline editor for posts and pages
/**
- * {@internal Missing Short Description}}
+ * Adds hidden fields with the data for use in the inline editor for posts and pages.
*
* @since 2.7.0
*
- * @param unknown_type $post
+ * @param WP_Post $post Post object.
*/
function get_inline_data($post) {
$post_type_object = get_post_type_object($post->post_type);
@@ -292,10 +373,11 @@ function get_inline_data($post) {
$title = esc_textarea( trim( $post->post_title ) );
+ /** This filter is documented in wp-admin/edit-tag-form.php */
echo '