editor – Evite convertir ">" a>

Pregunta:

Estoy usando un complemento de Markdown e intento escribir una cita en bloque

Como esto

Pero WordPress convierte ">" en una entidad html, por lo que el resultado parece

> como este

Hay alguna manera de evitar esto?

Respuesta:

Filtrar the_content

function wpse72941_content_filter( $content ) {
    $new_content = '';
    foreach( preg_split( '/((\r?\n)|(\r\n?))/', $content ) as $line ) {
        $new_content .= preg_replace( '/^>/', '>', $line ) . '\r\n';
    }
    return $new_content;
}
add_filter( 'the_content', 'wpse72941_content_filter', 1 );

No conozco su complemento de rebajas; para el enfoque anterior, asumí que la rebaja se interpreta después de que la publicación se recupera de la base de datos y no antes de que se guarde en la misma. Es decir, que el complemento de rebajas también filtra the_content .

La expresión regular ^> coincidencias > si esos son los primeros cuatro caracteres de una cadena. En lo anterior, el contenido se repite línea por línea, por lo tanto, todos los > las entidades al principio de una línea se vuelven a convertir en > caracteres.

Cuando se agrega el filtro, establecemos la prioridad alta ( 1 ), de modo que nuestra conversión de entidad se ejecutará antes de la interpretación de descuento.

Lo anterior funcionará cuando se agregue al functions.php de su tema, pero probablemente se adapte mejor a un complemento. En realidad, el complemento de rebajas debería encargarse de él mismo.

Evitar que TinyMCE convierta entidades

Si necesita detener la conversión de la entidad justo donde ocurre, antes de que se escriba en la base de datos, tendrá que modificar la configuración de TinyMCE (el editor), las entities y / o entity_encoding opciones de entity_encoding parecen prometedoras.
Existe el filtro tiny_mce_before_init que puede pasar valores de configuración personalizados al editor de WP.

También habría proporcionado un ejemplo de trabajo, si no fuera por esto:

Tipo de codificación: sin procesar | Todos los caracteres se almacenarán en forma que no sean entidades, excepto estas entidades XML predeterminadas: & < > "
de la documentación de TinyMCE sobre entity_encoding

Entonces, para la entidad específica en cuestión, esto parece ser más complicado.
Esta también podría ser la razón por la que deshabilitar el editor visual podría no ser suficiente.
Posiblemente una combinación de 'named' como valor para entity_encoding y una lista sin gt para entities podría hacerlo.
De lo contrario, el evento onPostProcess sería el último camino a seguir.

Sin embargo, la vida sería más simple, si la suposición anterior fuera cierta y sería suficiente filtrar la publicación sobre la recuperación de la base de datos.

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top

web tasarım