WordPress.org

Make WordPress Core

Ticket #40662: 40662.4.diff

File 40662.4.diff, 6.7 KB (added by audrasjb, 3 years ago)

Patch refreshed and added full documentation for the new feature.

  • src/wp-includes/general-template.php

    diff --git a/src/wp-includes/general-template.php b/src/wp-includes/general-template.php
    index 11d4b77..e7d5e14 100644
    a b function get_the_post_type_description() { 
    16601660 *
    16611661 * @since 1.0.0
    16621662 *
    1663  * @param string $url    URL to archive.
    1664  * @param string $text   Archive text description.
    1665  * @param string $format Optional, default is 'html'. Can be 'link', 'option', 'html', or custom.
    1666  * @param string $before Optional. Content to prepend to the description. Default empty.
    1667  * @param string $after  Optional. Content to append to the description. Default empty.
     1663 * @param string $url      URL to archive.
     1664 * @param string $text     Archive text description.
     1665 * @param string $format   Optional, default is 'html'. Can be 'link', 'option', 'html', or custom.
     1666 * @param string $before   Optional. Content to prepend to the description. Default empty.
     1667 * @param string $after    Optional. Content to append to the description. Default empty.
     1668 * @param bool   $selected Optional. Set to true if the current page is the selected archive page.
    16681669 * @return string HTML link content for archive.
    16691670 */
    1670 function get_archives_link( $url, $text, $format = 'html', $before = '', $after = '' ) {
     1671function get_archives_link( $url, $text, $format = 'html', $before = '', $after = '', $selected = false ) {
    16711672        $text = wptexturize( $text );
    16721673        $url  = esc_url( $url );
    16731674
    16741675        if ( 'link' == $format ) {
    16751676                $link_html = "\t<link rel='archives' title='" . esc_attr( $text ) . "' href='$url' />\n";
    1676         } elseif ( 'option' == $format ) {
    1677                 $link_html = "\t<option value='$url'>$before $text $after</option>\n";
     1677        } elseif ('option' == $format) {
     1678                $selected_attr = $selected ? " selected='selected'" : '';
     1679                $link_html = "\t<option value='$url'$selected_attr>$before $text $after</option>\n";
    16781680        } elseif ( 'html' == $format ) {
    16791681                $link_html = "\t<li>$before<a href='$url'>$text</a>$after</li>\n";
    16801682        } else { // custom
    function get_archives_link( $url, $text, $format = 'html', $before = '', $after 
    16861688         *
    16871689         * @since 2.6.0
    16881690         * @since 4.5.0 Added the `$url`, `$text`, `$format`, `$before`, and `$after` parameters.
     1691         * @since 5.2.0 Added the `$selected` parameter.
    16891692         *
    16901693         * @param string $link_html The archive HTML link content.
    16911694         * @param string $url       URL to archive.
    function get_archives_link( $url, $text, $format = 'html', $before = '', $after 
    16931696         * @param string $format    Link format. Can be 'link', 'option', 'html', or custom.
    16941697         * @param string $before    Content to prepend to the description.
    16951698         * @param string $after     Content to append to the description.
     1699         * @param bool   $selected  True if the current page is the selected archive.
    16961700         */
    1697         return apply_filters( 'get_archives_link', $link_html, $url, $text, $format, $before, $after );
     1701        return apply_filters( 'get_archives_link', $link_html, $url, $text, $format, $before, $after, $selected );
    16981702}
    16991703
    17001704/**
    function get_archives_link( $url, $text, $format = 'html', $before = '', $after 
    17021706 *
    17031707 * @since 1.2.0
    17041708 * @since 4.4.0 $post_type arg was added.
     1709 * @since 5.2.0 $year, $monthnum, $day, $w args were added.
    17051710 *
    17061711 * @see get_archives_link()
    17071712 *
    function get_archives_link( $url, $text, $format = 'html', $before = '', $after 
    17291734 *     @type string     $order           Whether to use ascending or descending order. Accepts 'ASC', or 'DESC'.
    17301735 *                                       Default 'DESC'.
    17311736 *     @type string     $post_type       Post type. Default 'post'.
     1737 *     @type string     $year            Year. Default current year.
     1738 *     @type string     $monthnum        Month number. Default current month number.
     1739 *     @type string     $day             Day. Default current day.
     1740 *     @type string     $w               Week. Default current week.
    17321741 * }
    17331742 * @return string|void String when retrieving.
    17341743 */
    function wp_get_archives( $args = '' ) { 
    17451754                'echo'            => 1,
    17461755                'order'           => 'DESC',
    17471756                'post_type'       => 'post',
     1757                'year'            => get_query_var( 'year' ),
     1758                'monthnum'        => get_query_var( 'monthnum' ),
     1759                'day'             => get_query_var( 'day' ),
     1760                'w'               => get_query_var( 'w' ),
    17481761        );
    17491762
    17501763        $r = wp_parse_args( $args, $defaults );
    function wp_get_archives( $args = '' ) { 
    18201833                                if ( $r['show_post_count'] ) {
    18211834                                        $r['after'] = '&nbsp;(' . $result->posts . ')' . $after;
    18221835                                }
    1823                                 $output .= get_archives_link( $url, $text, $r['format'], $r['before'], $r['after'] );
     1836                                $selected = is_archive() && ( string ) $r[ 'year' ] === $result->year && ( string ) $r[ 'monthnum' ] === $result->month;
     1837                                $output .= get_archives_link( $url, $text, $r['format'], $r['before'], $r['after'], $selected );
    18241838                        }
    18251839                }
    18261840        } elseif ( 'yearly' == $r['type'] ) {
    function wp_get_archives( $args = '' ) { 
    18421856                                if ( $r['show_post_count'] ) {
    18431857                                        $r['after'] = '&nbsp;(' . $result->posts . ')' . $after;
    18441858                                }
    1845                                 $output .= get_archives_link( $url, $text, $r['format'], $r['before'], $r['after'] );
     1859                                $selected = is_archive() && ( string ) $r[ 'year' ] === $result->year;
     1860                                $output .= get_archives_link( $url, $text, $r['format'], $r['before'], $r['after'], $selected );
    18461861                        }
    18471862                }
    18481863        } elseif ( 'daily' == $r['type'] ) {
    function wp_get_archives( $args = '' ) { 
    18651880                                if ( $r['show_post_count'] ) {
    18661881                                        $r['after'] = '&nbsp;(' . $result->posts . ')' . $after;
    18671882                                }
    1868                                 $output .= get_archives_link( $url, $text, $r['format'], $r['before'], $r['after'] );
     1883                                $selected = is_archive() && ( string ) $r[ 'year' ] === $result->year && ( string ) $r[ 'monthnum' ] === $result->month && ( string ) $r[ 'day' ] === $result->dayofmonth;
     1884                                $output .= get_archives_link( $url, $text, $r['format'], $r['before'], $r['after'], $selected );
    18691885                        }
    18701886                }
    18711887        } elseif ( 'weekly' == $r['type'] ) {
    function wp_get_archives( $args = '' ) { 
    19011917                                        if ( $r['show_post_count'] ) {
    19021918                                                $r['after'] = '&nbsp;(' . $result->posts . ')' . $after;
    19031919                                        }
    1904                                         $output .= get_archives_link( $url, $text, $r['format'], $r['before'], $r['after'] );
     1920                                        $selected = is_archive() && ( string ) $r[ 'year' ] === $result->yr && ( string ) $r[ 'week' ] === $result->week;
     1921                                        $output .= get_archives_link( $url, $text, $r['format'], $r['before'], $r['after'], $selected );
    19051922                                }
    19061923                        }
    19071924                }
    function wp_get_archives( $args = '' ) { 
    19241941                                        } else {
    19251942                                                $text = $result->ID;
    19261943                                        }
    1927                                         $output .= get_archives_link( $url, $text, $r['format'], $r['before'], $r['after'] );
     1944                                        $selected = $result->ID === get_the_ID();
     1945                                        $output .= get_archives_link( $url, $text, $r['format'], $r['before'], $r['after'], $selected );
    19281946                                }
    19291947                        }
    19301948                }