Cómo usar if (is_page_template('')) en WordPress

24 ene 2017, 19:35:17
Vistas: 17.7K
Votos: 0

Utilizo el siguiente código en mi functions.php. Quiero excluir todas las páginas que usan la plantilla single.php.

function cat_menu() {

 if (!is_page_template('single.php')) {


$cur_cat = get_query_var('cat');

 $new_cats = wp_list_categories('echo=false&child_of=' . $cur_cat .'&depth=1&title_li=&&show_count=0&hide_empty=1');
            echo '<ul>' . $new_cats . '</ul>';
}}
  add_action ( 'genesis_after_header', 'cat_menu' ); 

Pero veo el resultado también en páginas que usan single.php.

¿Alguien puede ayudarme con esto?

0
Todas las respuestas a la pregunta 4
0

is_page_template() verifica las plantillas de tipo de post especificadas por el tema usando

/**
 * Nombre de la plantilla: Mi Plantilla
 */

en la parte superior del archivo de plantilla. No cualquier archivo de plantilla arbitrario. Para esto, quizás quieras revisar las respuestas en Obtener el nombre del archivo de plantilla actual. Podrías tomar el código de la respuesta aceptada allí (get_current_template()) para hacer algo cuando single.php === get_current_template().

24 ene 2017 20:23:18
1

Debes usar la siguiente función:

is_singular()

Is singular verifica si la página actual es single.php.

Referencia de la función

24 ene 2017 21:19:35
Comentarios

is_singular() no garantiza al 100% que se cargó single.php, ya que otras plantillas en la jerarquía podrían cargarse antes que esta.

swissspidy swissspidy
25 ene 2017 15:05:18
0

Siempre me parece extraño cuánto tiempo tardan los hilos de WPSE en recibir respuestas precisas, aquí hay un ejemplo básico de cómo usarlo de StackOverflow:

// si no es una plantilla de página específica
<?php if (!is_page_template('page-templates/all-sponsor-template.php')); ?>
    // Contenido
<?php endif; ?>

// si es una plantilla de página específica
<?php if (is_page_template('page-templates/all-sponsor-template.php')); ?>
    // Contenido
<?php endif; ?>

Ref: https://stackoverflow.com/questions/58531957/if-is-page-template-not-working-in-header-php

17 ago 2023 13:34:41
1
-1

get_page_template_slug() - Devuelve solo la plantilla de página

 global $post;    
    $template = get_page_template_slug($post->ID);         
    if ($template == 'page-template.php') {....}

Probablemente valga la pena comprobar más fácilmente

if(is_single()){....}
24 ene 2017 20:35:06
Comentarios

Este es el mismo problema que con is_page_template(). get_page_template_slug() solo verifica las plantillas de publicaciones personalizadas (aquellas con los encabezados /* Template Name: ... */). Además, is_single() no garantiza al 100% que se cargó single.php, ya que otras plantillas en la jerarquía podrían cargarse antes.

swissspidy swissspidy
25 ene 2017 15:05:07