mirror of
https://github.com/WordPress/WordPress.git
synced 2024-09-06 20:58:21 +02:00
Prior to about 2013, many class methods lacked even access modifiers which made the `@access` notations that much more useful. Now that we've gotten to a point where the codebase is more mature from a maintenance perspective and we can finally remove these notations. Notable exceptions to this change include standalone functions notated as private as well as some classes still considered to represent "private" APIs. See #41452. Built from https://develop.svn.wordpress.org/trunk@41162 git-svn-id: http://core.svn.wordpress.org/trunk@41002 1a063a9b-81f0-0310-95a4-ce76da25c4cd
88 lines
2.2 KiB
PHP
88 lines
2.2 KiB
PHP
<?php
|
|
/**
|
|
* Post API: Walker_PageDropdown class
|
|
*
|
|
* @package WordPress
|
|
* @subpackage Post
|
|
* @since 4.4.0
|
|
*/
|
|
|
|
/**
|
|
* Core class used to create an HTML drop-down list of pages.
|
|
*
|
|
* @since 2.1.0
|
|
*
|
|
* @see Walker
|
|
*/
|
|
class Walker_PageDropdown extends Walker {
|
|
|
|
/**
|
|
* What the class handles.
|
|
*
|
|
* @since 2.1.0
|
|
* @var string
|
|
*
|
|
* @see Walker::$tree_type
|
|
*/
|
|
public $tree_type = 'page';
|
|
|
|
/**
|
|
* Database fields to use.
|
|
*
|
|
* @since 2.1.0
|
|
* @var array
|
|
*
|
|
* @see Walker::$db_fields
|
|
* @todo Decouple this
|
|
*/
|
|
public $db_fields = array( 'parent' => 'post_parent', 'id' => 'ID' );
|
|
|
|
/**
|
|
* Starts the element output.
|
|
*
|
|
* @since 2.1.0
|
|
*
|
|
* @see Walker::start_el()
|
|
*
|
|
* @param string $output Used to append additional content. Passed by reference.
|
|
* @param WP_Post $page Page data object.
|
|
* @param int $depth Optional. Depth of page in reference to parent pages. Used for padding.
|
|
* Default 0.
|
|
* @param array $args Optional. Uses 'selected' argument for selected page to set selected HTML
|
|
* attribute for option element. Uses 'value_field' argument to fill "value"
|
|
* attribute. See wp_dropdown_pages(). Default empty array.
|
|
* @param int $id Optional. ID of the current page. Default 0 (unused).
|
|
*/
|
|
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 );
|
|
}
|
|
|
|
/**
|
|
* Filters 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";
|
|
}
|
|
}
|