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

0
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!

21 feb. 2015 12:38:32