Uso de la etiqueta condicional is_page con un tipo de publicación personalizado

29 abr 2014, 20:39:07
Vistas: 9.74K
Votos: 2

Según la documentación de is_page, al proporcionar el slug como argumento, WordPress puede indicarme si la página actual es la representada por ese slug. ¿Quizás estoy usando el slug incorrecto? Sin embargo, probé tanto la ruta usada en el argumento rewrite como lo que considero que es el "slug" o, en otras palabras, el elemento usado para registrar el CPT.

A continuación un fragmento de código para entender mejor:

'rewrite'               => array( 'slug' => 'faqs/archivio' )
  );

register_post_type( 'faqs', $args );

Intenté esto usando el slug para un tipo de publicación personalizado, pero no pude hacerlo funcionar.

Entonces, dos preguntas:

  1. ¿Se supone que is_page debe funcionar en este caso?
  2. Si no, ¿cuál es la mejor alternativa?

Gracias, Andrea

0
Todas las respuestas a la pregunta 2
4

La creación de un tipo de publicación personalizado lo tiene dentro de la definición, un tipo de publicación. Además, la página es solo un tipo de publicación predeterminado. Si registras tu tipo de publicación personalizado, entonces verifica ese tipo de publicación, no una página.

Etiqueta condicional is_singular

La función, etiqueta condicional is_singular() tiene como propósito principal verificar si se está viendo una publicación singular. Sin embargo, también se puede usar para verificar si se está viendo una publicación singular de un tipo de publicación dado ingresando el parámetro $post_type como se muestra en el siguiente fragmento de código.

is_singular( 'tu_tipo_de_publicacion_personalizado' );

o diferentes tipos de publicaciones

is_singular( array( 'tu_tipo_de_publicacion_personalizado_1', 'tu_tipo_de_publicacion_personalizado_2' ) );

Sugerencia para depurar

Yo uso el plugin Debug Objects para depurar temas en este contexto. Tal vez esto también te ayude, a menudo es más fácil que leer el código o el codex. Mira la siguiente captura de pantalla del plugin, el resultado de las etiquetas condicionales, incluyendo is_page() y is_single() en un CPT. Resultado de etiquetas condicionales en Debug Objects

29 abr 2014 20:49:09
Comentarios

Gracias, descargaré este plugin. ¿Puedes aclarar dónde está el error tipográfico? Aparentemente mi CPT funciona bien, así que no lo entiendo.

Andrea Moro Andrea Moro
30 abr 2014 06:40:08

¿A qué error tipográfico te refieres?

bueltge bueltge
30 abr 2014 14:01:15

Lo siento... ahora entiendo la frase. Escribiste "a post typo" donde debería haber sido "a post type". Así que pensé que era un error tipográfico de mi parte. Por cierto, he instalado el plugin, que ya no está en beta. El diseño es diferente y no puedo encontrar la salida de mi is_page o is_singular. Supongo que están en la sección debug_hooks.

Andrea Moro Andrea Moro
1 may 2014 06:51:36

Sí, fue un error de mi parte, ahora corregido a "type". Si has instalado el plugin, ve a la configuración, activa el tema condicional. Si estás en el lado, habrá depuración, haz clic en el error en la barra de administración o usa el parámetro de URL, también documentado en la página de configuración.

bueltge bueltge
2 may 2014 18:41:18
1

Puedes hacerlo así, para enrutar el archivo single.php para diferentes tipos de publicaciones.

Tengo dos archivos single.php llamados single-product.php y single-blogs.php.

Ahora en el archivo single.php he escrito mi código a continuación para redirigir diferentes publicaciones basadas en el tipo de publicación personalizado

if (get_post_type('product'))
{        
  include (TEMPLATEPATH . '/single-product.php');
}
else 
{         
 include (TEMPLATEPATH . '/single-blogs.php');
}

o

if (is_singular('product'))
{        
 include (TEMPLATEPATH . '/single-product.php');
}
else 
{         
  include (TEMPLATEPATH . '/single-blogs.php');
}
10 abr 2018 10:25:17
Comentarios

Si estás cargando archivos de plantilla, sería una mejor práctica usar get_template_part(), en lugar de include.

Jacob Peattie Jacob Peattie
10 abr 2018 11:04:12