Contenido

WordPress y la funciones condicionales

20 Feb

+ 30

WordPress dispone de un montón de funciones condicionales que nos permite conocer ciertos datos desde nuestros themes. Estas funciones son realmente útiles si queremos centralizar alguna funcionalidad sin tener que depender de otros ficheros o complicadas comprobaciones. Conocerlas nos ahorrarán un tiempo que podemos emplear en salir a pasea, que empieza a mejorar el tiempo.

Condiciones para…

Página principal

is_home() 
Cuando estamos en la página inicial.

Un post «single»

is_single() 
Nos indica si estamos en un post «single»
is_single('17') 
Nos indica si estamos en el post «single» con id «17»
is_single('Beef Stew') 
Nos indica si estamos en el post «single» con el título «Beef Stew»
is_single('beef-stew') 
Nos indica si estamos en el post «single con el post slug «beef-stew»

Cualquier página con comentarios

comments_open()
Nos indica si tenemos los comentarios abiertos y podemos comentar.Requiere estar en el WordPress Loop.
pings_open()
Nos indica si tenemos los pings abiertos y podemos recibirlos.Requiere estar en el WordPress Loop.

Una página

Cuando escribimos un post podemos elegir entre post o página, estas opciones se refieren a este tipo de entradas.

is_page() 
Cuando estamos en una página
is_page('42') 
Cuando estamos en una página con ID 42
is_page('About Me') 
Cuando estamos en una página con el título «About Me»
is_page('about-me') 
Cuando estamos en una página con el page slug about-me»

Por desgracia, wordpress no dispone de una función  is_subpage(), pero tenemos una solución para esta carencia.

if(get_the_title($post->post_parent) != the_title(' ' , ' ',false)) { echo "This is a subpage"; } 
Determina si la página tiene padre, si es asi nos mostrará el texto por pantalla.

En categorias

is_category() 
Nos indica que estamos viendo una categoría
is_category('6') 
Nos indica que estamos viendo una categoría con ID 6
is_category('Cheeses') 
Nos indica que estamos viendo una categoría con Nombre «Cheeses»
is_category('cheeses') 
Nos indica que estamos viendo una categoría con category slug «cheeses»
in_category('5') 
Nos indica si un post está dentro de la categoría con ID . Muy util para por ejemplo los asides.

En Autores

Las páginas de autores son las que se encuentra en authors.php.

is_author() 
Nos indica si estamos viendo una página de autor
is_author('1337') 
Nos indica si estamos viendo una página de autor con ID 1337
is_author('Elite Hacker') 
Nos indica si estamos viendo una página de autor con Nickname «Elite Hacker»
is_author('elite-hacker') 
Nos indica si estamos viendo una página de autor con Nicename «elite-hacker»

En Fecha

Cuando estamos buscando por fecha, mediante el calendario (por ejemplo).

is_date() 
Nos indica si estamos buscando por cualquier tipo de fecha
is_year() 
Nos indica si estamos buscando por fechas según un año
is_month() 
Nos indica si estamos buscando por fechas según un mes
is_day() 
Nos indica si estamos buscando por fechas según un día
is_time() 
Nos indica si estamos buscando por fechas según un una hora, minuto o segundo.

En Archivos

is_archive() 
Nos indica si estamos mostrando algún tipo de archivo (Categorias, Autores, Fechas,..)

Página de resultados

is_search() 
Nos indica si hemos realizado una busqueda

404 Not Found Page

is_404() 
Nos indica si nos encontramos la página 404.

Página páginada

is_paged() 
Nos indica si estamos usando <!--nextpage--> para página nuestra página o post.

Un Attachment

is_attachment() 
Nos indica si el post o página dispone de un attachement  o no.

Sindicacion

is_feed() 
Nos indica si se trata de un feed o no.

A Trackback

is_trackback() 
Nos indica si se trata de un trackback o no.

Ejemplo de uso

Veamos un ejemplo de uso para comprobar si estamos en un post «single» o no.

if (is_single()) {
     echo 'Estoy en un post';
} else  if (is_home()){
echo "Estoy en la home";
} else if (is_feed()) {
	echo "<info>Estamos en el RSS</info>";}

Articulo relacionado:

  • Creo que le voy a sacar mucho provecho a este post, hace tiempo que quería cambiar la sidebar, o sea que sea diferente en el home y en los posts, y creo que gracias a este post lo voy a coseguir de forma muy fácil. 😛

  • Lamentablemente, si una categoria tiene nombre con digitos, no puedes usar is_category para nombre ni slug, porque al tener numeros lo toma como ID…

  • Me ganaste de mano!
    A pensar otra cosa para postear 🙁 .

    Igual esta muy bueno, aunque yo lo hubiese escrito mejor. Jejeje! no, muy bueno enserio!

  • Sabes como condicionar a que de acuerdo al autor del post realice alguna accion? porque de momento he tenido que escribir algo como:

    pero me gustaría el ese ‘blablabla’ en cada post del usuario ‘fulanito’

    (esto en el single.php)

  • Mil gracias, me sirvio para http://www.resqband.com (la barra de noticias en flash) solo en el home 😉

  • ps. No olvidando que cuandoo necesitamos mandar html dentro del if en php, las » se sustituyen por \»

  • Andres yo tengo una duda aunque te parezca algo simple.Quiero que apareca por ejemplo
    Hola mundo si estoy en el home.
    Y si estoy en otro lugar ya sea categoria, single, etc… Adios mundo.
    Que funcion deberia utilizar para que abarque todo lo demas. Gracias un saludo

  • #7 Prueba con algo asi 😀

    
    if (is_home()) {
         echo 'HOLA MUNDO';
    } else{
         echo "ADIOS MUNDO";
    }
    
  • Me gustaría saber cómo puedo hacer que, tras esta línea:

    sólo muestre los posts de una categoría, por ejemplo de la categoría Nacional

  • «»

    no ha escrito la linea. la he vuelto a copiar entre comillas a ver si cuela

  • Hola buenas,

    Estaba buscando una función para que me diga si el blog ha sido modificado HOY, o un plugin para que se muestre algo si el blog ha sido modificado HOY.

  • #12 Te refieres a si se ha escrito algo? Un post? un comentario? O algo asi?

  • Quería poner una etiqueta (o imagen) que diga que hay un post nuevo. Había pensado un plugin, widget, función o algo que me diga la fecha del último post publicado para mostrar yo la imagen.

    Ahora mismo lo estoy haciendo «a pelo», con una consulta a base de datos y comparando la fecha del post último con la del sistema… Pero me imaginaba que debería haber algo ya hecho…

  • Algunas más:
    is_tag() la considero bastante útil e importante si los usas: Nos indica si es cualquier plantilla de tags, archivo, etiqueta sencilla, etc

    is_front_page()
    Si es la página principal, pero establecida en una plantilla desde las opciones.

    is_page_template()
    Muy útil también, nos dice si estamos usando una plantilla y se le puede pasae como parámetro el nombre de la plantilla.

    En administración:
    is_admin() o is_preview()

    Y luego las internas… desde luego es abrumador el montón de funciones de WordPress, es prácticamente muy difícil que cualquier función en la que pensemos no esté ya en WordPress ^^

    PD: Todas las de adjuntos o manejo de imágenes las considero geniales, algunas de las que más aprecio:
    wp_attachment_is_image()
    Que nos dice si el adjunto es una imagen.

    is_comment_popup() que imagino para el popup de comentarios aunque no sé quien la usa :S
    is_singular() imagino que se refiere a is_single, is_plugin_page() creo que es, obviamente, para saber si es una página de opciones o algo, del plugin…

    En fin, saludos 😉

  • Rafa:

    Puedes usar get_post
    Luego una simple comparación de la fecha del post con la fecha actual. Incluso te serviría la función, quizá desconocida de WordPress, human_time_diff() que te muestra el lapso de tiempo transcurrido 😉

  • Que tal, tengo una pregunta yo utilizo estos condicionales, pero he visto en algun lado y ya no me acuerdo que se puede pasar como parametro para una categoría todos los post de esta, osea era algo asi como post-parent el codigo.

    Lo que necesito es esto, en la single.php donde se abren los post quiero que en todos los post de determinada categoría me aparezca un include, pero no logro hacerlo, le pongo el condicional is_category(‘nombre’) y no hay caso, también probe con array pero hay que poner el nombres exactos tambien,

    me pueden dar una mano , gracias

  • Graaaaaaaaaaaaaaaaaaaaaaaaacias.!!!!!!!!!!!

    He estado horas buscando algo como esto.

    saludos

  • Saludos. La condicion is_home no funciona en mi tema. T

  • Pues yo tengo que cuando se clica una categórí sólo salen los títulos del post, pero me gustaría que sólo en una categoría en concreto me apareciera titulo y el content.

    Y no hay manera, oye.

Comentar

#

Me reservo el derecho de eliminar y/o modificar los comentarios que contengan lenguaje inapropiado, spam u otras conductas no apropiadas en una comunidad civilizada. Si tu comentario no aparece, puede ser que akismet lo haya capturado, cada día lo reviso y lo coloco en su lugar. Siento las molestias.