Permitir código arbitrario en los comentarios de WordPress
Algo que muchos usuarios nuevos de WordPress preguntan es si hay forma de incluir imágenes dentro de los comentarios. Por defecto, los filtros de WordPress no lo permiten ya que esto puede llegar a ser inseguro, o al menos te libra de que cualquiera te deje un comentario digno de MySpace o Hi5, y nadie quiere eso, cierto ?
Aún así permitir código arbitrario (más allá del que WordPress define) tiene usos legítimos, como en un blog privado donde se supone que todos los usuarios saben lo que hacen, o en todo caso solo permitírselo a los usuarios registrados del blog.
WordPress utiliza Kses, un validador/filtro de etiquetas (X)HTML que facilita mucho el filtrado del contenido deseado. Cualquier plugin puede modificar las reglas por defecto de WordPress, definidas por la variable $allowedtags
en /wp-includes/kses.php linea 291, o incluso remplazarlas por completo si define CUSTOM_TAGS
.
Por ejemplo si solo queremos permitirle a los usuarios que puedan incluir imágenes en sus comentarios, agregaríamos un elemento a $allowedtags de esta forma:
function allowcode () { global $allowedtags; $allowedtags['img'] = array ( 'alt' => array (), 'class' => array (), 'height' => array (), 'src' => array (), 'width' => array () ); } add_action('init', 'allowcode', 9);
Usamos la acción init
con tal de no interferir con otras definiciones (si las hubiera). $allowedtags['img']
representa el tag que queremos permitir durante el filtrado, que es un array()
de los atributos permitidos; esto solo se agrega a los elementos ya definidos en el array $allowedtags
, no remplaza nada. Si se encuentra un atributo que no esté definido dentro del array, simplemente será eliminado.
Si quisiéramos que se permitan incluir div's
solo con el atributo class
(para estilos especiales en los comentarios), se definiría de esta forma:
$allowedtags['div'] = array ( 'class' => array() );
¿Y si solo queremos que los usuarios registrados tengan este privilegio? Una pequeña modificación a la función lo arregla:
function allowcode () { $user = wp_get_current_user(); if ( !$user->ID ) return; ...... }
Vale aclarar que los administradores y editores de blog poseen el privilegio unfiltered_html, lo que les permite publicar cualquier código HTML o JavaScript que deseen, incluso en comentarios. Claro permitirle hacer cualquier cosa a un usuario que no sabe es casi estar dispuesto a recibir un tiro en la cabeza.
Dejo como sería el plugin -completo- para permitir que cualquiera pueda insertar imágenes en los comentarios. Va por cuenta y riesgo de cada uno 😉
Ese tipo de ideas creo que no las deberían dar, jejeje, porque hay muchos suicidas en la web, jejeje, disculpa una pregunta, como haces para meter el código en tu post asì como lo tienes, me gusta mucho y se hace bastante fácil de leer, saludos.
Si haces clic en el interrogante que aparece al final de la primera linea de código (view plain …) aparece un bonita ventana popup con un esmerado diseño (todo hay que decirlo xD) con un enlace que redirige a la web del proyecto SyntaxHighlighter.
@Carles Barreda, muchas gracias de hecho según yo le busqué por todos lados pero no lo había derectado, gracias 😛
@lumbreras jajaja pero yo avisé que lo usuaran bajo cuenta y reisgo 😛
Sobre el plugin usamos una versión modificada de este, pero acabo de encontrar otra versión que es mucho mejor (usando el mismo codigo para resaltar, pero mejor adaptada a los filtros de WordPress).
Muchas gracias por la información, me ha sido de gran utilidad
Saludos
Muchas gracias, lo aplicare.
Saludos,
Carmen