WordPress.org

Make WordPress Core

Ticket #42855: 42855.patch

File 42855.patch, 3.4 KB (added by atanasangelovdev, 20 months ago)
  • src/wp-includes/general-template.php

     
    77 */
    88
    99/**
     10 * Get a template part's template hierarchy.
     11 *
     12 * For the $name parameter, if the file is called "{slug}-special.php" then specify
     13 * "special".
     14 *
     15 * @param string $slug The slug name for the generic template.
     16 * @param string $name The name of the specialised template.
     17 * @return string[] Template part's template hierarchy.
     18 */
     19function get_template_part_hierarchy( $slug, $name = null ) {
     20        $templates      = array();
     21        $formatted_name = (string) $name;
     22        if ( '' !== $formatted_name ) {
     23                $templates[] = "{$slug}-{$formatted_name}.php";
     24        }
     25
     26        $templates[] = "{$slug}.php";
     27
     28        /**
     29         * Filters the template part template hierarchy.
     30         *
     31         * The dynamic portion of the hook name, `$slug`, refers to the slug name
     32         * for the generic template part.
     33         *
     34         * @param string[]    $templates The template part template hierarchy.
     35         * @param string      $slug The slug name for the generic template.
     36         * @param string|null $name The name of the specialised template.
     37         */
     38        $templates = apply_filters( "template_part_{$slug}_template_hierarchy", $templates, $slug, $name );
     39
     40        return $templates;
     41}
     42
     43/**
    1044 * Load header template.
    1145 *
    1246 * Includes the header template for a theme or if a name is specified then a
     
    3064         */
    3165        do_action( 'get_header', $name );
    3266
    33         $templates = array();
    34         $name      = (string) $name;
    35         if ( '' !== $name ) {
    36                 $templates[] = "header-{$name}.php";
    37         }
     67        $templates = get_template_part_hierarchy( 'header', $name );
    3868
    39         $templates[] = 'header.php';
    40 
    4169        locate_template( $templates, true );
    4270}
    4371
     
    6593         */
    6694        do_action( 'get_footer', $name );
    6795
    68         $templates = array();
    69         $name      = (string) $name;
    70         if ( '' !== $name ) {
    71                 $templates[] = "footer-{$name}.php";
    72         }
     96        $templates = get_template_part_hierarchy( 'footer', $name );
    7397
    74         $templates[] = 'footer.php';
    75 
    7698        locate_template( $templates, true );
    7799}
    78100
     
    100122         */
    101123        do_action( 'get_sidebar', $name );
    102124
    103         $templates = array();
    104         $name      = (string) $name;
    105         if ( '' !== $name ) {
    106                 $templates[] = "sidebar-{$name}.php";
    107         }
     125        $templates = get_template_part_hierarchy( 'sidebar', $name );
    108126
    109         $templates[] = 'sidebar.php';
    110 
    111127        locate_template( $templates, true );
    112128}
    113129
     
    142158         * @since 3.0.0
    143159         *
    144160         * @param string      $slug The slug name for the generic template.
    145          * @param string|null $name The name of the specialized template.
     161         * @param string|null $name The name of the specialised template.
    146162         */
    147163        do_action( "get_template_part_{$slug}", $slug, $name );
    148164
    149         $templates = array();
    150         $name      = (string) $name;
    151         if ( '' !== $name ) {
    152                 $templates[] = "{$slug}-{$name}.php";
    153         }
     165        $templates = get_template_part_hierarchy( $slug, $name );
    154166
    155         $templates[] = "{$slug}.php";
    156 
    157167        locate_template( $templates, true, false );
    158168}
    159169
     
    202212         */
    203213        $format = apply_filters( 'search_form_format', $format );
    204214
    205         $search_form_template = locate_template( 'searchform.php' );
     215        $template_hierarchy   = get_template_part_hierarchy( 'searchform' );
     216        $search_form_template = locate_template( $template_hierarchy );
    206217        if ( '' != $search_form_template ) {
    207218                ob_start();
    208219                require( $search_form_template );