WordPress.org

Make WordPress Core

Ticket #40662: 40662.2.diff

File 40662.2.diff, 5.1 KB (added by robobot3000, 3 years ago)

Refreshed patch

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

     
    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.
    1668  * @return string HTML link content for archive.
     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
    16691669 */
    1670 function get_archives_link( $url, $text, $format = 'html', $before = '', $after = '' ) {
     1670function get_archives_link( $url, $text, $format = 'html', $before = '', $after = '', $selected = false ) {
    16711671        $text = wptexturize( $text );
    16721672        $url  = esc_url( $url );
    16731673
    16741674        if ( 'link' == $format ) {
    16751675                $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";
     1676        } elseif ('option' == $format) {
     1677                $selected_attr = $selected ? " selected='selected'" : '';
     1678                $link_html = "\t<option value='$url'$selected_attr>$before $text $after</option>\n";
    16781679        } elseif ( 'html' == $format ) {
    16791680                $link_html = "\t<li>$before<a href='$url'>$text</a>$after</li>\n";
    16801681        } else { // custom
     
    16931694         * @param string $format    Link format. Can be 'link', 'option', 'html', or custom.
    16941695         * @param string $before    Content to prepend to the description.
    16951696         * @param string $after     Content to append to the description.
     1697         * @param bool   $selected  True if the current page is the selected archive
    16961698         */
    1697         return apply_filters( 'get_archives_link', $link_html, $url, $text, $format, $before, $after );
     1699        return apply_filters( 'get_archives_link', $link_html, $url, $text, $format, $before, $after, $selected );
    16981700}
    16991701
    17001702/**
     
    17451747                'echo'            => 1,
    17461748                'order'           => 'DESC',
    17471749                'post_type'       => 'post',
     1750                'year'            => get_query_var( 'year' ),
     1751                'monthnum'        => get_query_var( 'monthnum' ),
     1752                'day'             => get_query_var( 'day' ),
     1753                'week'            => get_query_var( 'w' ),
    17481754        );
    17491755
    17501756        $r = wp_parse_args( $args, $defaults );
     
    18201826                                if ( $r['show_post_count'] ) {
    18211827                                        $r['after'] = '&nbsp;(' . $result->posts . ')' . $after;
    18221828                                }
    1823                                 $output .= get_archives_link( $url, $text, $r['format'], $r['before'], $r['after'] );
     1829                                $selected = is_archive() && ( string ) $r[ 'year' ] === $result->year && ( string ) $r[ 'monthnum' ] === $result->month;
     1830                                $output .= get_archives_link( $url, $text, $r['format'], $r['before'], $r['after'], $selected );
    18241831                        }
    18251832                }
    18261833        } elseif ( 'yearly' == $r['type'] ) {
     
    18421849                                if ( $r['show_post_count'] ) {
    18431850                                        $r['after'] = '&nbsp;(' . $result->posts . ')' . $after;
    18441851                                }
    1845                                 $output .= get_archives_link( $url, $text, $r['format'], $r['before'], $r['after'] );
     1852                                $selected = is_archive() && ( string ) $r[ 'year' ] === $result->year;
     1853                                $output .= get_archives_link( $url, $text, $r['format'], $r['before'], $r['after'], $selected );
    18461854                        }
    18471855                }
    18481856        } elseif ( 'daily' == $r['type'] ) {
     
    18651873                                if ( $r['show_post_count'] ) {
    18661874                                        $r['after'] = '&nbsp;(' . $result->posts . ')' . $after;
    18671875                                }
    1868                                 $output .= get_archives_link( $url, $text, $r['format'], $r['before'], $r['after'] );
     1876                                $selected = is_archive() && ( string ) $r[ 'year' ] === $result->year && ( string ) $r[ 'monthnum' ] === $result->month && ( string ) $r[ 'day' ] === $result->dayofmonth;
     1877                                $output .= get_archives_link( $url, $text, $r['format'], $r['before'], $r['after'], $selected );
    18691878                        }
    18701879                }
    18711880        } elseif ( 'weekly' == $r['type'] ) {
     
    19011910                                        if ( $r['show_post_count'] ) {
    19021911                                                $r['after'] = '&nbsp;(' . $result->posts . ')' . $after;
    19031912                                        }
    1904                                         $output .= get_archives_link( $url, $text, $r['format'], $r['before'], $r['after'] );
     1913                                        $selected = is_archive() && ( string ) $r[ 'year' ] === $result->yr && ( string ) $r[ 'week' ] === $result->week;
     1914                                        $output .= get_archives_link( $url, $text, $r['format'], $r['before'], $r['after'], $selected );
    19051915                                }
    19061916                        }
    19071917                }
     
    19241934                                        } else {
    19251935                                                $text = $result->ID;
    19261936                                        }
    1927                                         $output .= get_archives_link( $url, $text, $r['format'], $r['before'], $r['after'] );
     1937                                        $selected = $result->ID === get_the_ID();
     1938                                        $output .= get_archives_link( $url, $text, $r['format'], $r['before'], $r['after'], $selected );
    19281939                                }
    19291940                        }
    19301941                }