<?php
/*crear una función para convertir en un enlace con la clase "enlace-favorito" con php las apariciones de una palabra
en el texto de wordpress pero que esa palabra no esté dentro de ningún atributo de imagen como title,
alt ni dentro de cualquier otro atributo de un elemento, tampoco tiene que estar precedida ni seguida de comillas simples ni dobles,
solo tiene que estar dentro de un párrafo o dentro de un elemento de un encabezado, sin formar parte de ningún atributo de elemento
*/
/* Opcion Uno ChatGPT */
function agregar_enlace_favorito($content) {
// Palabra a buscar
$palabra = 'ejemplo';
// Patrón para buscar la palabra fuera de los atributos
$patron = '/(?<!")(?<!\')\b(' . $palabra . ')\b(?!\')(?!\")/i';
// Reemplazar la palabra con el enlace
$nuevo_contenido = preg_replace_callback($patron, function($coincidencias) {
return '<a href="#" class="enlace-favorito">' . $coincidencias[0] . '</a>';
}, $content);
return $nuevo_contenido;
}
add_filter('the_content', 'agregar_enlace_favorito');
/* Opcion Dos */
function cambia_enlaces_favoritos($contenido) {
$mis_enlaces = array(
"Oxygen" => "oxygenbuilder.com",
"Recoda" => "oxygenados.com/recoda-workspace/",
"Oxyprops" => "oxygenados.com/oxy-props/",
);
foreach ($mis_enlaces as $nombre => $enlace){
$resultadoEnlace= '<a class="enlace-favorito" href="https://'.$enlace.'" target="_blank">'.$nombre.'</a>';
// Utiliza preg_replace_callback para reemplazar la palabra solo cuando no está dentro del atributo "title"
$contenido = preg_replace_callback('/(<[^>]+title=[^>]*>.*?<\/[^>]+>)|(\b' . $nombre . '\b)/i', function($matches) use($nombre, $resultadoEnlace) {
// Si la palabra está dentro del atributo "title", devuelve la cadena original
if ($matches[1] != '') {
return $matches[1];
} else {
// Si la palabra no está dentro del atributo "title", reemplaza la palabra por la nueva palabra
return str_replace($nombre, $resultadoEnlace, $matches[2]);
}
}, $contenido );
}
return $contenido;
}
add_filter('the_content', 'cambia_enlaces_favoritos');