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()
?

codecowboy
1.78K
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!

codecowboy
1.78K
21 feb 2015 12:38:32
Domande correlate
2
risposte
1
risposte