Entradas Relacionadas: Plugin para WordPress optimizado para el castellano

El otro día comentaba que Peter Bowyer había mejorado el plugin para WordPress “Related Entries”, originalmente desarrollado por w-a-s-a-b-i, incluyendo no sólo información obtenida del título del artículo, sino también extrayendo palabras clave del contenido del mismo.

Dicha modificación estaba optimizada para el idioma inglés, por lo que era poco aplicable a blogs en español. Me propuse modificarlo para adaptarlo al castellano y, para ello tuve que buscar un listado de palabras irrelevantes, para poder eliminarlas del contenido (artículos, pronombres, preposiciones,…). Afortunadamente encontré un listado muy completo en el CIRIA. También tuve que añadir algún que otro signo de puntuación y algunas etiquetas HTML que la función original no eliminaba (‘title, ‘http’, …) .

Tal como ha quedado, el plugin está incompleto, porque, como no sé absolutamente nada de programación en PHP (utilizo en método de prueba y error), la función que extrae las palabras clave distingue las mayúsculas de las minúsculas (editado: problema arreglado) y, además, se hace algún lío con las palabras acentuadas. Pero a mí me sirve (o más bien me conformo) y me está dando relativamente buenos resultados.

Podéis descargaros el plugin modificado por mí en el siguiente enlace:

Para instalarlo, como siempre, hay que descomprimirlo en el subdirectorio wp-content/plugins/ de tu WordPress. Si ya tenías instalado el plugin de w-a-s-a-b-i, o el modificado por Peter Bowyer, no tienes que hacer nada más.

Si no tenías instalado ninguno de los plugins anteriores, lo tendrás que activar en el pestaña Plugins de tu WordPress. Fíjate que aparece con el nombre Related Posts (modified). Luego, tal y como comento en el anterior post, vas a la pestaña que pone Related Posts Options y, tras configurarlo a tu gusto con las opciones que te ofrece, has de modificar la base de datos para añadir las tablas necesarias. Se hace automáticamente pinchando en el enlace al script que aparece en la sección SQL Index Table Setup.

Es posible que te dé un error al ejecutar el script (a mí me pasó). Don’t panic! Abre la base de datos de tu WordPress con phpMySQLadmin y en la ventana de ejecución de comandos SQL, copias y pegas el siguiente comando y le das a Go:

ALTER TABLE 'wp_posts' ADD FULLTEXT 'post_related' (
'post_name' , 'post_content'
)

Si todo ha ido bien, ya estás listo para añadir el siguiente código en el lugar de tu plantilla que prefieras: <? related_posts(); ?>

Comprobarás mirando el código generado para cada entrada, que, entre comentarios (<!-- y -->), aparecen las palabras clave que ha extraído la función. Lo he dejado así para que tú mismo optimices, si lo ves conveniente, el listado de términos irrelevantes que aparece en el código PHP.

Por favor, si sabes programar con PHP y haces alguna mejora en el plugin, por favor avísame y yo también lo modificaré.

Valora este apunte

34 thoughts on “Entradas Relacionadas: Plugin para WordPress optimizado para el castellano

  1. crystyta, tienes que editar tu tema. Para ello, abre el fichero single.php correspondiente a tu tema y pégalo donde mejor veas que puede quedar (ve probando, no tengas miedo 😉 )

  2. nihillo, puedes poner algo parecido a lo siguiente en cualquier sitio dentro del loop:

    <?php if (is_single()) { ?>
    <strong><?php _e('Artículos relacionados:'); ?></strong>
    <ul>
    <? related_posts(); ?>
    </ul>
    <?php } ?>

  3. genial el plugin y genial la optimización al español.

    eso sí, una cosa: me ha costado bastante, pero al final lo he conseguido; no sé si será por la versión de mysql (en mi hosting hay la 5.0.81-community), pero hasta que no he quitado las comillas (‘) de los nombres de tablas y campos en el query, no me ha funcionado.

    y otra cosa. mi theme no tiene single.php, sino que index.php genera tanto la página principal como la de cada post. ¿alguien sabe cómo podría, en estas condiciones, hacer que me salga lo de los posts relacionados sólo en las páginas de post, y no en la portada?

  4. Hola, bueno puse el plugin hize lo del SQL pero a la hora de mostrar los post que relaciona no haya ni uno siempre dice no hay post relacionados xD que puede ser??

  5. He seguido los pasos y al final lo que dice Miguel, pero me sale el siguiente error:

    MySQL said: Documentation
    #1061 – Duplicate key name ‘post_related’

    agradeceria si alguno sabe como solucionarlo.

  6. Pingback: Bitácora personal de Guillem Baches
  7. He encontrado la solución en la respuesta de Miguel:

    Miguel dijo

    18 de Diciembre del 2007 a las 3:35

    Mas vale tarde que nunca, lo he probado en mi sitio al final me a funcionado, no me creaba los parámetros en la consola, e problema ana es que tu seleccionabas el icono slq y te salia la consola sin mas, pues no, tienes que seleccionar en la aparte izquierda wp_posts y luego a sql pegar

    ALTER TABLE `wp_posts` ADD FULLTEXT `post_related` (
    `post_name` ,
    `post_content`
    )

    y no selecciones nada mas y darle a ok y ya esta, un saludo

    Gracias Miguel ahora he podido configurarlo sin problemas y gracias por supuesto a “dale al teclado” porque este plugin modificado ha quedado muy bueno.

  8. Pingback: [PEDIDO] Personalizaci
  9. Pingback: Optimizacion para Wordpress I
  10. Mas vale tarde que nunca, lo he probado en mi sitio al final me a funcionado, no me creaba los parámetros en la consola, e problema ana es que tu seleccionabas el icono slq y te salia la consola sin mas, pues no, tienes que seleccionar en la aparte izquierda wp_posts y luego a sql pegar

    ALTER TABLE `wp_posts` ADD FULLTEXT `post_related` (
    `post_name` ,
    `post_content`
    )

    y no selecciones nada mas y darle a ok y ya esta, un saludo

  11. Dale dijo

    30 de Junio del 2007 a las 17:49

    Si te refieres a dónde has de poner , lo lógico es ponerlo en el fichero single.php de la plantilla que estés usando.

    Yo tengo puesto esto (más o menos):

    Otras entradas que te pueden interesar

    Justo antes de esto:

    Ve probando tú mismo a ver dónde te queda mejor 😉

    Buenas.
    Muy bien esta repuesta, lo tengo instalado en mi web y me funciona de maravilla.
    S@lu2.

  12. Pingback: Mejor que Related Post, Entradas Relaccionadas | ¿Se puede ganar dinero con un blog en español?
  13. Pingback: sagudino.com » Optimizando el blog
  14. Hola Carlos Mejia,
    No sé exactamente cuál es tu problema. Quizás, el que las viñetas no sean generadas, se debe al diseño (plantilla css) del tema que estás utilizando. Échale un vistazo y nos cuentas.

  15. Hola:
    He seguido todos los pasos , pero el plugin no me genera los titulos con viñeta, he utilizado la etiqueta al inicio y al final en la configuracion y no aparecen que otra opcion tengo, gracias por la respuesta

  16. Bueno, probé con tu consejo, pero sigo con el mismo problema y creo que todo esto puede ser a causa de que mi base de datos no soporta FULLTEXT. Asi que voy a ponerme en contacto con mi servicio de hosting para ver si ellos pueden darme alguna respuesta y en cuanto sepa algo vuelvo para contarles ;). Nuevamente muchisisisimas gracias por todo!

  17. Ana, perdona que haya tardado en contestar. El caso es que no soy nada experto en MySQL, por lo que no tengo muy claro cuál es el problema que tienes. De todos modos, creo que he encontrado un problema parecido al tuyo (y su solución). Lo tienes aquí:

    http://www.webstuffscan.com/2007/01/11/must-have-wordpress-plugin-related-entriesposts/

    Básicamente es ejecutar primero lo siguiente en el recuadro SQL:

    ALTER TABLE wp_posts ENGINE = MYISAM;

    Y luego ya volver a ejecutar lo de siempre:

    ALTER TABLE 'wp_posts' ADD FULLTEXT 'post_related' (
    'post_name' ,
    'post_content'
    )

    De todos modos comprueba que, efectivamente, tengas una tabla denominada wp_posts en la base de datos. Si no se llama así (podría empezar con otro nombre distinto a wp_), cambia el código anterior poniendo el nombre correspondiente.

    Por cierto, te confirmo que las comillas que hacen falta son sencillas y verticales (tal como salen arriba).

    Espero que esto resuelva tus problemas. Ya nos contarás.

  18. Antes que nada, eres muy amable al contestar y ofrecer tu ayuda 🙂 Intente copiando el código igualito a como me dijiste en la ventana de ejecución SQL, puse las comillas normales y ¡chan! me da error de sintaxis:

    MySQL ha dicho: Documentación
    #1064 – You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ”wp_posts’ ADD FULLTEXT ‘post_related’ (
    ‘post_name’ , ‘post_content’
    )’ at line 1

    Probe con las comillas inclinadas, dobles e inclusive sin comillas, pero cuando hago esto en vez de dar el error de sintaxis que mencione arriba me dice que no soporta Fulltext:

    MySQL ha dicho: Documentación
    #1214 – The used table type doesn’t support FULLTEXT indexes

    Te cuento que a pesar de todo esto probe el plugin, pero cuando visualizo un post abajo me dice:

    Otras entradas que te pueden interesar

    WordPress database error: [The used table type doesn’t support FULLTEXT indexes]
    SELECT ID, post_title, post_content,MATCH (post_name, post_content) AGAINST (‘blog uploads content tica m� tambi�n wp’) AS score FROM wp_posts WHERE MATCH (post_name, post_content) AGAINST (‘blog uploads content tica m� tambi�n wp’) AND post_date

  19. Hola Ana, gracias por usar este plugin. Lo primero que he de decirte es que has de probar usar el plugin a pesar del mensaje de error que me comentas (es el mismo que me salía a mí). Es posible que todo haya ido bien y, sin embargo, haya saltado el mensaje de error de todos modos.

    En cuanto al PHPMyAdmin, yo tengo la versión 2.9.0.2, pero no creo que sea muy distinto.

    Primero de todo has de seleccionar la base de datos de tu WP en el menú desplegable de la columna de la izquierda.

    Verás que en el marco principal te aparecerá un menú con varias pestañas: Structure, SQL, Search, Query, Export, Import y Operations. Pulsa en SQL.

    Te aparecerá un recuadro y allí será donde habrás de copiar el código anterior. Ojo, muy importante: por si acaso, sustituye las comillas del texto por comillas simples normales (en mi teclado está en la misma tecla que el interrogante: ‘?’). Esto es porque el editor de WP ha sustituido las comillas normales por comillas inclinadas. No estoy seguro que esto afecte, pero hazlo, por si acaso.

    Una vez copiado correctamente el código anterior, pulsa el botón “Go” que hay junto al recuadro, y ya está.

    Espero que todo te funcione correctamente. Si no, aquí estaremos para ayudar en lo que podamos.

    Ya nos contarás qué tal te funciona.

  20. Tengo problemas 🙁 cuando quiero ejecutar el script veo el siguiente mensaje: “Something went wrong. Please check the instructions on how to setup the full text index manually”.
    Estoy empezando en esto y si bien, dices que es posible que de algún error y que la solución para ello este en poner una linea de código en la base de datos de WordPress a travéz de phpMyadmin, cuando llego alli estoy un poco perdida, dices que este código debo copiarlo y pegarlo en la ventana de ejecución de comandos SQL, perooo ¿en donde encuentro esta ventana de ejecución unz vez que ingreso en PhpMyAdmin? 🙁 perdón si la pregunta es tonta. Mi version phpmyadmin es la 2.9.2

  21. Si te refieres a dónde has de poner <? related_posts(); ?>, lo lógico es ponerlo en el fichero single.php de la plantilla que estés usando.

    Yo tengo puesto esto (más o menos):

    <h2>Otras entradas que te pueden interesar</h2>
    <ul>
    <? related_posts(); ?>
    </ul>

    Justo antes de esto:

    <?php comments_template(); ?>

    Ve probando tú mismo a ver dónde te queda mejor 😉

  22. hola a todos, esta muy bueno este plugin, pero hay algo que no entiendo…
    donde debo de pegar este codigo
    es q soy nuevo en esto y estoy perdido… desde ya, muchas gracias por responder…

  23. Me encanta, lo he adoptado para mi blog, gracias por el curro.
    Una preguntilla: ¿cómo haces para que aparezca el texto al principio cuando llegas a través de un buscador?

Los comentarios están cerrados.