WordPress.org

Make WordPress Core

Ticket #23180: get-plugin-part.diff

File get-plugin-part.diff, 1.9 KB (added by wonderboymusic, 18 months ago)
  • wp-includes/general-template.php

     
    129129} 
    130130 
    131131/** 
     132 * Load a template part from a plugin 
     133 * 
     134 * Makes it easy for a plugin to reuse sections of code 
     135 * 
     136 * Includes the named template part if a name is specified then a 
     137 * specialised part will be included. If the plugin contains no {slug}.php file 
     138 * then no template will be included. 
     139 * 
     140 * The template is included using require, unless require_once is specified, so you may include the 
     141 * same template part multiple times. 
     142 * 
     143 * For the $name parameter, if the file is called "{slug}-special.php" then specify 
     144 * "special". 
     145 * 
     146 * @since 3.6.0 
     147 * @uses do_action() Calls 'get_plugin_part_{$slug}' action. 
     148 * 
     149 * @param string $plugin The slug name for the plugin 
     150 * @param string $slug The slug name for the generic template. 
     151 * @param string $name The name of the specialised template. 
     152 * @param bool $require_once Whether to require_once or require. Default true. 
     153 */ 
     154function get_plugin_part( $plugin, $slug, $name = null, $require_once = false ) { 
     155        do_action( "get_plugin_part_{$slug}", $slug, $name ); 
     156 
     157        $templates = array(); 
     158        if ( ! empty( $name ) ) 
     159                $templates[] = "{$plugin}/{$slug}-{$name}.php"; 
     160 
     161        $templates[] = "{$plugin}/{$slug}.php"; 
     162 
     163        $located = ''; 
     164        foreach ( (array) $templates as $template_name ) { 
     165                if ( ! $template_name ) 
     166                        continue; 
     167                if ( file_exists( WP_PLUGIN_DIR . '/' . $template_name ) ) { 
     168                        $located = WP_PLUGIN_DIR . '/' . $template_name; 
     169                        break; 
     170                } 
     171        } 
     172 
     173        if ( '' != $located ) { 
     174                if ( $require_once ) 
     175                        require_once( $located ); 
     176                else 
     177                        require( $located ); 
     178        } 
     179 
     180        return $located; 
     181} 
     182 
     183/** 
    132184 * Display search form. 
    133185 * 
    134186 * Will first attempt to locate the searchform.php file in either the child or