Esiste un modo per recuperare la parte del template chiamante?

21 feb 2015, 11:42:27
Visualizzazioni: 75
Voti: 0

Se includo una parte di template all'interno di header.php in questo modo:

    <?php get_template_part('templates/social-icons'); ?>

Esiste un modo per recuperare il nome del template header.php all'interno di questa parte di template? Cioè il nome del template che include social-icons.php?

Quindi in social-icons.php voglio recuperare dinamicamente il nome 'headers.php' in modo da poter includere social-icons.php altrove e reagire al nome del template chiamante.

Forse qualcosa che utilizza le funzioni PHP get_included_files() o pathinfo() ?

0
Tutte le risposte alla domanda 1
0

Dopo aver trovato questa risposta, ho optato per:

$template_tree = mytheme_get_template_tree();
$total = count($template_tree); //conta gli elementi nell'array
end($template_tree); //imposta il puntatore alla fine dell'array
$immediate_parent = basename(prev($template_tree)); //ottieni il filename del penultimo elemento

Poi in un plugin / functions.php

function mytheme_get_template_tree()
{
    $included_files = get_included_files();
    $stylesheet_dir = str_replace( '\\', '/', get_stylesheet_directory() );
    $template_dir   = str_replace( '\\', '/', get_template_directory() );

    foreach ( $included_files as $key => $path ) {

        $path = str_replace( '\\', '/', $path );

        if ( FALSE === strpos( $path, $stylesheet_dir ) && FALSE === strpos( $path, $template_dir ) ) {
            unset( $included_files[ $key ] );
        }
    }

    return $included_files;

}

Sono comunque interessato a sentire approcci alternativi!

21 feb 2015 12:38:32