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. Built from https://develop.svn.wordpress.org/trunk@34109 git-svn-id: http://core.svn.wordpress.org/trunk@34077 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
parent
07c6fad006
commit
4cec121d0b
|
@ -0,0 +1,73 @@
|
|||
<?php
|
||||
/**
|
||||
* Post API: Walker_PageDropdown class
|
||||
*
|
||||
* @package WordPress
|
||||
* @subpackage Template
|
||||
* @since 4.4.0
|
||||
*/
|
||||
|
||||
/**
|
||||
* 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<option class=\"level-$depth\" value=\"" . esc_attr( $page->{$args['value_field']} ) . "\"";
|
||||
if ( $page->ID == $args['selected'] )
|
||||
$output .= ' selected="selected"';
|
||||
$output .= '>';
|
||||
|
||||
$title = $page->post_title;
|
||||
if ( '' === $title ) {
|
||||
/* translators: %d: ID of a post */
|
||||
$title = sprintf( __( '#%d (no title)' ), $page->ID );
|
||||
}
|
||||
|
||||
/**
|
||||
* Filter the page title when creating an HTML drop-down list of pages.
|
||||
*
|
||||
* @since 3.1.0
|
||||
*
|
||||
* @param string $title Page title.
|
||||
* @param object $page Page data object.
|
||||
*/
|
||||
$title = apply_filters( 'list_pages', $title, $page );
|
||||
$output .= $pad . esc_html( $title );
|
||||
$output .= "</option>\n";
|
||||
}
|
||||
}
|
|
@ -0,0 +1,154 @@
|
|||
<?php
|
||||
/**
|
||||
* Post API: Walker_Page class
|
||||
*
|
||||
* @package WordPress
|
||||
* @subpackage Template
|
||||
* @since 4.4.0
|
||||
*/
|
||||
|
||||
/**
|
||||
* 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<ul class='children'>\n";
|
||||
}
|
||||
|
||||
/**
|
||||
* @see Walker::end_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 end_lvl( &$output, $depth = 0, $args = array() ) {
|
||||
$indent = str_repeat("\t", $depth);
|
||||
$output .= "$indent</ul>\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(
|
||||
'<li class="%s"><a href="%s">%s%s%s</a>',
|
||||
$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 .= "</li>\n";
|
||||
}
|
||||
|
||||
}
|
|
@ -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<ul class='children'>\n";
|
||||
}
|
||||
|
||||
/**
|
||||
* @see Walker::end_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 end_lvl( &$output, $depth = 0, $args = array() ) {
|
||||
$indent = str_repeat("\t", $depth);
|
||||
$output .= "$indent</ul>\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(
|
||||
'<li class="%s"><a href="%s">%s%s%s</a>',
|
||||
$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 .= "</li>\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<option class=\"level-$depth\" value=\"" . esc_attr( $page->{$args['value_field']} ) . "\"";
|
||||
if ( $page->ID == $args['selected'] )
|
||||
$output .= ' selected="selected"';
|
||||
$output .= '>';
|
||||
|
||||
$title = $page->post_title;
|
||||
if ( '' === $title ) {
|
||||
/* translators: %d: ID of a post */
|
||||
$title = sprintf( __( '#%d (no title)' ), $page->ID );
|
||||
}
|
||||
|
||||
/**
|
||||
* Filter the page title when creating an HTML drop-down list of pages.
|
||||
*
|
||||
* @since 3.1.0
|
||||
*
|
||||
* @param string $title Page title.
|
||||
* @param object $page Page data object.
|
||||
*/
|
||||
$title = apply_filters( 'list_pages', $title, $page );
|
||||
$output .= $pad . esc_html( $title );
|
||||
$output .= "</option>\n";
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// Attachments
|
||||
//
|
||||
|
|
|
@ -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' );
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
*
|
||||
* @global string $wp_version
|
||||
*/
|
||||
$wp_version = '4.4-alpha-34108';
|
||||
$wp_version = '4.4-alpha-34109';
|
||||
|
||||
/**
|
||||
* Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.
|
||||
|
|
Loading…
Reference in New Issue