SEO «a la brava» en WordPress, ¡pasa de plugins!

loco seo

¿Todavía no sabes qué plugin de SEO elegir para WordPress?, ¿crees que WordPress SEO de Yoast se pasa de largo y All in one SEO pack se pasa de frenada?, ¿tienes varios plugins que se pelean entre ellos y no sabes cual desactivar?, ¿estás perdido entre tantas configuraciones SEO? o ¿te has cargado el posicionamiento de tu web haciendo chapuzas?.

¡Pasa de plugins SEO!

… SEO en WordPress sin plugins …

locura seo

Si quieres olvidarte de actualizaciones de plugins SEO, configuraciones para expertos e incluso ¡tener que decidir cual poner!, pues nada, abre tu fichero functions.php o tu propio plugin de utilidades y añade este código SEO:

/* SEO WordPress a la brava
	Uso: 
		1. agrega este código a tu fichero functions.php
		2. reempleza la cadena $default_keywords con las tuyas
		3. añade <?php echo seo_wp_bravo(); ?> al archivo header.php
		4. comprueba que todo funciona bien y no has roto nada

	Opcional: añade palabras clave o una descripción, título a cualquier entrada o página usando estas claves de campo personalizado:

		mm_seo_desc
		mm_seo_keywords
		mm_seo_title

Para migrar desde cualquier plugin SEO reemplaza sus claves de campo personalizado con las claves anteriores. Más información:

		
SEO «a la brava» en WordPress, ¡pasa de plugins!
*/ function seo_wp_bravo() { global $page, $paged, $post; $default_keywords = 'wordpress, plugins, temas, seo, programación, seguridad, htaccess, apache, php, sql, html, css, jquery, javascript, tutorials'; // personaliza esto $output = ''; // descripción $seo_desc = get_post_meta($post->ID, 'mm_seo_desc', true); $description = get_bloginfo('description', 'display'); $pagedata = get_post($post->ID); if (is_singular()) { if (!empty($seo_desc)) { $content = $seo_desc; } else if (!empty($pagedata)) { $content = apply_filters('the_excerpt_rss', $pagedata->post_content); $content = substr(trim(strip_tags($content)), 0, 155); $content = preg_replace('#\n#', ' ', $content); $content = preg_replace('#\s{2,}#', ' ', $content); $content = trim($content); } } else { $content = $description; } $output .= '<meta name="description" content="' . esc_attr($content) . '">' . "\n"; // palabras clave $keys = get_post_meta($post->ID, 'mm_seo_keywords', true); $cats = get_the_category(); $tags = get_the_tags(); if (empty($keys)) { if (!empty($cats)) foreach($cats as $cat) $keys .= $cat->name . ', '; if (!empty($tags)) foreach($tags as $tag) $keys .= $tag->name . ', '; $keys .= $default_keywords; } $output .= "\t\t" . '<meta name="keywords" content="' . esc_attr($keys) . '">' . "\n"; // robots if (is_category() || is_tag()) { $paged = (get_query_var('paged')) ? get_query_var('paged') : 1; if ($paged > 1) { $output .= "\t\t" . '<meta name="robots" content="noindex,follow">' . "\n"; } else { $output .= "\t\t" . '<meta name="robots" content="index,follow">' . "\n"; } } else if (is_home() || is_singular()) { $output .= "\t\t" . '<meta name="robots" content="index,follow">' . "\n"; } else { $output .= "\t\t" . '<meta name="robots" content="noindex,follow">' . "\n"; } // títulos $title_custom = get_post_meta($post->ID, 'mm_seo_title', true); $url = ltrim(esc_url($_SERVER['REQUEST_URI']), '/'); $name = get_bloginfo('name', 'display'); $title = trim(wp_title('', false)); $cat = single_cat_title('', false); $tag = single_tag_title('', false); $search = get_search_query(); if (!empty($title_custom)) $title = $title_custom; if ($paged >= 2 || $page >= 2) $page_number = ' | ' . sprintf('Página %s', max($paged, $page)); else $page_number = ''; if (is_home() || is_front_page()) $seo_title = $name . ' | ' . $description; elseif (is_singular()) $seo_title = $title . ' | ' . $name; elseif (is_tag()) $seo_title = 'Archivo de la etiqueta: ' . $tag . ' | ' . $name; elseif (is_category()) $seo_title = 'Archivo de la categoría: ' . $cat . ' | ' . $name; elseif (is_archive()) $seo_title = 'Archivo: ' . $title . ' | ' . $name; elseif (is_search()) $seo_title = 'Búsqueda: ' . $search . ' | ' . $name; elseif (is_404()) $seo_title = '404 - No encontrado: ' . $url . ' | ' . $name; else $seo_title = $name . ' | ' . $description; $output .= "\t\t" . '<title>' . esc_attr($seo_title . $page_number) . '</title>' . "\n"; return $output; }

… ¿Qué hace este código SEO? …

Optimiza tus páginas y entradas WordPress para los motores de búsqueda, incluyendo los siguientes metadatos en la sección head de tu tema WordPress.:

  • Meta description – utiliza metas personalizados si existen, en caso contrario utiliza las primeras 155 palabras del contenido.
  • Meta keywords – utiliza metas personalizados si existen, en caso contrario los genera desde etiquetas y categorías
  • Meta Robots – incluye etiquetas meta robots del tipo index/follow o noindex/follow dependiendo de la página
  • Título SEO – utiliza metas personalizadas si existen, en caso contrario crea un título único y optimizado

Son elementos útiles, pero sobre todo beneficiosos para el posicionamiento en buscadores de tus entradas y páginas, que es lo que vienen a hacer los plugins de SEO más populares como los que he citado al principio.

En definitiva, viene a ser una versión refinada de la posibilidad de meter las etiquetas SEO en la cabecera de tu tema WordPress, que ya vimos.

El «problema» con la mayoría de plugins SEO es que meten demasiadas funcionalidades adicionales, sobrecargando innecesariamente WordPress, sobre todo si eres de los que prefieren tener controlados elementos vitales para tu web como los mapas del sitio, analíticas, o ficheros tan importantes como .htaccess o robots.txt en vez de confiar en las configuraciones por defecto de plugins creados por otros.

VALORA Y COMPARTE ESTE ARTÍCULO PARA MEJORAR LA CALIDAD DEL BLOG…
(18 votos, promedio: 4.6)

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

AVISO: Esta publicación es de hace 3 años o más. Si es un código o un plugin podría no funcionar en las últimas versiones de WordPress, y si es una noticia podría estar ya obsoleta. Luego no digas que no te hemos avisado.

38 comentarios en “SEO «a la brava» en WordPress, ¡pasa de plugins!”

  1. Xavier Ocampos

    Genial Fernando! este método no me lo conocía y por lo que mencionas se ve fenomenal. Como ya habia mencionado, si se puede hacer sin plugins mejor que mejor, aunque mi jefe – que recientemente a descubierto WordPress gracias a mi después de años utilizando DotNetNuke – es fanático de instalar plugins a pares, para tener todas las funciones del mundo a su disposición aunque no utilice ni tan siquiera una cuarta parte de todas ellas… luego WordPress dará fallos y encima la culpa sera mía por recomendarlo…

    1. Amigo, de casualidad me puedes ayudar con este apartado:

      mm_seo_desc

      mm_seo_keywords

      mm_seo_title

      Realmente no entiendo cómo usar esas claves y sería de gran ayuda un pequeño ejemplo para implementarlas en páginas dentro de mi web.

      Saludos!

  2. Me he tomado la libertad de incluir este artículo en mi aplicación para Android Posicionamiento y WordPress,ya que me parece genial,si hay algún problema no dudes en comentármelo,saludos

    1. Xavier Ocampos

      No debes añadirlo al header.php, si no al archivo functions.php o a tu plugin de utilidades si es que lo hiciste.

      Saludos!

      1. Mira la forma de uso del codigo

        Uso:
        1. agrega este código a tu fichero functions.php
        2. reempleza la cadena $default_keywords con las tuyas
        3. añade al archivo header.php

        Punto 3

        En mi plugin de utilidades ya lo tengo y no da error todo correcto, pero cuando añado al archivo header.php pantalla en blanco

        1. Xavier Ocampos

          Al header.php efectivamente solo hay que añadir el «echo seo_wp_bravo();» que es lo que esta invocando la función «seo_wp_bravo». Revisa que todas las llaves estén correctamente cerradas y si cambiaste el nombre de la función, también asegúrate de cambiarlo al momento de invocar la función ya que de lo contrario es lógico que veas una pantalla en blanco pues estarías invocando una función que no existe o bien incompleta.

          Saludos!

          1. No he cambiado el nombre de la funcion seo_wp_bravo y tambien he cerrado la llave }

            Pero cuando añado «echo seo_wp_bravo();» en cualquier parte del header.php a partir de ahi se me ve todo blanco si lo coloco al final solo se me ve el menu y todo el resto en blanco

            Y si lo coloco al principio del header.php toda la pantalla en blanco.

          2. ya esta solucionado se me habia colado un asterisco * antes de una palabra

            gracias por todo

            saludos

          3. Xavier Ocampos

            No hay porque, siempre pasan estas cositas, a veces estamos seguros que esta bien pero siempre falta o sobra algo jejeje

            Saludos!

          4. Xavier Ocampos

            No hay porque, siempre pasan estas cositas, a veces estamos seguros que esta bien pero siempre falta o sobra algo jejeje

            Saludos!

  3. Hola a todos, y si necesito que cada pagina tenga sus keywords y descripcion como hago? Se los comento porque estoy haciendo una agencia de viajes por internet y con hoteles, tours, etc y necesito que cada pagina o entrada de hotel tenga sus propias keywords, titulo y descripcion, ahi como puedo modificar este codigo para que funcione por separado?

    Gracias

  4. Yo utilizo el plugin seo ultimate a falta de algo mejor, y habiendo una función que puede hacer todo eso, mucho mejor.
    Reportando fallos:
    1.- En una entrada (single / singular), se supone que debe mostrar el titulo del articulo y el nombre del sitio, sin embargo no está mostrando el título del artículo.
    2.- Cuanto a las meta keywords, si no se han especificado en el campo personalizado, se supone que debe generarlas desde la etiquetas y/o categorías, esto no sucede, este meta queda en blanco.
    3.- En la página de una categoría o archivo, se supone que debe mostrar algo como: Archivo de la categoria «nombre de categoria»

  5. Yo utilizo el plugin seo ultimate a falta de algo mejor, y habiendo una función que puede hacer todo eso, mucho mejor.
    Reportando fallos:
    1.- En una entrada (single / singular), se supone que debe mostrar el titulo del articulo y el nombre del sitio, sin embargo no está mostrando el título del artículo.
    2.- Cuanto a las meta keywords, si no se han especificado en el campo personalizado, se supone que debe generarlas desde la etiquetas y/o categorías, esto no sucede, este meta queda en blanco.
    3.- En la página de una categoría o archivo, se supone que debe mostrar algo como: Archivo de la categoria «nombre de categoria»

  6. Cual es el máximo de palabras que se puede utilizar? o puedo usar tantas como quiera en «$default_keywords»

  7. No recomendaría a nadie usar un código de este estilo para sustituir un plugin como WordPress SEO de Yoast. El SEO es algo mucho más complejo y cambiante, y hay varios aspectos que este código no cubre, y algunos que son obsoletos. Pero no deja de ser interesante analizarlo para aprender 🙂

  8. Alejandro Rivera

    Hola fernando, me podrias explicar como hacer para hacer esto:

    Opcional:

    añade palabras clave o una descripción, título a cualquier entrada o
    página usando estas claves de campo personalizado:

    mm_seo_desc

    mm_seo_keywords

    mm_seo_title

    No entiendo como hacerlo y que hace? =/ Muchas gracias!

  9. Alejandro Rivera

    Hola fernando, como hago esto?

    Opcional:
    añade palabras clave o una descripción, título a cualquier entrada o
    página usando estas claves de campo personalizado:

    mm_seo_desc

    mm_seo_keywords

    mm_seo_title

    No se como hacerlo, como agrego estos codigos en single.php?

    1. Hizo falta más información sobre ese apartado, yo también estoy intentando descifrar cómo funcionan esas claves. Si alguien nos puede ayudar, lo agradecemos para tener claro el funcionamiento de las mismas. Saludos!

  10. al incrustar el codigo en functions.php me aparece todo el codigo encima de la pagina que se muestra al usuario ¿donde debo incrustar el codigo exactamente para que esto no pase?

    el archivo functions.php termina asi:
    ?>

  11. Por ultimo,alquin mepuede explicar que hago aqui?

    Opcional:
    añade palabras clave o una descripción, título a cualquier entrada o
    página usando estas claves de campo personalizado:

    mm_seo_desc

    mm_seo_keywords

    mm_seo_title

  12. Hola mi experiencia es mejor instalar un plugin como All in One SEO Pack y evita problemas, si modificas algo mal, puedes dañar todo el trabajo hecho. Mejor un plugin.

  13. Lamentablemente no consigo de ninguna forma adaptar a mi plantilla este código.

    Me da error en el servidor cuando coloco el código en el fuctions.php y en el header.php

    El código que va en el header.php, justamente en que lugar tengo que colocarlo del código?

  14. Pingback: ¿Tiene futuro Yoast? | Ayuda WordPress

  15. Nataliciosa.com

    Lo probé, no me funcionó, lo borré de mi código y ahora sale la pantalla en blanco con las primeras líneas de vuestro código, qué locura … 🙁

  16. Sólo un pequeño detalle etimológico. Este código también un plug-in en sí mismo, así que aquí no estamos pasando de plug-in’s en ningún momento 🙂 Sé que ya lo sabes, pero bueno… Es curioso ver como la gente ha adoptado la frase de «sin plug-in’s» para referirse a cualquier cosa que no pueda instalarse con más de un par de clics 😀

      1. Yo antes metía Yoast, versión de pago, a todos nuestros clientes, pero realmente nunca me gustó mucho. Lo metía, porque sabía que los clientes les gustaba, pero no porque me gustara mucho a mí mismo… 🙂 Siempre me había parecido como ‘matar moscas a cañonazos’… Mucho código, y muchas opciones, demasiadas opciones, para resolver cosas realmente muy básicas, y algunas incluso banales… Sin embargo, ahí lo metía en todos los proyectos, porque al cliente le gustaba, ya sabes…

        Pero he decidido dejar de hacerlo, el pago que piden cada año, para mantener las actualizaciones, me parece realmente abusivo. Ahora si me lo piden, lo pongo, pero desde luego, lo desaconsejo a todo el mundo, porque creo que hay muchísimas alternativas mejores.

        Yoast y otros plug-in’s similares, deben su existencia en el mercado, no a lo buenos que son, sino a una mágica combinación de sesgos cognitivos de los cuales se aprovechan. El primero es el que yo llamo el sesgo del ‘software tanque’, según el cual se tiende a pensar que cuantas más opciones y configuraciones técnicas tenga un software, mejor será. Por eso, cuando te venden cualquier software, una técnica de venta típica, es sacarta una larga lista de funcionalidades. Si la lista de funcionalidades es tan larga que incluso te aburres de leerla, es que el software es la hostia, o al menos, esa es la percepción general. Aprovechando este sesgo, ya tienes la base de usuarios inicial, y luego ataca el segundo sesgo, el de grupo. Según el sesgo de grupo, la gente tiende a pensar que aquello que usa todo el mundo, por lo general, debe ser lo mejor. Obviamente, no es así, pero de eso van los sesgos, de confundir… Et voilà! Ya lo tienes… Un software que no ofrece nada especialmente innovador, nada que no se pueda introducir con un par de líneas de código en functions.php, peeeeeeero… Todo el mundo lo quiere tener… ¿Por qué? Bueno, pues porque los de Yoast, han demostrado ser muy buenos comerciales digitales. Al menos, es mi opinión 🙂

        1. Pero para el cliente tiene sus valores, como el asistente de contenido y legibilidad, que realmente les ayuda, en entornos de redacción, a ser conscientes del SEO de contenidos.

          La versión de pago solo merece la pena por las redirecciones en realidad.

          1. Interesante pero ¿no existe alguna manera sin tener que meter mano a header.php?

            He probado con insertar:

            add_action(‘wp_head’, ‘seo_wp_bravo’);

            en el functions.php pero nada…

            (Por cierto buen libro WordPress 1001 trucos)

            Gracias!

  17. Fernando necesito algo asi pero solo para las keywords me lo puedes programar que tome el titulo d ela entrada, ademas de unas 3 keywords por defecto que las coloque a todos los post ?? podes y precio ?

Deja un comentario

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

 

Ir arriba Ir al contenido