it-swarm.com.de

Laden von Vorlagendateien aus einem Unterordner in meinem Design?

Ich arbeite an einer Site, die bis zu 30 Vorlagen enthält.

Ich möchte nicht, dass all diese Vorlagen im Stammverzeichnis meines Themenordners liegen und alles überladen.

Ich weiß, wie ich die Funktion get_page_templates() in der Datei wp-admin/includes/theme.php so ändern kann, dass Unterverzeichnisse in meinem Themenordner durchsucht werden. Ich möchte Core-Dateien jedoch nicht manuell ändern. Wie kann ich einen Filter auf get_page_templates() mit einem Filter anwenden, den ich in functions.php eingefügt habe?

Wie der Code unten zeigt, ist dies mein erster Versuch, aber er funktioniert noch nicht, wenn ich den Code in function.php einfüge.

Ich kann diese Änderungen jedoch in die Kerndatei wp-admin/includes/theme.php einfügen, aber das ist keine gute Praxis und sollte immer richtig vermieden werden, da die automatische Aktualisierung sie auslöschen kann.

function get_page_templates_override() 
{
$themes = get_themes();
$theme = get_current_theme();
$templates = $themes[$theme]['Template Files'];
$page_templates = array();

if ( is_array( $templates ) ) {
    $base = array( trailingslashit(get_template_directory()), trailingslashit(get_stylesheet_directory()) );

    foreach ( $templates as $template ) {
        $basename = str_replace($base, '', $template);

        // modifide this by commenting it out so that sub dirs arent blocked
        // if ( false !== strpos($basename, '/') )
        //  continue;

        // modified this with FILE_USE_INCLUDE_PATH so sub dirs get scanned
        $template_data = implode( '', file( $template, FILE_USE_INCLUDE_PATH ));

        $name = '';
        if ( preg_match( '|Template Name:(.*)$|mi', $template_data, $name ) )
            $name = _cleanup_header_comment($name[1]);

        if ( !empty( $name ) ) {
            $page_templates[trim( $name )] = $basename;
        }
    }
}
return $page_templates;
}
add_filter('get_page_templates','get_page_templates_override', 1);
4
MrStack

Dieser Teil ist extrem starr, siehe diese Frage zum Laden von Seitenvorlagen aus dem Plugin-Verzeichnis .

Mit dem aktuellen Stand des zugehörigen Codes würde ich mich nicht darum kümmern. Zumal Sie es aus Bequemlichkeitsgründen (Platzieren von Vorlagen in Unterverzeichnissen) und nicht aus Funktionsgründen (Laden aus dem Plugin-Ordner) möchten.

2
Rarst

Es gibt ein paar Tickets für diese: # 13265 und # 11216 .

Außerdem sieht es weniger überladen aus, wenn Sie jeder Vorlage eine feste Zeichenfolge voranstellen:

template-a.php
template-b.php

usw.

1
scribu

Es ist erwähnenswert, dass es seit WP 3.4 (vor fast einem Jahr) möglich ist, Vorlagendateien in einem Verzeichnis unterhalb des Themenstamms abzulegen, und WordPress diese nach Bedarf erkennt und verwendet.

Stand http://nacin.com/2012/03/29/page-templates-in-subdirectories-new-in-wordpress-3-4/ .

0
Grant Palin