diff --git src/wp-admin/includes/class-walker-category-checklist.php src/wp-admin/includes/class-walker-category-checklist.php
deleted file mode 100644
index cd38bfc..0000000
--- src/wp-admin/includes/class-walker-category-checklist.php
+++ /dev/null
@@ -1,125 +0,0 @@
-<?php
-/**
- * Taxonomy API: Walker_Category_Checklist class
- *
- * @package WordPress
- * @subpackage Administration
- * @since 4.4.0
- */
-
-/**
- * Core walker class to output an unordered list of category checkbox input elements.
- *
- * @since 2.5.1
- *
- * @see Walker
- * @see wp_category_checklist()
- * @see wp_terms_checklist()
- */
-class Walker_Category_Checklist extends Walker {
-	public $tree_type = 'category';
-	public $db_fields = array ('parent' => 'parent', 'id' => 'term_id'); //TODO: decouple this
-
-	/**
-	 * Starts the list before the elements are added.
-	 *
-	 * @see Walker:start_lvl()
-	 *
-	 * @since 2.5.1
-	 *
-	 * @param string $output Passed by reference. Used to append additional content.
-	 * @param int    $depth  Depth of category. Used for tab indentation.
-	 * @param array  $args   An array of arguments. @see wp_terms_checklist()
-	 */
-	public function start_lvl( &$output, $depth = 0, $args = array() ) {
-		$indent = str_repeat("\t", $depth);
-		$output .= "$indent<ul class='children'>\n";
-	}
-
-	/**
-	 * Ends the list of after the elements are added.
-	 *
-	 * @see Walker::end_lvl()
-	 *
-	 * @since 2.5.1
-	 *
-	 * @param string $output Passed by reference. Used to append additional content.
-	 * @param int    $depth  Depth of category. Used for tab indentation.
-	 * @param array  $args   An array of arguments. @see wp_terms_checklist()
-	 */
-	public function end_lvl( &$output, $depth = 0, $args = array() ) {
-		$indent = str_repeat("\t", $depth);
-		$output .= "$indent</ul>\n";
-	}
-
-	/**
-	 * Start the element output.
-	 *
-	 * @see Walker::start_el()
-	 *
-	 * @since 2.5.1
-	 *
-	 * @param string $output   Passed by reference. Used to append additional content.
-	 * @param object $category The current term object.
-	 * @param int    $depth    Depth of the term in reference to parents. Default 0.
-	 * @param array  $args     An array of arguments. @see wp_terms_checklist()
-	 * @param int    $id       ID of the current term.
-	 */
-	public function start_el( &$output, $category, $depth = 0, $args = array(), $id = 0 ) {
-		if ( empty( $args['taxonomy'] ) ) {
-			$taxonomy = 'category';
-		} else {
-			$taxonomy = $args['taxonomy'];
-		}
-
-		if ( $taxonomy == 'category' ) {
-			$name = 'post_category';
-		} else {
-			$name = 'tax_input[' . $taxonomy . ']';
-		}
-
-		$args['popular_cats'] = empty( $args['popular_cats'] ) ? array() : $args['popular_cats'];
-		$class = in_array( $category->term_id, $args['popular_cats'] ) ? ' class="popular-category"' : '';
-
-		$args['selected_cats'] = empty( $args['selected_cats'] ) ? array() : $args['selected_cats'];
-
-		if ( ! empty( $args['list_only'] ) ) {
-			$aria_cheched = 'false';
-			$inner_class = 'category';
-
-			if ( in_array( $category->term_id, $args['selected_cats'] ) ) {
-				$inner_class .= ' selected';
-				$aria_cheched = 'true';
-			}
-
-			/** This filter is documented in wp-includes/category-template.php */
-			$output .= "\n" . '<li' . $class . '>' .
-				'<div class="' . $inner_class . '" data-term-id=' . $category->term_id .
-				' tabindex="0" role="checkbox" aria-checked="' . $aria_cheched . '">' .
-				esc_html( apply_filters( 'the_category', $category->name ) ) . '</div>';
-		} else {
-			/** This filter is documented in wp-includes/category-template.php */
-			$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, $args['selected_cats'] ), true, false ) .
-				disabled( empty( $args['disabled'] ), false, false ) . ' /> ' .
-				esc_html( apply_filters( 'the_category', $category->name ) ) . '</label>';
-		}
-	}
-
-	/**
-	 * Ends the element output, if needed.
-	 *
-	 * @see Walker::end_el()
-	 *
-	 * @since 2.5.1
-	 *
-	 * @param string $output   Passed by reference. Used to append additional content.
-	 * @param object $category The current term object.
-	 * @param int    $depth    Depth of the term in reference to parents. Default 0.
-	 * @param array  $args     An array of arguments. @see wp_terms_checklist()
-	 */
-	public function end_el( &$output, $category, $depth = 0, $args = array() ) {
-		$output .= "</li>\n";
-	}
-}
diff --git src/wp-admin/includes/template.php src/wp-admin/includes/template.php
index 08a366f..75b9b7f 100644
--- src/wp-admin/includes/template.php
+++ src/wp-admin/includes/template.php
@@ -8,9 +8,6 @@
  * @subpackage Administration
  */
 
-/** Walker_Category_Checklist class */
-require_once( ABSPATH . 'wp-admin/includes/class-walker-category-checklist.php' );
-
 /** WP_Internal_Pointers class */
 require_once( ABSPATH . 'wp-admin/includes/class-wp-internal-pointers.php' );
 
@@ -19,160 +16,6 @@ require_once( ABSPATH . 'wp-admin/includes/class-wp-internal-pointers.php' );
 //
 
 /**
- * Output an unordered list of checkbox input elements labeled with category names.
- *
- * @since 2.5.1
- *
- * @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(
-		'taxonomy' => 'category',
-		'descendants_and_self' => $descendants_and_self,
-		'selected_cats' => $selected_cats,
-		'popular_cats' => $popular_cats,
-		'walker' => $walker,
-		'checked_ontop' => $checked_ontop
-	) );
-}
-
-/**
- * Output an unordered list of checkbox input elements labelled with term names.
- *
- * Taxonomy-independent version of wp_category_checklist().
- *
- * @since 3.0.0
- * @since 4.4.0 Introduced the `$echo` argument.
- *
- * @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.
- *     @type bool   $echo                 Whether to echo the generated markup. False to return the markup instead
- *                                        of echoing it. Default true.
- * }
- */
-function wp_terms_checklist( $post_id = 0, $args = array() ) {
- 	$defaults = array(
-		'descendants_and_self' => 0,
-		'selected_cats' => false,
-		'popular_cats' => false,
-		'walker' => null,
-		'taxonomy' => 'category',
-		'checked_ontop' => true,
-		'echo' => true,
-	);
-
-	/**
-	 * 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 );
-
-	$r = wp_parse_args( $params, $defaults );
-
-	if ( empty( $r['walker'] ) || ! ( $r['walker'] instanceof Walker ) ) {
-		$walker = new Walker_Category_Checklist;
-	} else {
-		$walker = $r['walker'];
-	}
-
-	$taxonomy = $r['taxonomy'];
-	$descendants_and_self = (int) $r['descendants_and_self'];
-
-	$args = array( 'taxonomy' => $taxonomy );
-
-	$tax = get_taxonomy( $taxonomy );
-	$args['disabled'] = ! current_user_can( $tax->cap->assign_terms );
-
-	$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
-		) );
-		$self = get_term( $descendants_and_self, $taxonomy );
-		array_unshift( $categories, $self );
-	} else {
-		$categories = (array) get_terms( $taxonomy, array( 'get' => 'all' ) );
-	}
-
-	$output = '';
-
-	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 );
-
-		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
-		$output .= call_user_func_array( array( $walker, 'walk' ), array( $checked_categories, 0, $args ) );
-	}
-	// Then the rest of them
-	$output .= call_user_func_array( array( $walker, 'walk' ), array( $categories, 0, $args ) );
-
-	if ( $r['echo'] ) {
-		echo $output;
-	}
-
-	return $output;
-}
-
-/**
  * 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
diff --git src/wp-includes/category-template.php src/wp-includes/category-template.php
index b989ed5..a2452db 100644
--- src/wp-includes/category-template.php
+++ src/wp-includes/category-template.php
@@ -1328,3 +1328,161 @@ function has_term( $term = '', $taxonomy = '', $post = null ) {
 
 	return $r;
 }
+
+
+/**
+ * Output an unordered list of checkbox input elements labeled with category names.
+ *
+ * @since 2.5.1
+ *
+ * @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(
+		'taxonomy' => 'category',
+		'descendants_and_self' => $descendants_and_self,
+		'selected_cats' => $selected_cats,
+		'popular_cats' => $popular_cats,
+		'walker' => $walker,
+		'checked_ontop' => $checked_ontop
+	) );
+}
+
+/**
+ * Output an unordered list of checkbox input elements labelled with term names.
+ *
+ * Taxonomy-independent version of wp_category_checklist().
+ *
+ * @since 3.0.0
+ * @since 4.4.0 Introduced the `$echo` argument.
+ * @since 4.5.0 Introduced the `$name` argument.
+ *
+ * @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.
+ *     @type bool   $echo                 Whether to echo the generated markup. False to return the markup instead
+ *                                        of echoing it. Default true.
+ *     @type string $name                 HTML name attribute for the form inputs. Default 'post_category' for
+ *                                        category taxonomy or `tax_input[ $taxonomy ]` for other taxonomies.
+ * }
+ */
+function wp_terms_checklist( $post_id = 0, $args = array() ) {
+	$defaults = array(
+		'descendants_and_self' => 0,
+		'selected_cats' => false,
+		'popular_cats' => false,
+		'walker' => null,
+		'taxonomy' => 'category',
+		'checked_ontop' => true,
+		'echo' => true,
+	);
+
+	/**
+	 * 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 );
+
+	$r = wp_parse_args( $params, $defaults );
+
+	if ( empty( $r['walker'] ) || ! ( $r['walker'] instanceof Walker ) ) {
+		$walker = new Walker_Category_Checklist;
+	} else {
+		$walker = $r['walker'];
+	}
+
+	$taxonomy = $r['taxonomy'];
+	$descendants_and_self = (int) $r['descendants_and_self'];
+
+	$args = array( 'taxonomy' => $taxonomy );
+
+	$tax = get_taxonomy( $taxonomy );
+	$args['disabled'] = ! current_user_can( $tax->cap->assign_terms );
+
+	$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
+		) );
+		$self = get_term( $descendants_and_self, $taxonomy );
+		array_unshift( $categories, $self );
+	} else {
+		$categories = (array) get_terms( $taxonomy, array( 'get' => 'all' ) );
+	}
+
+	$output = '';
+
+	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 );
+
+		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
+		$output .= call_user_func_array( array( $walker, 'walk' ), array( $checked_categories, 0, $args ) );
+	}
+	// Then the rest of them
+	$output .= call_user_func_array( array( $walker, 'walk' ), array( $categories, 0, $args ) );
+
+	if ( $r['echo'] ) {
+		echo $output;
+	}
+
+	return $output;
+}
diff --git src/wp-includes/class-walker-category-checklist.php src/wp-includes/class-walker-category-checklist.php
new file mode 100644
index 0000000..ad71c1a
--- /dev/null
+++ src/wp-includes/class-walker-category-checklist.php
@@ -0,0 +1,129 @@
+<?php
+/**
+ * Taxonomy API: Walker_Category_Checklist class
+ *
+ * @package WordPress
+ * @subpackage Administration
+ * @since 4.4.0
+ */
+
+/**
+ * Core walker class to output an unordered list of category checkbox input elements.
+ *
+ * @since 2.5.1
+ *
+ * @see Walker
+ * @see wp_category_checklist()
+ * @see wp_terms_checklist()
+ */
+class Walker_Category_Checklist extends Walker {
+	public $tree_type = 'category';
+	public $db_fields = array ('parent' => 'parent', 'id' => 'term_id'); //TODO: decouple this
+
+	/**
+	 * Starts the list before the elements are added.
+	 *
+	 * @see Walker:start_lvl()
+	 *
+	 * @since 2.5.1
+	 *
+	 * @param string $output Passed by reference. Used to append additional content.
+	 * @param int    $depth  Depth of category. Used for tab indentation.
+	 * @param array  $args   An array of arguments. @see wp_terms_checklist()
+	 */
+	public function start_lvl( &$output, $depth = 0, $args = array() ) {
+		$indent = str_repeat("\t", $depth);
+		$output .= "$indent<ul class='children'>\n";
+	}
+
+	/**
+	 * Ends the list of after the elements are added.
+	 *
+	 * @see Walker::end_lvl()
+	 *
+	 * @since 2.5.1
+	 *
+	 * @param string $output Passed by reference. Used to append additional content.
+	 * @param int    $depth  Depth of category. Used for tab indentation.
+	 * @param array  $args   An array of arguments. @see wp_terms_checklist()
+	 */
+	public function end_lvl( &$output, $depth = 0, $args = array() ) {
+		$indent = str_repeat("\t", $depth);
+		$output .= "$indent</ul>\n";
+	}
+
+	/**
+	 * Start the element output.
+	 *
+	 * @see Walker::start_el()
+	 *
+	 * @since 2.5.1
+	 *
+	 * @param string $output   Passed by reference. Used to append additional content.
+	 * @param object $category The current term object.
+	 * @param int    $depth    Depth of the term in reference to parents. Default 0.
+	 * @param array  $args     An array of arguments. @see wp_terms_checklist()
+	 * @param int    $id       ID of the current term.
+	 */
+	public function start_el( &$output, $category, $depth = 0, $args = array(), $id = 0 ) {
+		if ( empty( $args['taxonomy'] ) ) {
+			$taxonomy = 'category';
+		} else {
+			$taxonomy = $args['taxonomy'];
+		}
+
+		if ( $taxonomy == 'category' ) {
+			$name = 'post_category';
+		} else {
+			$name = 'tax_input[' . $taxonomy . ']';
+		}
+
+		if ( isset( $args['name'] ) ) {
+			$name = esc_attr( $args['name'] );
+		}
+
+		$args['popular_cats'] = empty( $args['popular_cats'] ) ? array() : $args['popular_cats'];
+		$class = in_array( $category->term_id, $args['popular_cats'] ) ? ' class="popular-category"' : '';
+
+		$args['selected_cats'] = empty( $args['selected_cats'] ) ? array() : $args['selected_cats'];
+
+		if ( ! empty( $args['list_only'] ) ) {
+			$aria_cheched = 'false';
+			$inner_class = 'category';
+
+			if ( in_array( $category->term_id, $args['selected_cats'] ) ) {
+				$inner_class .= ' selected';
+				$aria_cheched = 'true';
+			}
+
+			/** This filter is documented in wp-includes/category-template.php */
+			$output .= "\n" . '<li' . $class . '>' .
+				'<div class="' . $inner_class . '" data-term-id=' . $category->term_id .
+				' tabindex="0" role="checkbox" aria-checked="' . $aria_cheched . '">' .
+				esc_html( apply_filters( 'the_category', $category->name ) ) . '</div>';
+		} else {
+			/** This filter is documented in wp-includes/category-template.php */
+			$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, $args['selected_cats'] ), true, false ) .
+				disabled( empty( $args['disabled'] ), false, false ) . ' /> ' .
+				esc_html( apply_filters( 'the_category', $category->name ) ) . '</label>';
+		}
+	}
+
+	/**
+	 * Ends the element output, if needed.
+	 *
+	 * @see Walker::end_el()
+	 *
+	 * @since 2.5.1
+	 *
+	 * @param string $output   Passed by reference. Used to append additional content.
+	 * @param object $category The current term object.
+	 * @param int    $depth    Depth of the term in reference to parents. Default 0.
+	 * @param array  $args     An array of arguments. @see wp_terms_checklist()
+	 */
+	public function end_el( &$output, $category, $depth = 0, $args = array() ) {
+		$output .= "</li>\n";
+	}
+}
diff --git src/wp-settings.php src/wp-settings.php
index ef1d2cd..b270b30 100644
--- src/wp-settings.php
+++ src/wp-settings.php
@@ -149,6 +149,7 @@ require( ABSPATH . WPINC . '/post-thumbnail-template.php' );
 require( ABSPATH . WPINC . '/category.php' );
 require( ABSPATH . WPINC . '/class-walker-category.php' );
 require( ABSPATH . WPINC . '/class-walker-category-dropdown.php' );
+require( ABSPATH . WPINC . '/class-walker-category-checklist.php' );
 require( ABSPATH . WPINC . '/category-template.php' );
 require( ABSPATH . WPINC . '/comment.php' );
 require( ABSPATH . WPINC . '/class-wp-comment.php' );
