Enlazar palabras clave en extracto de entrada de forma automática

  • Autor Autor Bloggero
  • Fecha de inicio Fecha de inicio
Bloggero

Bloggero

Zeta
Social Media
Vale, vamos por partes porque esto es chungo, jejeje.

Ahora mismo estoy metido en un proyecto bastante ''complejo'', al menos para mi, y necesito la ayuda de algún entendido en la materia.

Lo que necesito es auto-enlazar ciertas palabras de una entrada a una URL específica de la misma web. Un SEO interno bastante fácil de hacer con: SEO Smart Links o SEO Auto Links entre otros.

El problema viene ahora, porque yo no estoy usando en ningún momento texto en las entradas, sino que uso un extracto (el excerpt) de entre 200-300 palabras que mediante código incrusto automáticamente en la entrada/artículo. Espero estar explicándome.

Resumiendo: Qué los plugins que he estado usando no encuentran texto (porque solo hay el extracto) y no me enlazan esas palabras clave.

No consigo hacerlo con ningún plugin, y llevo ya un par de horas liado con el tema éste... Por otro lado, he pensado de hacerlo mediante código, y así ahorrar recursos.
Pero lógicamente yo no soy programador, y de códigos se lo justo que he ido probando a base de errores, pantallazos blancos, y demás putadas varias.

He encontrado esto que en principio puede servir, pero antes de liarla prefiero preguntar:
PHP:
//Sustituir palabras por lo que sea
function replace_text_wps($text){
	$replace = array(
	// 'PALABRA A REMPLAZAR' => 'REMPLAZA LA PALABRA CON ESTO'
	'SEO' => '<a title="Curso SEO" target="new" href="http://semanticae.es/cursos/seo">SEO</a>',
	'wordpress' => '<a title="WordPress" href="http://ayudawp.com">wordpress</a>'
	);
	$text = str_replace(array_keys($replace), $replace, $text);
	return $text;
}

add_filter('the_content', 'replace_text_wps');
add_filter('the_excerpt', 'replace_text_wps');

Se de varios programadores y entendidos en estos temas, pero normalmente [MENTION=9679]cicklow[/MENTION] no acostumbra a fallar, jejeje. ¿tienes idea de como hacer lo que comento?

Un saludo a todos, y gracias de antemano. :tennis:
 
Funcionar funciona... pero tienes un problema, the excerpt no acepta html... lo que tienes que hacer es usar get_the_content y llamar a esa funcion tuya de reemplazar los textos (esto en el theme...)
Ahora bien, tu codigo solo funciona para la palabra SEO, pero no seo. no diferencia de mayúsculas y minúsculas. y tmb tendras problemas con ejemplo alguna palabra que tenga seo en el medio...

En donde quieras mostrar tu texto te quedaria (sacarias the_excerpt(); de tu theme):
PHP:
$TXT = get_the_content();
echo replace_text_wps($TXT);

si quieres limitar la cantidad de texto a usar quedaria:
PHP:
$TXT = get_the_content();
$TXT = substr($TXT,0,250)."..."; //250 caracteres
echo replace_text_wps($TXT);

ahora modificando tu funcion para que sea "mas mejor"
PHP:
function replace_text_wps($text){
    $replace = array(
    // 'PALABRA A REMPLAZAR' => 'REMPLAZA LA PALABRA CON ESTO'
    'SEO' => '<a title="Curso SEO" target="new" href="http://semanticae.es/cursos/seo">SEO</a>',
    'wordpress' => '<a title="WordPress" href="http://ayudawp.com">wordpress</a>'
    );
    $text = str_ireplace(array_keys($replace), $replace, $text);
    return $text;
}
 
Gracias como siempre [MENTION=9679]cicklow[/MENTION]

Me olvidé decir que el código era un ejemplo, el blog no es mío, sino sacado de uno relacionado con Wordpress.

Pero me servirá igual porque lo has explicado perfectamente. Lo reviso y te comento algo, gracias de nuevo.

Saludos.

------- Actualizo -------

Soy bastante lerdo en estos temas, pensaba que me sería más fácil.

Antes de añadir la función que comentas, he estado revisando las diferencias entre the_content y the_excerpt porque no quería cagarla. Y más o menos lo entiendo, el the_content muestra todo el contenido (en este caso del single.php), ya sea un vídeo, un título, una descripción (H1, H2, H3...), todo no? Y por otro lado, el the_excerpt solo estaría dando el extracto que normalmente sale en la home (el index.php) y que la mayoría de themes acorta, tal y como has comentado antes.

Yo en la home no estoy usando el the_excerpt para nada, solo tengo la imagen destacada, lo digo por si te sirve de algo saberlo.

Por otro lado, en el single.php añadí la función (si es que se llama así), de que saliera el extracto para no tener que escribir yo un artículo completo, ya que me basta con tener solo el the_excerpt.

Ahora me pregunto:

Si añado el código que me has proporcionado, le estaría dando la función de enlazar todas las palabras del single.php ¿no?

Creo que no sería bueno para el SEO interno de la web, ya que estaría enlazando demasiadas palabras clave en una sola entrada... habría forma de hacerlo solamente con el the_excerpt?

Ya se que has comentado que no existe la función en HTML, pero bueno, tan solo es por saber si hay alguna alternativa.

Te dejo una captura ''en Photoshop'' para que veas a que me refiero.

Ejemplo.webp

De nuevo, gracias [MENTION=9679]cicklow[/MENTION] por tu interés en ayudar. :encouragement:
 
Última edición:
Sigo con el problemilla, si alguien se anima... :topsy_turvy:
 
Atrás
Arriba