¿Cuál es la diferencia entre is_single() e is_singular()?

La función is_single() devuelve true si el contenido actual es una entrada única, un post.

La función is_singular() devuelve true si el contenido actual es una entrada, página, custom post type, etc. Cualquier tipo de contenido, pero que sea único. Devuelve false si el contenido actual es una página de categoría, etiqueta o un listado cronológico de entradas.

Ambas tienen en común que se utilizan para variar el comportamiento o el aspecto de la página actual en función del tipo de contenido que se está cargando.

Ten en cuenta que, si no hay contenido, también devuelve false, así que no te confíes pensando que tienes una pila de artículos por delante cuando en realidad no hay nada.

Keep Calm. I am single.

Un ejemplo para que lo veas más claro: 

if ( is_singular() ) {
    //carga un script y una hoja de estilos     
    wp_enqueue_script( … );
    wp_enqueue_style( … );
} else {
    // carga un paginador
}

La función is_single() tiene dos funciones hermanas de utilidad similar: 

  • is_page(): si el contenido actual es una página única.
  • Is_attachment(): si el contenido actual es un enlace único (no creo que nadie use esto a estas alturas) 

La función is_singular() no tiene hermanas, pero si tiene varias “contrarias”:

  • is_category()
  • is_tag()
  • is_archive()
  • is_author()
  • is_search()
  • is_tax()

A toda esta “familia» tan numerosa se les llama Conditional Tags y todas aceptan un parámetro que puede ser de tipo entero, cadena o array para poder ser más específicos en la búsqueda:

  • En el caso de is_single() y sus hermanas se le puede pasar el ID concreto del contenido, el slug o un array de identificadores o slugs. 
  • En el caso de is_singular(), y sus contrarias, se puede especificar el tipo de contenido concreto o un array de tipos de contenido.

Por otro lado, no sé si has caído en la cuenta de que estas funciones tal como las ves tienen utilidad en las plantillas de los temas, pero no en un plugin.

Desde un plugin tienes la misma funcionalidad a través de la clase WP_Query que incorpora todos estos métodos: is_single, is_page, is_archive, is_preview, is_author, is_category, is_tag, is_tax, is_search, is_feed, is_comment_feed, is_404, is_attachment, is_singular.

Referencias

2 comentarios en “¿Cuál es la diferencia entre is_single() e is_singular()?

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *