WordPress “include TEMPLATEPATH” oder?

Ich habe so etwas gebaut:

Index Container Widgets Bereich

und ich habe ein Widget dafür erstellt –

Kategorien Widget – Index Container .php

damit in:

  

und zum Beispiel in der / includes / containers / container-grid-categories.php

ist das:

   

Also, meine Fragen, damit alles funktioniert gut, die Frage ist das ein guter Weg, um zu machen, was ich getan habe (einschließlich TEMPLATEPATH)? Oder einen anderen Weg benutzen, und wenn ja, wie? Vielen Dank

Solutions Collecting From Web of "WordPress “include TEMPLATEPATH” oder?"

Lange Antwort kurz: Die absolut beste Antwort für Template-Part-Dateien in einem Unterverzeichnis ist locate_template()

Ich würde empfehlen, den Stylesheet- Pfad für Template-Datei- Includes zu referenzieren, so dass diese Template-Part-Dateien leicht von Child Themes überfahren werden können. Also, im Idealfall sollten Sie get_stylesheet_directory_uri() .

Einige Unterschiede / Erklärung aller von @Kaiser aufgelisteten functionen:

  • get_stylesheet_directory_uri() / get_template_directory_uri() eine URL zurück
  • get_stylesheet_directory() / get_template_directory() einen Dateipfad zurück
  • Alle vier functionen *get_*_directory_*() führen SSL-Prüfungen durch
  • TEMPLATEPATH / STYLESHEETHATH sind einfache Konstanten, geben einen Dateipfad zurück und führen keine SSL-Überprüfung durch

Also, die vier functionen get_*_directory_*() werden der Verwendung von TEMPLATEPATH / STYLESHEET ; Sie sind jedoch nicht wirklich zum Suchen von Vorlagen-Teildateien in Unterverzeichnissen gedacht. In einem solchen Fall ist es am besten, locate_template() direkt zu verwenden. ( Sehen Sie hier für eine gute Beschreibung und einen Vergleich aller oben genannten Optionen. )

Es gibt mehrere Möglichkeiten, dies zu erreichen:

  TEMPLATEPATH // Path to your (parent) themes root dir STYLESHEETPATH // Path to your parent/child - if present - dir get_template_directory_uri(); get_template_directory(); get_stylesheet_directory(); get_stylesheet_directory_uri(); // to load a file: path_and_file_name.php which searches in child dir first, then parent themes dir get_template_part( 'path_and_file_name' ); // appends .php automagically get_template_part( 'path_and_file_name', 'suffix' ); // loads: path_and_file_name-suffix.php /** * Directoy structure * @return (array) $dir_struct | directory structure */ function wpse21093_get_dir_struct() { $dir_base = get_template_directory().'/includes/'; $dirs[] = 'containers'; // add more folders // $dirs[] = 'widgets'; foreach ( $dirs as $dir ) { $dir_struct[ $dir ] = trailingslashit( $dir_base.$dir ); } return $dir_struct; } /** * Loading files for larger structures the *smart* way ... * Searches in all folders supported by the theme, defined by the user * Allows a {$suffix} to be appended to mimic the get_template_part(); behavior */ function wpse21093_load_file( $file_name, $suffix = '' ) { $dirs = wpse21093_get_dir_struct(); foreach ( $dirs as $supported => $dir ) { if ( empty ( $suffix ) ) { if ( file_exists( $dir.$file_name.'.php' ) ) require_if_theme_supports( $supported, $dir.$file_name.'.php' ); } else { if ( file_exists( $dir.$file_name.'-'.$suffix.'.php' ) ) require_if_theme_supports( $supported, $dir.$file_name.'-'.$suffix.'.php' ); } } return; } // Then call it like this: add_theme_support( 'containers' ); // add support for folder wpse21093_load_file( 'container-grid-categories' );