WordPress.org

Making WordPress.org

Ticket #653: 653.diff

File 653.diff, 3.5 KB (added by DrewAPicture, 5 years ago)
  • content-reference.php

     
    1616        <section class="return"><p><strong>Return:</strong> <?php echo get_return(); ?></p></section>
    1717
    1818        <?php
    19         $since = get_since();
    20 if ( ! empty( $since ) ) : ?>
    21         <section class="since">
    22                 <p><strong>Since:</strong> WordPress <a href="<?php echo get_since_link( $since ); ?>"><?php echo esc_html( $since ); ?></a></p>
    23         </section>
    24 <?php endif; ?>
     19        $changelog_data = get_changelog_data();
     20        if ( ! empty( $changelog_data ) ) :
     21                ?>
     22                <section class="changelog">
     23                        <h4><?php _e( 'Changelog', 'wporg' ); ?></h4>
     24                        <ul>
     25                                <?php foreach ( $changelog_data as $version => $data ) : ?>
     26                                        <li><?php _e( '<strong>Since:</strong> WordPress', 'wporg' ); ?> <a href="<?php echo esc_url( $data['since_url'] ); ?>"><?php echo esc_html( $version ); ?></a> <?php echo $data['description']; // escaped in get_changelog_data() ?></li>
     27                                <?php endforeach; ?>
     28                        </ul>
     29                </section>
     30        <?php endif;
    2531
    26         <?php
    2732        $source_file = get_source_file();
    2833        if ( ! empty( $source_file ) ) :
    2934                ?>
  • inc/template-tags.php

     
    591591        }
    592592
    593593        /**
    594          * Retrieve URL to since version archive
     594         * Retrieve changelog data for the current post.
    595595         *
    596          * @param string $name
     596         * @param null $post_id Post ID, defaults to the ID of the global $post.
    597597         *
    598          * @return string
     598         * @return array Associative array of changelog data.
    599599         */
    600         function get_since_link( $name = null ) {
     600        function get_changelog_data( $post_id = null ) {
     601                $post_id = empty( $post_id ) ? get_the_ID() : $post_id;
    601602
    602                 $since_object = get_term_by( 'name', empty( $name ) ? get_since() : $name, 'wp-parser-since' );
     603                // Since terms assigned to the post.
     604                $since_terms = wp_get_post_terms( $post_id, 'wp-parser-since' );
    603605
    604                 return empty( $since_object ) ? '' : esc_url( get_term_link( $since_object ) );
     606                // Since data stored in meta.
     607                $since_meta = get_post_meta( $post_id, '_wp-parser_tags', true );
     608
     609                $data = array();
     610
     611                // Pair the term data with meta data.
     612                foreach ( $since_terms as $since_term ) {
     613                        foreach ( $since_meta as $meta ) {
     614                                if ( $since_term->name == $meta['content'] ) {
     615                                        $description = empty( $meta['description'] ) ? '' : '<span class="since-description">' . esc_html( $meta['description'] ) . '</span>';
     616
     617                                        $data[ $since_term->name ] = array(
     618                                                'version'     => $since_term->name,
     619                                                'description' => $description,
     620                                                'since_url'   => get_term_link( $since_term )
     621                                        );
     622                                }
     623                        }
     624                }
     625                return $data;
    605626        }
    606627
    607628        /**
    608          * Retrieve name of since version
     629         * Retrieve URL to a since version archive.
    609630         *
    610          * @param int $post_id
     631         * @param string $name Since version, e.g. 'x.x.x'.
    611632         *
    612          * @return string
     633         * @return string Since term archive URL.
    613634         */
    614         function get_since( $post_id = null ) {
     635        function get_since_link( $name = null ) {
    615636
    616                 $since_object = wp_get_post_terms( empty( $post_id ) ? get_the_ID() : $post_id, 'wp-parser-since', array( 'fields' => 'names' ) );
     637                $since_object = get_term_by( 'name', empty( $name ) ? get_since() : $name, 'wp-parser-since' );
    617638
    618                 return empty( $since_object ) ? '' : esc_html( $since_object[0] );
     639                return empty( $since_object ) ? '' : esc_url( get_term_link( $since_object ) );
    619640        }
    620641
    621642        /**