From 1ccae571d94a73679067799f5547aa2e6795f66c Mon Sep 17 00:00:00 2001 From: Scott Taylor Date: Mon, 14 Sep 2015 02:58:40 +0000 Subject: [PATCH] Move `Walker_Page` and `Walker_PageDropdown` into their own files via `svn cp`. Remove them from `post-template.php`. Load them in `post.php`. `post-template.php` loads after `post.php` in `wp-settings.php`. It could probably also be loaded in `post.php`, but avoiding that for the moment. See #33413. git-svn-id: https://develop.svn.wordpress.org/trunk@34109 602fd350-edb4-49c9-b593-d223f7449a82 --- .../class-walker-page-dropdown.php | 73 ++++++ src/wp-includes/class-walker-page.php | 154 +++++++++++++ src/wp-includes/post-template.php | 211 ------------------ src/wp-includes/post.php | 9 + 4 files changed, 236 insertions(+), 211 deletions(-) create mode 100644 src/wp-includes/class-walker-page-dropdown.php create mode 100644 src/wp-includes/class-walker-page.php diff --git a/src/wp-includes/class-walker-page-dropdown.php b/src/wp-includes/class-walker-page-dropdown.php new file mode 100644 index 0000000000..ab6c222c30 --- /dev/null +++ b/src/wp-includes/class-walker-page-dropdown.php @@ -0,0 +1,73 @@ + 'post_parent', 'id' => 'ID'); + + /** + * @see Walker::start_el() + * @since 2.1.0 + * + * @param string $output Passed by reference. Used to append additional content. + * @param object $page Page data object. + * @param int $depth Depth of page in reference to parent pages. Used for padding. + * @param array $args Uses 'selected' argument for selected page to set selected HTML attribute for option + * element. Uses 'value_field' argument to fill "value" attribute. See {@see wp_dropdown_pages()}. + * @param int $id + */ + public function start_el( &$output, $page, $depth = 0, $args = array(), $id = 0 ) { + $pad = str_repeat(' ', $depth * 3); + + if ( ! isset( $args['value_field'] ) || ! isset( $page->{$args['value_field']} ) ) { + $args['value_field'] = 'ID'; + } + + $output .= "\t\n"; + } +} diff --git a/src/wp-includes/class-walker-page.php b/src/wp-includes/class-walker-page.php new file mode 100644 index 0000000000..5b21a050b5 --- /dev/null +++ b/src/wp-includes/class-walker-page.php @@ -0,0 +1,154 @@ + 'post_parent', 'id' => 'ID'); + + /** + * @see Walker::start_lvl() + * @since 2.1.0 + * + * @param string $output Passed by reference. Used to append additional content. + * @param int $depth Depth of page. Used for padding. + * @param array $args + */ + public function start_lvl( &$output, $depth = 0, $args = array() ) { + $indent = str_repeat("\t", $depth); + $output .= "\n$indent\n"; + } + + /** + * @see Walker::start_el() + * @since 2.1.0 + * + * @param string $output Passed by reference. Used to append additional content. + * @param object $page Page data object. + * @param int $depth Depth of page. Used for padding. + * @param int $current_page Page ID. + * @param array $args + */ + public function start_el( &$output, $page, $depth = 0, $args = array(), $current_page = 0 ) { + if ( $depth ) { + $indent = str_repeat( "\t", $depth ); + } else { + $indent = ''; + } + + $css_class = array( 'page_item', 'page-item-' . $page->ID ); + + if ( isset( $args['pages_with_children'][ $page->ID ] ) ) { + $css_class[] = 'page_item_has_children'; + } + + if ( ! empty( $current_page ) ) { + $_current_page = get_post( $current_page ); + if ( $_current_page && in_array( $page->ID, $_current_page->ancestors ) ) { + $css_class[] = 'current_page_ancestor'; + } + if ( $page->ID == $current_page ) { + $css_class[] = 'current_page_item'; + } elseif ( $_current_page && $page->ID == $_current_page->post_parent ) { + $css_class[] = 'current_page_parent'; + } + } elseif ( $page->ID == get_option('page_for_posts') ) { + $css_class[] = 'current_page_parent'; + } + + /** + * Filter the list of CSS classes to include with each page item in the list. + * + * @since 2.8.0 + * + * @see wp_list_pages() + * + * @param array $css_class An array of CSS classes to be applied + * to each list item. + * @param WP_Post $page Page data object. + * @param int $depth Depth of page, used for padding. + * @param array $args An array of arguments. + * @param int $current_page ID of the current page. + */ + $css_classes = implode( ' ', apply_filters( 'page_css_class', $css_class, $page, $depth, $args, $current_page ) ); + + if ( '' === $page->post_title ) { + /* translators: %d: ID of a post */ + $page->post_title = sprintf( __( '#%d (no title)' ), $page->ID ); + } + + $args['link_before'] = empty( $args['link_before'] ) ? '' : $args['link_before']; + $args['link_after'] = empty( $args['link_after'] ) ? '' : $args['link_after']; + + /** This filter is documented in wp-includes/post-template.php */ + $output .= $indent . sprintf( + '
  • %s%s%s', + $css_classes, + get_permalink( $page->ID ), + $args['link_before'], + apply_filters( 'the_title', $page->post_title, $page->ID ), + $args['link_after'] + ); + + if ( ! empty( $args['show_date'] ) ) { + if ( 'modified' == $args['show_date'] ) { + $time = $page->post_modified; + } else { + $time = $page->post_date; + } + + $date_format = empty( $args['date_format'] ) ? '' : $args['date_format']; + $output .= " " . mysql2date( $date_format, $time ); + } + } + + /** + * @see Walker::end_el() + * @since 2.1.0 + * + * @param string $output Passed by reference. Used to append additional content. + * @param object $page Page data object. Not used. + * @param int $depth Depth of page. Not Used. + * @param array $args + */ + public function end_el( &$output, $page, $depth = 0, $args = array() ) { + $output .= "
  • \n"; + } + +} diff --git a/src/wp-includes/post-template.php b/src/wp-includes/post-template.php index 09c7707417..f2354bc37e 100644 --- a/src/wp-includes/post-template.php +++ b/src/wp-includes/post-template.php @@ -1321,217 +1321,6 @@ function walk_page_dropdown_tree() { return call_user_func_array(array($walker, 'walk'), $args); } -/** - * Create HTML list of pages. - * - * @since 2.1.0 - * @uses Walker - */ -class Walker_Page extends Walker { - /** - * @see Walker::$tree_type - * @since 2.1.0 - * @var string - */ - public $tree_type = 'page'; - - /** - * @see Walker::$db_fields - * @since 2.1.0 - * @todo Decouple this. - * @var array - */ - public $db_fields = array ('parent' => 'post_parent', 'id' => 'ID'); - - /** - * @see Walker::start_lvl() - * @since 2.1.0 - * - * @param string $output Passed by reference. Used to append additional content. - * @param int $depth Depth of page. Used for padding. - * @param array $args - */ - public function start_lvl( &$output, $depth = 0, $args = array() ) { - $indent = str_repeat("\t", $depth); - $output .= "\n$indent\n"; - } - - /** - * @see Walker::start_el() - * @since 2.1.0 - * - * @param string $output Passed by reference. Used to append additional content. - * @param object $page Page data object. - * @param int $depth Depth of page. Used for padding. - * @param int $current_page Page ID. - * @param array $args - */ - public function start_el( &$output, $page, $depth = 0, $args = array(), $current_page = 0 ) { - if ( $depth ) { - $indent = str_repeat( "\t", $depth ); - } else { - $indent = ''; - } - - $css_class = array( 'page_item', 'page-item-' . $page->ID ); - - if ( isset( $args['pages_with_children'][ $page->ID ] ) ) { - $css_class[] = 'page_item_has_children'; - } - - if ( ! empty( $current_page ) ) { - $_current_page = get_post( $current_page ); - if ( $_current_page && in_array( $page->ID, $_current_page->ancestors ) ) { - $css_class[] = 'current_page_ancestor'; - } - if ( $page->ID == $current_page ) { - $css_class[] = 'current_page_item'; - } elseif ( $_current_page && $page->ID == $_current_page->post_parent ) { - $css_class[] = 'current_page_parent'; - } - } elseif ( $page->ID == get_option('page_for_posts') ) { - $css_class[] = 'current_page_parent'; - } - - /** - * Filter the list of CSS classes to include with each page item in the list. - * - * @since 2.8.0 - * - * @see wp_list_pages() - * - * @param array $css_class An array of CSS classes to be applied - * to each list item. - * @param WP_Post $page Page data object. - * @param int $depth Depth of page, used for padding. - * @param array $args An array of arguments. - * @param int $current_page ID of the current page. - */ - $css_classes = implode( ' ', apply_filters( 'page_css_class', $css_class, $page, $depth, $args, $current_page ) ); - - if ( '' === $page->post_title ) { - /* translators: %d: ID of a post */ - $page->post_title = sprintf( __( '#%d (no title)' ), $page->ID ); - } - - $args['link_before'] = empty( $args['link_before'] ) ? '' : $args['link_before']; - $args['link_after'] = empty( $args['link_after'] ) ? '' : $args['link_after']; - - /** This filter is documented in wp-includes/post-template.php */ - $output .= $indent . sprintf( - '
  • %s%s%s', - $css_classes, - get_permalink( $page->ID ), - $args['link_before'], - apply_filters( 'the_title', $page->post_title, $page->ID ), - $args['link_after'] - ); - - if ( ! empty( $args['show_date'] ) ) { - if ( 'modified' == $args['show_date'] ) { - $time = $page->post_modified; - } else { - $time = $page->post_date; - } - - $date_format = empty( $args['date_format'] ) ? '' : $args['date_format']; - $output .= " " . mysql2date( $date_format, $time ); - } - } - - /** - * @see Walker::end_el() - * @since 2.1.0 - * - * @param string $output Passed by reference. Used to append additional content. - * @param object $page Page data object. Not used. - * @param int $depth Depth of page. Not Used. - * @param array $args - */ - public function end_el( &$output, $page, $depth = 0, $args = array() ) { - $output .= "
  • \n"; - } - -} - -/** - * Create HTML dropdown list of pages. - * - * @since 2.1.0 - * @uses Walker - */ -class Walker_PageDropdown extends Walker { - /** - * @see Walker::$tree_type - * @since 2.1.0 - * @var string - */ - public $tree_type = 'page'; - - /** - * @see Walker::$db_fields - * @since 2.1.0 - * @todo Decouple this - * @var array - */ - public $db_fields = array ('parent' => 'post_parent', 'id' => 'ID'); - - /** - * @see Walker::start_el() - * @since 2.1.0 - * - * @param string $output Passed by reference. Used to append additional content. - * @param object $page Page data object. - * @param int $depth Depth of page in reference to parent pages. Used for padding. - * @param array $args Uses 'selected' argument for selected page to set selected HTML attribute for option - * element. Uses 'value_field' argument to fill "value" attribute. See {@see wp_dropdown_pages()}. - * @param int $id - */ - public function start_el( &$output, $page, $depth = 0, $args = array(), $id = 0 ) { - $pad = str_repeat(' ', $depth * 3); - - if ( ! isset( $args['value_field'] ) || ! isset( $page->{$args['value_field']} ) ) { - $args['value_field'] = 'ID'; - } - - $output .= "\t\n"; - } -} - // // Attachments // diff --git a/src/wp-includes/post.php b/src/wp-includes/post.php index 5ab158687a..42a479e3db 100644 --- a/src/wp-includes/post.php +++ b/src/wp-includes/post.php @@ -7,5 +7,14 @@ * @since 1.5.0 */ +/** Core posts functionality */ require_once( ABSPATH . WPINC . '/post-functions.php' ); + +/** Walker_Page class */ +require_once( ABSPATH . WPINC . '/class-walker-page.php' ); + +/** Walker_PageDropdown class */ +require_once( ABSPATH . WPINC . '/class-walker-page-dropdown.php' ); + +/** WP_Post class */ require_once( ABSPATH . WPINC . '/class-wp-post.php' );