Trusted WordPress tutorials, when you need them most.
Beginner’s Guide to WordPress
Copa WPB
25 Million+
Websites using our plugins
16+
Years of WordPress experience
3000+
WordPress tutorials
by experts

WordPress Body Class 101: Consejos y trucos para diseñadores de temas

Si eres un aspirante a diseñador de temas de WordPress, dominar CSS es clave para desbloquear un mayor control, personalización y eficiencia en tu flujo de trabajo.

Por suerte, WordPress añade automáticamente clases CSS que puedes utilizar en tus temas. Varias de estas clases CSS se añaden automáticamente a la sección <body> de cada página de un sitio web WordPress.

En este artículo, explicaremos la clase de cuerpo de WordPress. También compartiremos consejos y trucos para usar las clases de cuerpo de WordPress, a partir de años de experiencia en el desarrollo de temas, para ayudarte a mejorar tus proyectos.

Using WordPress body class for theme development
He aquí un breve resumen de lo que aprenderá en este artículo.

¿Qué es WordPress Body Class?

Body class (body_class) es una función de WordPress que permite asignar clases CSS al elemento cuerpo.

La etiqueta HTML cuerpo normalmente comienza en el archivo header.php de un tema, que se carga en cada página. Esto permite averiguar de forma dinámica qué página está viendo el usuario y añadir las clases CSS correspondientes.

Normalmente, la mayoría de los temas y frameworks de inicio ya incluyen la función body class dentro de la etiqueta HTML body. Sin embargo, si tu tema no la tiene, puedes añadirla modificando la etiqueta body de la siguiente manera:

<body <?php body_class($class); ?>>

Dependiendo del tipo de página que se muestre, WordPress añade automáticamente las clases adecuadas.

Por ejemplo, si estás en una página de archivo, WordPress añadirá automáticamente la clase archivo al elemento cuerpo. Lo hace para casi todas las páginas.

Relacionado: Descubra cómo funciona WordPress entre bastidores (infografía).

Estos son algunos ejemplos de clases comunes que WordPress podría añadir, dependiendo de la página que se esté mostrando:

.rtl {}
.home {}
.blog {}
.archive {}
.date {}
.search {}
.paged {}
.attachment {}
.error404 {}
.single postid-(id) {}
.attachmentid-(id) {}
.attachment-(mime-type) {}
.author {}
.author-(user_nicename) {}
.category {}
.category-(slug) {}
.tag {}
.tag-(slug) {}
.page-parent {}
.page-child parent-pageid-(id) {}
.page-template page-template-(template file name) {}
.search-results {}
.search-no-results {}
.logged-in {}
.paged-(page number) {}
.single-paged-(page number) {}
.page-paged-(page number) {}
.category-paged-(page number) {}
.tag-paged-(page number) {}
.date-paged-(page number) {}
.author-paged-(page number) {}
.search-paged-(page number) {}

Como puede ver, al tener a mano un recurso tan potente, puede personalizar completamente su página de WordPress utilizando sólo CSS. Puedes personalizar páginas específicas de perfil de autor, archivos basados en fechas, etc.

Dicho esto, veamos ahora cómo y cuándo utilizar la clase de cuerpo.

Cuándo utilizar la clase de cuerpo de WordPress

En primer lugar, debes asegurarte de que el elemento body de tu tema contiene la función body class como se muestra arriba. Si lo hace, entonces incluirá automáticamente todas las clases CSS generadas por WordPress mencionadas anteriormente.

Después, también podrás añadir tus propias clases CSS personalizadas al elemento cuerpo. Puedes añadir estas clases siempre que las necesites.

Por ejemplo, si desea cambiar la apariencia de los artículos de un autor concreto archivados en una categoría específica.

Cómo añadir clases de cuerpo personalizadas

WordPress tiene un filtro que puede utilizar para añadir clases de cuerpo personalizadas cuando sea necesario. Le mostraremos cómo añadir una clase de cuerpo utilizando el filtro antes de mostrarle el caso de uso específico para que todo el mundo pueda estar en la misma página.

Debido a que las clases de cuerpo son específicas del tema, necesitarías añadir el siguiente código al archivo functions. php de tu tema o en un plugin de fragmentos de código.

function my_class_names($classes) {
    // add 'class-name' to the $classes array
    $classes[] = 'wpb-class';
    // return the $classes array
    return $classes;
}
 
//Now add test class to the filter
add_filter('body_class','my_class_names');

El código anterior añadirá una clase “wpb-class” a la etiqueta cuerpo de cada página de su sitio web.

Recomendamos añadir este código con WPCode, el mejor plugin de fragmentos de código del mercado. Hace que sea seguro y fácil de añadir código personalizado en WordPress sin necesidad de editar el archivo functions.php de su tema.

Primero, necesitas instalar y activar el plugin gratuito WPCode. Si necesitas instrucciones, consulta nuestra guía sobre cómo instalar un plugin de WordPress.

Una vez activado el plugin, vaya a Fragmentos de código Añadir fragmento desde el escritorio de WordPress. A continuación, busque la opción “Añadir su código personalizado (nuevo fragmento)” y haga clic en el botón “Usar fragmento” situado debajo.

Add a new custom code snippet in WPCode

A partir de ahí, tiene que elegir ‘PHP Snippet’ como tipo de código de la lista de opciones que aparecen en la pantalla.

Select PHP Snippet as the code type

A continuación, añada un título a su fragmento de código y pegue el código anterior en el cuadro “Vista previa del código”.

Paste the code into the Code Preview box

Después, basta con cambiar el conmutador de “Inactivo” a “Activo” y hacer clic en el botón “Guardar fragmento de código”.

Activate and save your custom code snippet

Ahora puedes utilizar esta clase CSS en la hoja de estilos de tu tema directamente. Si está trabajando en su propio sitio web, también puede añadir el CSS utilizando la característica CSS personalizado en el personalizador de temas de WordPress.

Adding custom CSS in theme customizer

Para más detalles, consulte nuestra guía sobre cómo añadir fácilmente CSS personalizado a su sitio WordPress.

Añadir clase de cuerpo usando un plugin de WordPress

Si no estás trabajando en un proyecto para un cliente y no quieres escribir código, este método te resultará más sencillo.

Lo primero que debe hacer es instalar y activar el plugin Custom Body Class. Para más detalles, consulta nuestra guía paso a paso sobre cómo instalar un plugin de WordPress.

Una vez activado, debe visitar la página Ajustes ” Clase de cuerpo personalizada. Desde aquí puedes establecer los ajustes del plugin.

Custom Body Class settings

Puede seleccionar los tipos de entradas en los que desea activar la característica de clase de cuerpo y quién puede acceder a ella. No olvides hacer clic en el botón “Guardar cambios” para guardar tus ajustes.

A continuación, puedes dirigirte a editar cualquier entrada o página de tu sitio WordPress. En la pantalla de edición de entradas, encontrará una nueva caja meta en la columna de la derecha llamada “Clases de entradas”.

Adding body classes to a post in WordPress

Haz clic para añadir tus clases CSS personalizadas. Puede añadir varias clases separadas por un espacio.

Una vez que haya terminado, sólo tiene que guardar o publicar su entrada. El plugin añadirá tus clases CSS personalizadas a la clase del cuerpo para esa entrada o página en particular.

Uso de etiquetas condicionales con la clase Cuerpo

La verdadera potencia de la función body_class viene cuando se utiliza con las etiquetas condicionales.

Estas etiquetas condicionales son tipos de datos verdadero o falso que comprueban si una condición es verdadera o falsa en WordPress. Por ejemplo, la etiqueta condicional is_home comprueba si la página que se muestra actualmente es la página de inicio o no.

Esto permite a los desarrolladores de temas comprobar si una condición es verdadera o falsa antes de añadir una clase CSS personalizada a la función body_class.

Veamos algunos ejemplos de uso de etiquetas condicionales para añadir clases personalizadas a la clase cuerpo.

Digamos que quieres dar un estilo diferente a tu página de inicio para los usuarios conectados con el perfil de usuario autor. Aunque WordPress genera automáticamente una clase .inicio y .conectado, no detecta el perfil del usuario ni lo añade como clase.

Ahora, este es un escenario donde puedes usar las etiquetas condicionales con algún código personalizado para añadir dinámicamente una clase personalizada a la clase cuerpo.

Para ello, añada el siguiente código al archivo functions.php de su tema o al plugin de fragmentos de código.

function wpb_loggedin_user_role_class($classes) { 
 
// let's check if it is homepage
if ( is_home() ) {
 
// Now let's check if the logged in user has author user role.  
$user = wp_get_current_user();
if ( in_array( 'author', (array) $user->roles ) ) {
    //The user has the "author" role
    // Add user role to the body class
    $classes[] = 'author';
    // Return the classes array
    return $classes;      
} 
} else { 
// if it is not homepage, then just return default classes
return $classes; 
}
} 
 
add_filter('body_class', 'wpb_loggedin_user_role_class');

Veamos ahora otro ejemplo útil. Esta vez vamos a comprobar si la página mostrada es una vista previa de un borrador de WordPress.

Para ello utilizaremos la etiqueta condicional is_preview y añadiremos nuestra clase CSS personalizada.

function add_preview_class($classes) { 
if ( is_preview() )  {
$classes[] = 'preview-mode';
return $classes;
}
return $classes; 
}
add_filter('body_class','add_preview_class');

Ahora, añadiremos el siguiente CSS a la hoja de estilos de nuestro tema para utilizar la nueva clase CSS personalizada que acabamos de añadir.

.preview-mode .site-header:before { 
content:'preview mode';
color:#FFF;
background-color:#ff0000;
}

Así es como se ve en nuestro sitio de demostración:

Custom preview mode CSS class added to the body class

Puede comprobar la lista completa de etiquetas condicionales que puede utilizar en WordPress. Esto le proporcionará un práctico conjunto de etiquetas listas para usar en su código.

Otros Ejemplos de Añadir Dinámicamente Clases de Cuerpo Personalizadas

Aparte de las etiquetas condicionales, también puede utilizar otras técnicas para obtener información de la base de datos de WordPress y crear clases CSS personalizadas para la clase cuerpo.

Añadir nombres de categorías a la clase cuerpo de una página de una sola entrada

Digamos que quieres personalizar la apariencia de entradas individuales basándote en la categoría en la que están archivadas. Puede utilizar la clase cuerpo para conseguirlo

En primer lugar, tienes que añadir los nombres de las categorías como clase CSS en las páginas de entradas individuales. Para ello, añade el siguiente código al archivo functions.php de tu tema o a un plugin de fragmentos de código como WPCode:

// add category nicenames in body class
function category_id_class($classes) {
    global $post;
    foreach((get_the_category($post->ID)) as $category)
        $classes[] = $category->category_nicename;
    return $classes;
}
  
add_filter('body_class', 'category_id_class');

El código anterior añadirá la clase de categoría en su clase de cuerpo para páginas de una sola entrada. A continuación, puede utilizar las clases CSS para darle el estilo que desee.

Añadir slug de página a la clase cuerpo

Pegue el siguiente código en el archivo functions.php de su tema o en un plugin de fragmentos de código:

//Page Slug Body Class
function add_slug_body_class( $classes ) {
global $post;
if ( isset( $post ) ) {
$classes[] = $post->post_type . '-' . $post->post_name;
}
return $classes;
}
add_filter( 'body_class', 'add_slug_body_class' );

De nuevo, recomendamos añadir este código en WordPress utilizando un plugin de fragmentos de código como WPCode. De esta manera, no tendrá que preocuparse acerca de romper su sitio.

Empieza por instalar y activar el plugin gratuito WPCode. Si necesitas ayuda, sigue esta guía sobre cómo instalar un plugin de WordPress.

Una vez activado el plugin, vaya a Fragmentos de código Añadir fragmento desde el escritorio de WordPress. A continuación, haga clic en el botón “Usar fragmento” situado debajo de la opción “Añadir su código personalizado (nuevo fragmento)”.

Add a new custom code snippet in WPCode

A continuación, seleccione “Fragmento de código PHP” como tipo de código.

Select PHP Snippet as the code type

A continuación, añada un título para su fragmento de código y pegue el código anterior en el cuadro “Vista previa del código”.

Paste code snippet into WPCode

Por último, cambie el conmutador de “Inactivo” a “Activo” y haga clic en el botón “Guardar fragmento de código”.

Activate and save your custom code snippet

Detección de navegadores y clases de cuerpo específicas de los navegadores

A veces puede encontrarse con problemas en los que su tema puede necesitar CSS adicional para un navegador / explorador en particular.

Ahora, la buena noticia es que WordPress detecta automáticamente el navegador al cargar y luego almacena temporalmente esta información como una variable global.

Sólo tiene que comprobar si WordPress ha detectado un navegador / explorador específico y luego añadirlo como una clase CSS personalizado.

Simplemente, copie y pegue el siguiente código en el archivo functions.php de su tema o en el plugin de fragmentos de código:

function wpb_browser_body_class($classes) { 
    global $is_iphone, $is_chrome, $is_safari, $is_NS4, $is_opera, $is_macIE, $is_winIE, $is_gecko, $is_lynx, $is_IE, $is_edge;
 
if ($is_iphone)    $classes[] ='iphone-safari';
elseif ($is_chrome)    $classes[] ='google-chrome';
elseif ($is_safari)    $classes[] ='safari';
elseif ($is_NS4)    $classes[] ='netscape';
elseif ($is_opera)    $classes[] ='opera';
elseif ($is_macIE)    $classes[] ='mac-ie';
elseif ($is_winIE)    $classes[] ='windows-ie';
elseif ($is_gecko)    $classes[] ='firefox';
elseif ($is_lynx)    $classes[] ='lynx';
elseif ($is_IE)      $classes[] ='internet-explorer';
elseif ($is_edge)    $classes[] ='ms-edge';
else $classes[] = 'unknown';
     
return $classes;
}
add_filter('body_class','wpb_browser_body_class');

A continuación, puede utilizar clases como:

.ms-edge .navigation {some item goes here}

Si se trata de un pequeño problema de relleno o margen, esta es una forma bastante sencilla de corregirlo.

Definitivamente hay muchos más escenarios en los que el uso de la función body_class puede ahorrarle escribir largas líneas de código. Por ejemplo, si estás usando un framework de temas como Genesis, entonces puedes usarlo para añadir clases personalizadas en tu tema hijo.

Puede utilizar la función body_class para añadir clases CSS para estructuras de página de ancho completo, contenido de la barra lateral, cabeceras y pies de página, etc.

Guías de expertos en diseño de temas para WordPress

¿Buscas más tutoriales? Marque / compruebe nuestras otras guías sobre diseño de temas en WordPress:

Esperamos que este artículo te haya ayudado a aprender a usar la clase cuerpo de WordPress en tus temas. Puede que también quieras ver nuestro artículo sobre cómo dar estilo a cada entrada de WordPress de forma diferente, y nuestra comparativa de los mejores plugins WordPress page builder.

If you liked this article, then please subscribe to our YouTube Channel for WordPress video tutorials. You can also find us on Twitter and Facebook.

Descargo: Nuestro contenido está apoyado por los lectores. Esto significa que si hace clic en algunos de nuestros enlaces, podemos ganar una comisión. Vea cómo se financia WPBeginner , por qué es importante, y cómo puede apoyarnos. Aquí está nuestro proceso editorial .

Avatar

Editorial Staff at WPBeginner is a team of WordPress experts led by Syed Balkhi with over 16 years of experience in WordPress, Web Hosting, eCommerce, SEO, and Marketing. Started in 2009, WPBeginner is now the largest free WordPress resource site in the industry and is often referred to as the Wikipedia for WordPress.

El último kit de herramientas de WordPress

Obtenga acceso GRATUITO a nuestro kit de herramientas - una colección de productos y recursos relacionados con WordPress que todo profesional debería tener!

Reader Interactions

13 comentariosDeja una respuesta

  1. jenny

    plsss give me example outwitting a crocodile theme plsssssssss

  2. Corrinda

    Thank you after reading a number of articles regarding the body-class this is the one the finally sunk in.

    Got it working on individual pages and on category pages this is great. The use cases are what made the difference for me.

  3. Yolanda

    Great tips! I’m trying to figure out how to add the menu class (the one you can enter in the admin) to body_class:

    [pre]
    /** Add nav menu css class to body class */
    function add_nav_menu_css( $classes ) {
    $classes[] = ‘menu-class-from-admin’;
    return $classes;
    }
    add_filter( ‘body_class’, ‘add_nav_menu_css’ );
    [/pre]

  4. Seth Burleigh

    Great tips. I”m trying to do this, and when inserting “page-template page-template-(template file name)” into my header file such that I have:

    <body >

    And I then modify my CSS to include: .page-template-home_corechella

    I am left with a completely blank page. Nothing. What am I doing wrong? Thanks!

  5. Rasha

    i have news page that get posts using category.php , i want to give it specific class so i can make the content wide and without the sidebar , how i can do that ?

  6. Vajrasar

    Indeed a good writeup and very informative. Just a question – For example if I add Browser Specific Body Class today and after few days I need to apply Page Class in Body Slug. Then will the settings/css that I did with Browser Specific Body class will get ruined or not?

    • Editorial Staff

      No it will not get ruined. It can be overridden depending on how your CSS is written.

      Administrador

Deja tu comentario

Gracias por elegir dejar un comentario. Tenga en cuenta que todos los comentarios son moderados de acuerdo con nuestros política de comentarios, y su dirección de correo electrónico NO será publicada. Por favor, NO utilice palabras clave en el campo de nombre. Tengamos una conversación personal y significativa.