¿Capturando el nombre de la plantilla de página?

2

Estoy intentando comparar un nombre de usuario con un nombre de plantilla de página. Encontré el siguiente código:

get_post_meta( $post->ID, '_wp_page_template', true );

Pero esto no es exactamente lo que estoy buscando. Esto devuelve el nombre de archivo de la plantilla de página, IE:

templates/page-products.php 

Lo que estoy buscando es el nombre real de la plantilla definido en la plantilla de la página aquí:

/*
Template Name: products
*/

¿Es esto posible?

    
pregunta user13286 15.04.2015 - 19:58

2 respuestas

3

Una alternativa a @Ben Cole que es menos intensiva (especialmente si tiene varias plantillas de página), pero no tan impresionante porque no usa el objeto WP_Theme ;)

function wpse_184317_get_template_name( $page_id = null ) {
    if ( ! $template = get_page_template_slug( $page_id ) )
        return;
    if ( ! $file = locate_template( $template ) )
        return;

    $data = get_file_data(
        $file,
        array(
            'Name' => 'Template Name',
        )
    );

    return $data['Name'];
}

Y en uso:

echo wpse_184317_get_template_name(); // Template name for current page
echo wpse_184317_get_template_name( 14 ); // Template name for page ID 14
    
respondido por el TheDeadMedic 15.04.2015 - 20:35
1

Una forma de recuperar el nombre de la plantilla como se define en el archivo podría ser así:

function get_template_name () {
    // List all available template names for current theme
    $available_templates = wp_get_theme()->get_page_templates();

    // Get filename of page template we are on
    $template_filename = basename(get_page_template())

    // Return the template name for the currently active file
    return $available_templates[$template_filename];
}

La función anterior devolverá cualquier texto que se use para el nombre de la plantilla. En el siguiente ejemplo, devolvería " NOMBRE DE LA PLANTILLA ":

/*
Template Name: NAME OF TEMPLATE
*/

Más información sobre el objeto WP_Theme .

    
respondido por el Ben Cole 15.04.2015 - 20:27

Lea otras preguntas en las etiquetas