Make WordPress Core

Ticket #23180: get-plugin-part.diff

File get-plugin-part.diff, 1.9 KB (added by wonderboymusic, 12 years 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