WEBDESIGN

Name des Templates bei WordPress ausgeben

In manchen Situationen ist es nützlich, auf den Namen des aktuellen WordPress Templates zuzugreifen. Standardmäßig ist dies zwar nicht möglich, aber mit ein paar selbstgeschriebenen Methoden schnell gelöst.

Front-End Funktion

Um den Namen des aktuellen Templates zu bekommen, ist es notwendig die Information aus dem template_include Filter auszulesen. Dann kann eine neue globale PHP Variable angelegt werden, welche später von überall referenziert werden kann.

Dazu erstellen wir folgende Funktion, die der funtions.php Datei hinzugefügt wird:

/* @param $template Der absolute Pfad zum aktuellen Template */
function define_current_template( $template ) {
    $GLOBALS['current_theme_template'] = basename($template);
 
    return $template;
}
add_action('template_include', 'define_current_template', 1000);

Jetzt kann mit Hilfe der Variable $current_theme_template auf den Template Namen zugegriffen werden. Nun schreiben wir aber noch zusätzlich eine Funktion, um diesen Wert zurück- beziehungsweise auszugeben.

Diese Funktion wird ebenfalls wieder in der functions.php Datei erstellt:

function get_current_template( $echo = false ) {
    if ( !isset( $GLOBALS['current_theme_template'] ) ) {
        trigger_error( '$current_theme_template wurde noch nicht definiert!',
                                                   E_USER_WARNING );
        return false;
    }
    if ( $echo ) {
        echo $GLOBALS['current_theme_template'];
    }
    else {
        return $GLOBALS['current_theme_template'];
    }
}

Je nachdem, ob die Funktion mit false oder true aufgerufen wird, wird entweder der Dateiname des Templates zurückgegeben, oder eben direkt ausgegeben.

Im WordPress Admin-Bereich

Wenn man nun im Admin-Bereich auf den Template Namen zugreifen möchte, kommt man mit Hilfe der ID des Artikels und der Funktion get_post_meta() an die nötigen Informationen.

$post_id = ( isset($_GET['post']) ) ? 
              intval($_GET['post']) : 
                  intval($_POST['post_ID']);
$template_file = get_post_meta( 
                 $post_id, '_wp_page_template', TRUE
                  );

Dies kann vielleicht nützlich sein, um zusätzliche Meta-Informationen anzuzeigen.



Schreib einen Kommentar