Tu hogar de recursos

Encuentra plantillas web, plugins y más …

Cómo añadir atributos y clases al body de una página específica en WordPress @ Ayuda WordPress


Cuando tienes una web en HTML y tienes que modificar o añadir atributos a cualquier parte del código es sencillo, simplemente abres el archivo .html y lo editas. Fin de la película.

Ahora bien, ¿qué pasa con WordPress o cualquier otro CSMS?

Lo que pasa es que WordPress no crea archivos .html, de hecho el HTML que lee el navegador de tus visitantes no existe hasta el preciso momento en el que visitan una URL, y entonces WordPress, mediante su programación, crea en tiempo real el HTML que el navegador del visitante puede leer, interpretar, y mostrar al usuario.

La única salvedad de esta situación es cuando usas caché, pues se generan previamente los ficheros HTML, pero sigue siendo sobre una base única, y conjunta, en principio no existe un fichero .html para cada URL de tu web.

Otra situación que se suele dar es que necesites modificar las páginas o entradas para añadir o modificar elementos de las mismas, en cuyo caso lo que haremos habitualmente es modificar la plantilla (single.php, page.php) pertinente del tema activo, o incluso crear una nueva plantilla de página o plantilla de entrada.

Eso está muy bien, pero ¿y si tengo que modificar o añadir atributos a la cabecera o cualquier otra parte del HTML de una página en concreto, no de todas?

En este caso, es verdad, podríamos crear una plantilla de página que únicamente usemos para «esa» página pero es una demasía, sobre todo si podemos usar ganchos para añadir atributos a la cabecera – y cualquier parte – de una página, entrada o lo que haga falta.

Igual piensas que esto no se usa mucho pero no es así, en montones de ocasiones hay que añadir atributos personalizados a la cabecera (head) o cuerpo (body) de una página concreta, a efectos de seguimiento, para mostrar ciertos scripts, y montones de situaciones más, que con el tiempo te encontrarás.

Añadir atributos a la cabecera de una única página

Una vez que tenemos claro el objetivo, y lo que queremos, solo quedaría crear una función que «filtre» con la parte del HTML en la que queremos añadir los atributos, indicarle en qué página queremos que se añadan, y añadirlos.

En este ejemplo voy a añadir 2 atributos personalizados (destacados en rojo) al body de una página. Para ello engancharemos con el filtro body_class de WordPress, al que añadiremos mediante el comando echo los atributos. Solo hay que añadirle antes el condicional indicando a qué página (slug o ID) añadirlo y lo tenemos.

Un código como el siguiente lo conseguirá:

/* Añade atributos personalizados a pagina específica */
add_filter('body_class', 'ayudawp_atributos_personalizados_en_body');
function ayudawp_atributos_personalizados_en_body ($classes) {
if (is_page("slug-de-mi-pagina")){echo 'data-region="direct-book" data-channelcode="WebCursosWP"';}
return $classes;
}

El código anterior podemos agregarlo al archivo functions.php del tema activo, como plugin personalizado o mediante un plugin de inserción de fragmentos de código.

Una vez guardes los cambios, los atributos se añadirán al body de la página indicada, pudiendo comprobarlo viendo el código fuente.

atributos personalizados body wordpressatributos personalizados body wordpress

Ah, perdona, que me lo he pensado mejor ¿se puede usar este truco para añadir atributos a la cabecera de toda la web?

Pues claro, simplemente no incluyas el condicional, o sea, que sería algo así:

/* Añade atributos personalizados a todas las  páginas */
add_filter('body_class', 'ayudawp_atributos_personalizados_en_body');
function ayudawp_atributos_personalizados_en_body ($classes) {
{echo 'data-region="direct-book" data-channelcode="WebCursosWP"';}
return $classes;
}

Ah, que lo que yo quiero es añadir clases personalizadas, no atributos

Si en vez de añadir atributos lo que necesitas es añadir clases CSS específicas, entonces un código que te servirá de referencia sería el siguiente:

/* Clases CSS personalizadas a tag body */
function ayudawp_clase_css_body($wp_classes, $classes)
{
$post = get_post();
//Clase CSS a toda la web
$classes[] .= 'mi-clase-css';
// Clase CSS solo a las páginas
if (is_page()) {
$classes[] = 'mi-clase-css-paginas';
}
// Clase CSS solo para entradas y otros cpt
if (is_singular()) {
$classes[] = 'mi-clase-css-posts';
}
return array_merge($wp_classes, (array)$classes);
}
add_filter('body_class', 'ayudawp_clase_css_body', PHP_INT_MAX, 2);

En estos ejemplos se añadirán nuestras clases a la etiqueta class= de la tag body de nuestra web.

clase css personalizada body wordpressclase css personalizada body wordpress

Fácil ¿verdad?

¿Te gustó este artículo? ¡Ni te imaginas lo que te estás perdiendo en YouTube!



Fuente Original:

Compartir: