Make WordPress Core

Changeset 61326


Ignore:
Timestamp:
11/30/2025 05:39:27 PM (13 days ago)
Author:
westonruter
Message:

General: Add wp_get_archives_args filter to wp_get_archives().

Developed in https://github.com/WordPress/wordpress-develop/pull/10552

Props jeherve, westonruter.
Fixes #64304.

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-includes/general-template.php

    r61198 r61326  
    20192019    );
    20202020
     2021    /**
     2022     * Filters the arguments for displaying archive links.
     2023     *
     2024     * @since 7.0.0
     2025     *
     2026     * @see wp_get_archives()
     2027     *
     2028     * @param array<string, string|int|bool> $args Arguments.
     2029     */
     2030    $args = apply_filters( 'wp_get_archives_args', $args );
     2031
    20212032    $parsed_args = wp_parse_args( $args, $defaults );
    20222033
  • trunk/tests/phpunit/tests/functions/wpGetArchives.php

    r56971 r61326  
    205205        $this->assertSame( $expected, trim( $archives ) );
    206206    }
     207
     208    /**
     209     * @ticket 64304
     210     */
     211    public function test_wp_get_archives_args_filter() {
     212        // Test that the filter can modify the limit argument.
     213        add_filter(
     214            'wp_get_archives_args',
     215            static function ( $args ) {
     216                $args['limit'] = 3;
     217                return $args;
     218            }
     219        );
     220
     221        $ids = array_slice( array_reverse( self::$post_ids ), 0, 3 );
     222
     223        $expected = join(
     224            "\n",
     225            array_map(
     226                static function ( $id ) {
     227                    return sprintf( '<li><a href="%s">%s</a></li>', get_permalink( $id ), get_the_title( $id ) );
     228                },
     229                $ids
     230            )
     231        );
     232        $archives = wp_get_archives(
     233            array(
     234                'echo'  => false,
     235                'type'  => 'postbypost',
     236                'limit' => 5, // This should be overridden by the filter to 3.
     237            )
     238        );
     239
     240        $this->assertEqualHTML( $expected, $archives );
     241    }
    207242}
Note: See TracChangeset for help on using the changeset viewer.