Make WordPress Core

Changeset 58863


Ignore:
Timestamp:
08/07/2024 07:45:55 PM (2 years ago)
Author:
hellofromTonya
Message:

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].

Reviewed by peterwilsoncc.
Merges [58812] to the 6.6 branch.

Props freibergergarcia, peterwilsoncc, ahortin.
Fixes #61749.

Location:
branches/6.6
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • branches/6.6

  • branches/6.6/src/wp-includes/class-wp-walker.php

    r57848 r58863  
    136136                }
    137137
     138                $max_depth = (int) $max_depth;
     139                $depth     = (int) $depth;
     140
    138141                $id_field = $this->db_fields['id'];
    139142                $id       = $element->$id_field;
     
    191194        public function walk( $elements, $max_depth, ...$args ) {
    192195                $output = '';
     196
     197                $max_depth = (int) $max_depth;
    193198
    194199                // Invalid parameter or nothing to walk.
     
    286291         */
    287292        public function paged_walk( $elements, $max_depth, $page_num, $per_page, ...$args ) {
     293                $output = '';
     294
     295                $max_depth = (int) $max_depth;
     296
    288297                if ( empty( $elements ) || $max_depth < -1 ) {
    289                         return '';
    290                 }
    291 
    292                 $output = '';
     298                        return $output;
     299                }
    293300
    294301                $parent_field = $this->db_fields['parent'];
  • branches/6.6/tests/phpunit/tests/post/wpListPages.php

    r55589 r58863  
    161161        }
    162162
     163        /**
     164         * @ticket 61749
     165         */
     166        public function test_wp_list_pages_depth_equals_zero() {
     167                $expected = '<li class="pagenav">Pages<ul><li class="page_item page-item-' . self::$parent_1 . ' page_item_has_children"><a href="' . get_permalink( self::$parent_1 ) . '">Parent 1</a>
     168<ul class=\'children\'>
     169        <li class="page_item page-item-' . self::$children[ self::$parent_1 ][0] . '"><a href="' . get_permalink( self::$children[ self::$parent_1 ][0] ) . '">Child 1</a></li>
     170        <li class="page_item page-item-' . self::$children[ self::$parent_1 ][1] . '"><a href="' . get_permalink( self::$children[ self::$parent_1 ][1] ) . '">Child 2</a></li>
     171        <li class="page_item page-item-' . self::$children[ self::$parent_1 ][2] . '"><a href="' . get_permalink( self::$children[ self::$parent_1 ][2] ) . '">Child 3</a></li>
     172</ul>
     173</li>
     174<li class="page_item page-item-' . self::$parent_2 . ' page_item_has_children"><a href="' . get_permalink( self::$parent_2 ) . '">Parent 2</a>
     175<ul class=\'children\'>
     176        <li class="page_item page-item-' . self::$children[ self::$parent_2 ][0] . '"><a href="' . get_permalink( self::$children[ self::$parent_2 ][0] ) . '">Child 1</a></li>
     177        <li class="page_item page-item-' . self::$children[ self::$parent_2 ][1] . '"><a href="' . get_permalink( self::$children[ self::$parent_2 ][1] ) . '">Child 2</a></li>
     178        <li class="page_item page-item-' . self::$children[ self::$parent_2 ][2] . '"><a href="' . get_permalink( self::$children[ self::$parent_2 ][2] ) . '">Child 3</a></li>
     179</ul>
     180</li>
     181<li class="page_item page-item-' . self::$parent_3 . ' page_item_has_children"><a href="' . get_permalink( self::$parent_3 ) . '">Parent 3</a>
     182<ul class=\'children\'>
     183        <li class="page_item page-item-' . self::$children[ self::$parent_3 ][0] . '"><a href="' . get_permalink( self::$children[ self::$parent_3 ][0] ) . '">Child 1</a></li>
     184        <li class="page_item page-item-' . self::$children[ self::$parent_3 ][1] . '"><a href="' . get_permalink( self::$children[ self::$parent_3 ][1] ) . '">Child 2</a></li>
     185        <li class="page_item page-item-' . self::$children[ self::$parent_3 ][2] . '"><a href="' . get_permalink( self::$children[ self::$parent_3 ][2] ) . '">Child 3</a></li>
     186</ul>
     187</li>
     188</ul></li>';
     189
     190                // Execute wp_list_pages() with a string to force calling wp_parse_args().
     191                ob_start();
     192                wp_list_pages( 'depth=0' );
     193                $output = ob_get_clean();
     194
     195                // If depth equals 0, all levels should be displayed.
     196                $this->assertSameIgnoreEOL( $expected, $output );
     197        }
     198
    163199        public function test_wp_list_pages_show_date() {
    164200                $args = array(
Note: See TracChangeset for help on using the changeset viewer.