General: Cast $max_depth and $depth to an integer in the Walker class.

This ensures that the arguments are correctly interpreted when passed as a query string, i.e. when `wp_parse_args()` is involved. For example, `wp_list_pages( 'depth=0' )` should display a list of all pages to the maximum depth.

Follow-up to [57848].

Props freibergergarcia, peterwilsoncc, ahortin.
Fixes #61749.
Built from https://develop.svn.wordpress.org/trunk@58812


git-svn-id: http://core.svn.wordpress.org/trunk@58208 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
Sergey Biryukov 2024-07-26 07:56:13 +00:00
parent 213355eb80
commit ee3beccbd1
2 changed files with 12 additions and 5 deletions

View File

@ -135,6 +135,9 @@ class Walker {
return; return;
} }
$max_depth = (int) $max_depth;
$depth = (int) $depth;
$id_field = $this->db_fields['id']; $id_field = $this->db_fields['id'];
$id = $element->$id_field; $id = $element->$id_field;
@ -191,6 +194,8 @@ class Walker {
public function walk( $elements, $max_depth, ...$args ) { public function walk( $elements, $max_depth, ...$args ) {
$output = ''; $output = '';
$max_depth = (int) $max_depth;
// Invalid parameter or nothing to walk. // Invalid parameter or nothing to walk.
if ( $max_depth < -1 || empty( $elements ) ) { if ( $max_depth < -1 || empty( $elements ) ) {
return $output; return $output;
@ -285,12 +290,14 @@ class Walker {
* @return string XHTML of the specified page of elements. * @return string XHTML of the specified page of elements.
*/ */
public function paged_walk( $elements, $max_depth, $page_num, $per_page, ...$args ) { public function paged_walk( $elements, $max_depth, $page_num, $per_page, ...$args ) {
if ( empty( $elements ) || $max_depth < -1 ) {
return '';
}
$output = ''; $output = '';
$max_depth = (int) $max_depth;
if ( empty( $elements ) || $max_depth < -1 ) {
return $output;
}
$parent_field = $this->db_fields['parent']; $parent_field = $this->db_fields['parent'];
$count = -1; $count = -1;

View File

@ -16,7 +16,7 @@
* *
* @global string $wp_version * @global string $wp_version
*/ */
$wp_version = '6.7-alpha-58811'; $wp_version = '6.7-alpha-58812';
/** /**
* Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema. * Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.