2015-09-14 04:59:24 +02:00
|
|
|
<?php
|
|
|
|
/**
|
|
|
|
* Post API: Walker_PageDropdown class
|
|
|
|
*
|
|
|
|
* @package WordPress
|
2015-09-22 15:58:24 +02:00
|
|
|
* @subpackage Post
|
2015-09-14 04:59:24 +02:00
|
|
|
* @since 4.4.0
|
|
|
|
*/
|
|
|
|
|
|
|
|
/**
|
2015-09-22 15:58:24 +02:00
|
|
|
* Core class used to create an HTML drop-down list of pages.
|
2015-09-14 04:59:24 +02:00
|
|
|
*
|
|
|
|
* @since 2.1.0
|
2015-09-22 15:58:24 +02:00
|
|
|
*
|
|
|
|
* @see Walker
|
2015-09-14 04:59:24 +02:00
|
|
|
*/
|
|
|
|
class Walker_PageDropdown extends Walker {
|
2016-03-22 18:51:27 +01:00
|
|
|
|
2015-09-14 04:59:24 +02:00
|
|
|
/**
|
2016-03-22 18:51:27 +01:00
|
|
|
* What the class handles.
|
2015-12-16 17:36:28 +01:00
|
|
|
*
|
2015-09-14 04:59:24 +02:00
|
|
|
* @since 2.1.0
|
|
|
|
* @var string
|
2016-03-22 18:51:27 +01:00
|
|
|
*
|
|
|
|
* @see Walker::$tree_type
|
2015-09-14 04:59:24 +02:00
|
|
|
*/
|
|
|
|
public $tree_type = 'page';
|
|
|
|
|
|
|
|
/**
|
2016-03-22 18:51:27 +01:00
|
|
|
* Database fields to use.
|
2015-12-16 17:36:28 +01:00
|
|
|
*
|
2015-09-14 04:59:24 +02:00
|
|
|
* @since 2.1.0
|
2016-03-22 18:51:27 +01:00
|
|
|
* @var array
|
|
|
|
*
|
2015-12-16 17:36:28 +01:00
|
|
|
* @see Walker::$db_fields
|
2015-09-14 04:59:24 +02:00
|
|
|
* @todo Decouple this
|
|
|
|
*/
|
2017-12-01 00:11:00 +01:00
|
|
|
public $db_fields = array(
|
|
|
|
'parent' => 'post_parent',
|
|
|
|
'id' => 'ID',
|
|
|
|
);
|
2015-09-14 04:59:24 +02:00
|
|
|
|
|
|
|
/**
|
2015-12-16 17:36:28 +01:00
|
|
|
* Starts the element output.
|
|
|
|
*
|
2015-09-14 04:59:24 +02:00
|
|
|
* @since 2.1.0
|
Code Modernization: Fix reserved keyword and parameter name mismatches for parent/child classes in `Walker::start_el()`.
In the parent class, renames the parameter `$object` to `$data_object`.
Why? `object` is a PHP reserved keyword.
In each child class: renames the corresponding parameter to match the parent's method signature.
Why?
PHP 8 introduces the ability to pass named arguments to function/method calls. This means the child and parent method signatures (i.e. parameter names) need to match.
Changes for readability:
- `@since` clearly specifies the original parameter name and its new name as well as why the change happened.
- in methods longer than a single line, the generic parameter is reassigned to the original parameter restoring it for context for use within the method. An inline comment is added to explain why this reassignment is made.
- in cases where the original parameter name was too generic, renamed (when reassigning) to a more descriptive name for use within the method.
Follow-up to [7737], [8900], [8970], [14248], [15077], [16100], [25642], [25644], [37051], [37054], [37056], [46271], [47189].
Props jrf, hellofromTonya, sergeybiryukov, azaozz, desrosj, johnbillion.
See #51553.
Built from https://develop.svn.wordpress.org/trunk@51739
git-svn-id: http://core.svn.wordpress.org/trunk@51347 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2021-09-08 17:36:59 +02:00
|
|
|
* @since 5.9.0 Renamed `$page` to `$data_object` to match parent class for PHP 8 named parameter support.
|
2015-09-14 04:59:24 +02:00
|
|
|
*
|
2015-12-16 17:36:28 +01:00
|
|
|
* @see Walker::start_el()
|
|
|
|
*
|
Code Modernization: Fix reserved keyword and parameter name mismatches for parent/child classes in `Walker::start_el()`.
In the parent class, renames the parameter `$object` to `$data_object`.
Why? `object` is a PHP reserved keyword.
In each child class: renames the corresponding parameter to match the parent's method signature.
Why?
PHP 8 introduces the ability to pass named arguments to function/method calls. This means the child and parent method signatures (i.e. parameter names) need to match.
Changes for readability:
- `@since` clearly specifies the original parameter name and its new name as well as why the change happened.
- in methods longer than a single line, the generic parameter is reassigned to the original parameter restoring it for context for use within the method. An inline comment is added to explain why this reassignment is made.
- in cases where the original parameter name was too generic, renamed (when reassigning) to a more descriptive name for use within the method.
Follow-up to [7737], [8900], [8970], [14248], [15077], [16100], [25642], [25644], [37051], [37054], [37056], [46271], [47189].
Props jrf, hellofromTonya, sergeybiryukov, azaozz, desrosj, johnbillion.
See #51553.
Built from https://develop.svn.wordpress.org/trunk@51739
git-svn-id: http://core.svn.wordpress.org/trunk@51347 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2021-09-08 17:36:59 +02:00
|
|
|
* @param string $output Used to append additional content. Passed by reference.
|
|
|
|
* @param WP_Post $data_object 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).
|
2015-09-14 04:59:24 +02:00
|
|
|
*/
|
Code Modernization: Fix reserved keyword and parameter name mismatches for parent/child classes in `Walker::start_el()`.
In the parent class, renames the parameter `$object` to `$data_object`.
Why? `object` is a PHP reserved keyword.
In each child class: renames the corresponding parameter to match the parent's method signature.
Why?
PHP 8 introduces the ability to pass named arguments to function/method calls. This means the child and parent method signatures (i.e. parameter names) need to match.
Changes for readability:
- `@since` clearly specifies the original parameter name and its new name as well as why the change happened.
- in methods longer than a single line, the generic parameter is reassigned to the original parameter restoring it for context for use within the method. An inline comment is added to explain why this reassignment is made.
- in cases where the original parameter name was too generic, renamed (when reassigning) to a more descriptive name for use within the method.
Follow-up to [7737], [8900], [8970], [14248], [15077], [16100], [25642], [25644], [37051], [37054], [37056], [46271], [47189].
Props jrf, hellofromTonya, sergeybiryukov, azaozz, desrosj, johnbillion.
See #51553.
Built from https://develop.svn.wordpress.org/trunk@51739
git-svn-id: http://core.svn.wordpress.org/trunk@51347 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2021-09-08 17:36:59 +02:00
|
|
|
public function start_el( &$output, $data_object, $depth = 0, $args = array(), $id = 0 ) {
|
|
|
|
// Restores the more descriptive, specific name for use within this method.
|
|
|
|
$page = $data_object;
|
|
|
|
$pad = str_repeat( ' ', $depth * 3 );
|
2015-09-14 04:59:24 +02:00
|
|
|
|
|
|
|
if ( ! isset( $args['value_field'] ) || ! isset( $page->{$args['value_field']} ) ) {
|
|
|
|
$args['value_field'] = 'ID';
|
|
|
|
}
|
|
|
|
|
2017-12-01 00:11:00 +01:00
|
|
|
$output .= "\t<option class=\"level-$depth\" value=\"" . esc_attr( $page->{$args['value_field']} ) . '"';
|
|
|
|
if ( $page->ID == $args['selected'] ) {
|
2015-09-14 04:59:24 +02:00
|
|
|
$output .= ' selected="selected"';
|
2017-12-01 00:11:00 +01:00
|
|
|
}
|
2015-09-14 04:59:24 +02:00
|
|
|
$output .= '>';
|
|
|
|
|
|
|
|
$title = $page->post_title;
|
|
|
|
if ( '' === $title ) {
|
2019-09-03 02:41:05 +02:00
|
|
|
/* translators: %d: ID of a post. */
|
2015-09-14 04:59:24 +02:00
|
|
|
$title = sprintf( __( '#%d (no title)' ), $page->ID );
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
2016-05-22 20:50:28 +02:00
|
|
|
* Filters the page title when creating an HTML drop-down list of pages.
|
2015-09-14 04:59:24 +02:00
|
|
|
*
|
|
|
|
* @since 3.1.0
|
|
|
|
*
|
2018-12-20 21:04:50 +01:00
|
|
|
* @param string $title Page title.
|
|
|
|
* @param WP_Post $page Page data object.
|
2015-09-14 04:59:24 +02:00
|
|
|
*/
|
|
|
|
$title = apply_filters( 'list_pages', $title, $page );
|
2015-12-16 17:36:28 +01:00
|
|
|
|
2015-09-14 04:59:24 +02:00
|
|
|
$output .= $pad . esc_html( $title );
|
|
|
|
$output .= "</option>\n";
|
|
|
|
}
|
|
|
|
}
|