Există o modalitate de a obține template-ul care apelează o parte a template-ului?
21 feb. 2015, 11:42:27
Vizualizări: 75
Voturi: 0
Dacă includ o parte a template-ului în header.php astfel:
<?php get_template_part('templates/social-icons'); ?>
Există o modalitate de a obține numele template-ului header.php
în interiorul acestei părți a template-ului? Adică numele template-ului care include social-icons.php
?
Așadar, în social-icons.php vreau să obțin numele 'headers.php' în mod dinamic, astfel încât să pot include social-icons.php în alte locuri și să reacționez în funcție de numele template-ului apelant.
Poate ceva folosind funcțiile PHP get_included_files()
sau pathinfo()
?

codecowboy
1.78K
Toate răspunsurile la întrebare
1
0
După ce am găsit acest răspuns, am optat pentru:
$template_tree = mytheme_get_template_tree();
$total = count($template_tree); // numără elementele din array
end($template_tree); // setează pointerul la sfârșitul array-ului
$immediate_parent = basename(prev($template_tree)); // obține numele fișierului penultimului element
Apoi într-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;
}
Sunt încă interesat să aud despre alte abordări alternative!

codecowboy
1.78K
21 feb. 2015 12:38:32
Întrebări similare
2
răspunsuri
1
răspunsuri
1
răspunsuri