WordPress.org

Make WordPress Core

Ticket #37655: 37655.2.diff

File 37655.2.diff, 2.0 KB (added by johnbillion, 5 years ago)
  • src/wp-includes/template.php

     
    175175        $templates = array();
    176176
    177177        if ( ! empty( $category->slug ) ) {
     178
     179                $slug_decoded = urldecode( $category->slug );
     180                if ( $slug_decoded !== $category->slug ) {
     181                        $templates[] = "category-{$slug_decoded}.php";
     182                }
     183
    178184                $templates[] = "category-{$category->slug}.php";
    179185                $templates[] = "category-{$category->term_id}.php";
    180186        }
     
    205211        $templates = array();
    206212
    207213        if ( ! empty( $tag->slug ) ) {
     214
     215                $slug_decoded = urldecode( $tag->slug );
     216                if ( $slug_decoded !== $tag->slug ) {
     217                        $templates[] = "tag-{$slug_decoded}.php";
     218                }
     219
    208220                $templates[] = "tag-{$tag->slug}.php";
    209221                $templates[] = "tag-{$tag->term_id}.php";
    210222        }
     
    241253
    242254        if ( ! empty( $term->slug ) ) {
    243255                $taxonomy = $term->taxonomy;
     256
     257                $slug_decoded = urldecode( $term->slug );
     258                if ( $slug_decoded !== $term->slug ) {
     259                        $templates[] = "taxonomy-$taxonomy-{$slug_decoded}.php";
     260                }
     261
    244262                $templates[] = "taxonomy-$taxonomy-{$term->slug}.php";
    245263                $templates[] = "taxonomy-$taxonomy.php";
    246264        }
     
    335353        $templates = array();
    336354        if ( $template && 0 === validate_file( $template ) )
    337355                $templates[] = $template;
    338         if ( $pagename )
     356        if ( $pagename ) {
     357                $pagename_decoded = urldecode( $pagename );
     358                if ( $pagename_decoded !== $pagename ) {
     359                        $templates[] = "page-{$pagename_decoded}.php";
     360                }
    339361                $templates[] = "page-$pagename.php";
     362        }
    340363        if ( $id )
    341364                $templates[] = "page-$id.php";
    342365        $templates[] = 'page.php';
     
    395418        $templates = array();
    396419
    397420        if ( ! empty( $object->post_type ) ) {
     421
     422                $name_decoded = urldecode( $object->post_name );
     423                if ( $name_decoded !== $object->post_name ) {
     424                        $templates[] = "single-{$object->post_type}-{$name_decoded}.php";
     425                }
     426
    398427                $templates[] = "single-{$object->post_type}-{$object->post_name}.php";
    399428                $templates[] = "single-{$object->post_type}.php";
    400429        }