¡Vamos a jugar a ser Dios!
Bueno, nos conformamos con ser el editor jefe de nuestro sitio de momento e imaginamos que gestionamos un sitio multiusuario en el que nos gustaría, o hemos decidido, que no se escriban ciertas palabras mal, o simplemente sustituir unas palabras con otras.
¿Os acordáis de lo que hacía el filtro capital_p_dangit al forzarnos a escribir bien WordPress, desde la versión 3.0?, pues algo parecido, pero aquí mandamos nosotros.
Para ello, por ejemplo, nos ponemos en el papel del editor jefe de la BBC y vamos a cabrear a los españoles (si, hoy me siento malo). Para ello abrimos el fichero functions.php
del tema activo en nuestro sitio y elaboramos nuestra lista de palabras prohibidas, con sus consiguientes sustitutas:
function palabra_prohibida($content) { $str = "terrorista"; //la palabra a reemplazar $newstr = "separatista armada"; //la nueva palabra $html = str_replace($str, $newstr, $content); return $html; } add_filter('the_title', 'palabra_prohibida',1); //Reemplaza la palabra en el título add_filter('the_content', 'palabra_prohibida',1); //Reemplaza la palabra en el contenido add_filter('comment_text', 'palabra_prohibida',1); //Reemplaza la palabra en los comentarios
Lo que hemos conseguido con este código es que cuando un periodista desconocedor de nuestra «línea editorial» escriba la palabra prohibida, ya sea en el título o en el contenido, esta sea sustituida por la palabra «políticamente correcta«. Y no solo eso, sino que también extendemos nuestra línea editorial a los comentarios de los lectores, con la línea número 9.
Y si quieres usar este truco para varias palabras sería algo así:
function palabra_prohibida($content) { $str = array("palabra1", "palabra2", "palabra3"); //las palabras a reemplazar $newstr = array("reemplazo1", "reemplazo2", "reemplazo3"); //las nuevas palabras $html = str_ireplace($str, $newstr, $content); // str_replace es sensible a mayusculas... str_ireplace no lo es. return $html; } add_filter('the_title', 'palabra_prohibida',1); //Reemplaza la palabra en el título add_filter('the_content', 'palabra_prohibida',1); //Reemplaza la palabra en el contenido add_filter('comment_text', 'palabra_prohibida',1); //Reemplaza la palabra en los comentarios
¡Genial! … ¿o no?
¿Te gustó este artículo? ¡Ni te imaginas lo que te estás perdiendo en YouTube!
Muy interesante Fernando! pero si es una lista de… por ejemplo, 10 palabras, se debe crear 10 veces este código de 9 líneas? o hay forma de utilizar comas y separar palabra por palabra, ejemplo así:
$str = "palabra1, palabra2, palabra3, palabra4 "; //la palabra a reemplazar
$newstr = "reemplazo1, reemplazo2, reemplazo3, reemplazo4 "; //la nueva palabra
Saludos!
¡Exacto, elii.pro! Esa es la pregunta obvia. Raro que a Fernando se le haya pasado por alto ese "detallito" en su esplicación.
estoy seguro que el gran Fernando está buscando la forma de hacerlo y nos la dirá pronto :P!
Grande Fer!
Yo también estoy a esperas de esa confirmación a la pregunta de @illi.pro
Muy buen artículo 🙂
Con un poco de ingenio podemos hacer que "eres un gilipollas" se transforme en "eres un genio"… o mejor aún, podemos utilizar este código para erradicar a los HOYGAN (aunque ahí si que sería un ladrillo de código)
Muy util el truco 😉
Saludos!
Yo creo que mas de un busquilla programador podría ir un paso mas allá con esto. Por ejemplo, que se alimente de un archivo de texto, donde sea facil ingresar cadenas y palabras incorrectas con sus reemplazos y así no estar tocando el código a cada momento, solo un txt adjunto
@illi.pro Esto debería servir.
<code>
function palabra_prohibida($content) {
$str = array("palabra1", "palabra2", "palabra3"); //las palabras a reemplazar
$newstr = array("reemplazo1", "reemplazo2", "reemplazo3"); //las nuevas palabras
$html = str_ireplace($str, $newstr, $content);
// str_replace es sensible a mayusculas… str_ireplace no lo es.
return $html;
}
add_filter('the_title', 'palabra_prohibida',1); //Reemplaza la palabra en el título
add_filter('the_content', 'palabra_prohibida',1); //Reemplaza la palabra en el contenido
add_filter('comment_text', 'palabra_prohibida',1); //Reemplaza la palabra en los comentarios
</code>
Lo que dijo @Guido se puede hacer… Hasta se podría hacer un plugin con esto. De seguro lo usaría mucha gente.
Maestro! funciona a la perfección! muchas gracias ;)!
Y su al "resultado", es decir, a las nuevas palabras quiero ponerle algún estilo de colores o así? Cómo hago? Agradeceré alguna ayuda.