Make WordPress Core

Ticket #18614: 18614.4.diff

File 18614.4.diff, 4.0 KB (added by wonderboymusic, 11 years ago)
  • src/wp-includes/template-loader.php

     
    2626        $template = false;
    2727        if     ( is_404()            && $template = get_404_template()            ) :
    2828        elseif ( is_search()         && $template = get_search_template()         ) :
     29        elseif ( is_post_type_archive() && $template = get_post_type_archive_template() ) :
    2930        elseif ( is_tax()            && $template = get_taxonomy_template()       ) :
    3031        elseif ( is_front_page()     && $template = get_front_page_template()     ) :
    3132        elseif ( is_home()           && $template = get_home_template()           ) :
  • src/wp-includes/template.php

     
    7373}
    7474
    7575/**
     76 * Retrieve path of post type archive template in current or parent template.
     77 *
     78 * @since 3.7.0
     79 *
     80 * @return string
     81 */
     82function get_post_type_archive_template() {
     83        $obj = get_post_type_object( get_query_var( 'post_type' ) );
     84        if ( ! $obj->has_archive )
     85                return '';
     86
     87        return get_archive_template();
     88}
     89
     90/**
    7691 * Retrieve path of author template in current or parent template.
    7792 *
    7893 * @since 1.5.0
  • src/wp-includes/query.php

     
    31473147         * @return bool
    31483148         */
    31493149        function is_post_type_archive( $post_types = '' ) {
    3150                 if ( empty( $post_types ) || !$this->is_post_type_archive )
     3150                if ( empty( $post_types ) || ! $this->is_post_type_archive )
    31513151                        return (bool) $this->is_post_type_archive;
    31523152
    3153                 $post_type_object = $this->get_queried_object();
     3153                $post_type_object = get_post_type_object( $this->get( 'post_type' ) );
    31543154
    31553155                return in_array( $post_type_object->name, (array) $post_types );
    31563156        }
  • src/wp-includes/general-template.php

     
    577577                $title = single_post_title( '', false );
    578578        }
    579579
     580        // If there's a post type archive
     581        if ( is_post_type_archive() ) {
     582                $post_type_object = get_post_type_object( get_query_var( 'post_type' ) );
     583                if ( ! $post_type_object->has_archive )
     584                        $title = post_type_archive_title( '', false );
     585        }
     586
    580587        // If there's a category or tag
    581588        if ( is_category() || is_tag() ) {
    582589                $title = single_term_title( '', false );
     
    595602                $title = $author->display_name;
    596603        }
    597604
    598         // If there's a post type archive
    599         if ( is_post_type_archive() )
     605        // Post type archives with has_archive should override terms.
     606        if ( is_post_type_archive() && $post_type_object->has_archive )
    600607                $title = post_type_archive_title( '', false );
    601608
    602609        // If there's a month
     
    696703        if ( ! is_post_type_archive() )
    697704                return;
    698705
    699         $post_type_obj = get_queried_object();
     706        $post_type_obj = get_post_type_object( get_query_var( 'post_type' ) );
    700707        $title = apply_filters('post_type_archive_title', $post_type_obj->labels->name );
    701708
    702709        if ( $display )
     
    16701677
    16711678        $args = wp_parse_args( $args, $defaults );
    16721679
    1673         if ( is_single() || is_page() ) {
     1680        if ( is_singular() ) {
    16741681                $id = 0;
    16751682                $post = get_post( $id );
    16761683
     
    16781685                        $title = sprintf( $args['singletitle'], get_bloginfo('name'), $args['separator'], esc_html( get_the_title() ) );
    16791686                        $href = get_post_comments_feed_link( $post->ID );
    16801687                }
     1688        } elseif ( is_post_type_archive() ) {
     1689                $post_type_obj = get_post_type_object( get_query_var( 'post_type' ) );
     1690                $title = sprintf( $args['posttypetitle'], get_bloginfo( 'name' ), $args['separator'], $post_type_obj->labels->name );
     1691                $href = get_post_type_archive_feed_link( $post_type_obj->name );
    16811692        } elseif ( is_category() ) {
    16821693                $term = get_queried_object();
    16831694