Crear metatags en WordPress sin usar plugins

08/10/2019 | PHP, SEO, WordPress | 2 comentarios

Crear automáticamente los metatags (title, description) para sitios en Wordpress sin necesidad de plugins adicionales.

Descargar archivos


Si tienes un sitio web creado con WordPress necesitas incluir los metatags (title, description) que se utilizarán en los resultados de búsqueda.

Aprovechando los métodos de WordPress crearemos dos funciones para crear y formatear automáticamente el título y la descripción de la página, esto lo haremos en el archivo functions.php para que puedan usarse en el template.

Título

La etiqueta <title> contiene el titulo y debe contemplar las siguientes recomendaciones:

  • No debe exceder los 60 caracteres
  • Debe contener el título del artículo, de la categoría o de la página actual.
  • Si es una página interna debe concatenarse con el nombre del sitio.
  • No debe contener etiquetas HTML.

Con esta información creamos una función para generar el título:


/**
 * Make and format title on WordPress
 */
function make_title()
{
    $sitename = get_bloginfo("name");
    $maxlength = 60;
    $maxlength = $maxlength - strlen($sitename) - 3;

    // title of article or page
    if (is_page() || is_single()) {
        $title = get_the_title();
    }

    // title of category
    if (is_category()) {
        $title = single_cat_title('', false);
    }

    // clean title
    $title = strip_tags($title);
    $title = trim($title);

    // limit title to max characters
    if (strlen($title) > $maxlength) {
        $subtext = substr($title, 0, $maxlength - 3);
        $endspace = strrpos($subtext, ' ');
        $title = substr($subtext, 0, $endspace) . '...';
    }

    // if internal page concatenate Sitename
    if (is_page() || is_single() || is_category()) {
        $title = $title . " | " . $sitename;
    } else {
        $title = $sitename;
    }
    
    echo $title;
}

Descripción

La etiqueta <meta name="description"> contiene un resumen del contenido de la página actual y debe seguir las siguientes recomendaciones:

  • No debe exceder los 160 caracteres
  • Para el home debe contener la descripción del sitio.
  • Para las internas debe contener un resumen de la página.
  • No debe contener etiquetas HTML.

Con esta información creamos una función para generar la descripción:


/**
 * Make and format description on WordPress
 */
function make_description()
{
    $maxlength = 160;
    $description = get_bloginfo("description");

    // description of article or page
    if (is_page() || is_single()) {
        $description = get_the_excerpt();
    }

    // description of category
    if (is_category()) {
        $description = category_description();
    }

    // clean description
    $description = strip_tags($description);
    $description = trim($description);

    // limit description to max characters
    if (strlen($description) > $maxlength) {
        $subtext = substr($description, 0, $maxlength - 3);
        $endspace = strrpos($subtext, ' ');
        $description = substr($subtext, 0, $endspace) . '...';
    }

    echo $description;
}

Ejemplo de uso

Una vez creadas las funciones, sólo tienes que llamar estas funciones en el archivo header.php de la siguiente manera:



<html lang="es">
  <head>
    <meta charset="uft-8">
    <title><?php make_title(); ?></title>
    <meta name="description" content="">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <?php wp_head(); ?>
  </head>

Se puede observar que se han contemplado sólo los títulos de: home, categorías, paginas y artículos. Pero dependiendo de tus necesidades puedes agregar nuevas reglas para: archivos, autores o tags.

Referencias

Comentarios

Diseño web Sevilla 26/10/2020 2:56 am

Gracias por la información. Vamos a probar pero hoy día todavía sigue siendo de utilidad poner metatags?

Framber Ereu 27/02/2023 6:16 am

Muchas gracias por la información. Voy a probar esta función.

Un saludo.

Envíar Comentario

En este sitio los comentarios se publican previa aprobación del equipo de Kodetop. Evita los comentarios ofensivos, obscenos o publicitarios. Si deseas publicar código fuente puedes hacerlo entre las etiquedas <pre></pre>