Estoy tratando de agregar CSS personalizado (establecido a través de opciones de tema) al editor visual TinyMCE en WordPress. En la parte frontal, el tema genera este CSS y lo genera en el wp_head
gancho. El problema con el que me encuentro es poder agregar esa salida CSS al editor.
Esto no se puede hacer add_editor_style( 'editor-style.css' )
porque necesitamos usar PHP para acceder a la opción del tema.
Como ejemplo de cómo funciona en el front-end:
add_action( 'wp_head', 'my_custom_colors' );
function my_custom_colors() {
$color_1 = get_theme_mod( 'color_1', 'cc4a00' );
echo "<style type='text/css'>a { color: #{$color_1}; }";
}
Necesito un método para llevar ese estilo personalizado al editor visual. Cualquier ayuda sería muy apreciada.
editor-style.css
, que es territorio temático.Respuestas:
Solución 1
Esto funciona como solución de JavaScript:
Ejemplo:
simplemente abra su consola js y péguela para una prueba rápida. Para apuntar a un editor específico, uno debe usar:
Esto inyectará la cadena provista en el iframe del editor
<head><style id="mceDefaultStyles"></style> ...
Solución 2
Use wp_ajax como controlador de devolución de llamada para agregar estilos dinámicos en el editor init mediante un filtro
fuente
add_editor_style( add_query_arg( 'action', 'my_editor_styles', admin_url( 'admin-ajax.php' ) )
ya que esta es la forma estándar para que los temas agreguen estilos de editor.mce_css
funcionó para usted (si lo intentó).add_editor_style()
, pero debería funcionar bien mirando el código. El usomce_css
es en realidad una mejor solución en el caso de que necesite conectar después de agregar estilos a través deadd_editor_style()
. Una de esas razones en un tema es porque las URL completas agregadas a través deadd_editor_style()
se emiten primero, a pesar del orden en que se agregan.WordPress proporciona un
mce_css
filtro que se puede usar para agregar hojas de estilo personalizadas al Editor visual. Según el Codex:Ejemplo de devolución de llamada de filtro Codex, modificado para un tema:
fuente
Acepté la solución anterior de @ungestaltbar. Sin embargo, quería ampliar un poco esta respuesta con la solución completa que estoy usando para que otros puedan ver cómo funciona.
Espero que esté bien publicar otra respuesta aquí como esta. No vi una manera de publicar esto en respuesta directa a mi solución aceptada. Todavía estoy aprendiendo a usar WPSE.
fuente
add_action( 'wp_ajax_nopriv_my_editor_styles', 'my_editor_styles_callback' );
si el editor se usa en la interfaz (para usuarios que no han iniciado sesión).Probablemente llego tarde a esta fiesta, pero después de usar la solución anterior, ¡pronto me di cuenta de que la velocidad de carga de la página del editor se había visto severamente afectada! Al observar el código con atención, me di cuenta de que el código sigue ejecutándose mucho después de que se haya inicializado tinyMCE.activeEditor. El código usa el método setInterval () que evalúa una expresión a intervalos específicos, creo que fue porque no pudo determinar en qué punto durante la ejecución del código "activeEditor" estará disponible. Esto es lo que redujo la velocidad de la página.
Una solución mucho mejor que estoy usando para construir un complemento es esta
Aquí se utiliza un oyente TinyMCE nativo para ejecutar el código después de que se inicializa el editor activo. Espero que esto ayude a alguien por ahí. Saludos cordiales.
fuente
Esta es una solución modificada publicada en los foros de WordPress.org para esta pregunta: http://wordpress.org/support/topic/customdynamic-css-in-tinymce?replies=14#post-4827573
Esto definitivamente funciona. Sin embargo, no soy un gurú de JS, así que no estoy completamente seguro de si esta es la mejor solución.
Esto también podría agregarse a un archivo JS. Podrías pasar fácilmente variables
wp_localize_script()
con eso.fuente