Estou tentando adicionar CSS personalizado (definido via opções de tema) ao editor visual TinyMCE no WordPress. No front-end, o tema gera esse CSS e o gera no wp_head
gancho. O problema que estou enfrentando é poder adicionar essa saída CSS ao editor.
Isso não pode ser feito add_editor_style( 'editor-style.css' )
porque precisamos usar o PHP para acessar a opção de tema.
Como um exemplo de como funciona no 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}; }";
}
Eu preciso de um método para obter esse estilo personalizado no editor visual. Qualquer ajuda seria muito apreciada.
editor-style.css
, que é território temático.Respostas:
Solução 1
Isso funciona como solução javascript:
Exemplo:
basta abrir o console js e colá-lo para um teste rápido. Para direcionar um editor específico, deve-se usar:
Isso injeta a string fornecida nos editores iframe
<head><style id="mceDefaultStyles"></style> ...
Solução 2
Use wp_ajax como manipulador de retorno de chamada para adicionar estilos dinâmicos ao editor init usando um filtro
fonte
add_editor_style( add_query_arg( 'action', 'my_editor_styles', admin_url( 'admin-ajax.php' ) )
pois essa é a maneira padrão de os temas adicionarem estilos de editor.mce_css
funcionou para você (se você tentou).add_editor_style()
, mas deve funcionar muito bem olhando o código. Usarmce_css
é realmente uma solução melhor no caso em que você precisa conectar os estilos adicionados viaadd_editor_style()
. Um desses motivos em um tema é porque os URLs completos adicionados viaadd_editor_style()
são enviados primeiro, apesar da ordem em que foram adicionados.O WordPress fornece um
mce_css
filtro , que pode ser usado para adicionar folhas de estilo personalizadas ao Editor Visual. De acordo com o Codex:Exemplo de retorno de chamada do filtro Codex, modificado para um Tema:
fonte
Aceitei a solução acima por @ungestaltbar. No entanto, eu queria expandir um pouco essa resposta com a solução completa que estou usando, para que outros pudessem ver como ela funciona.
Espero que seja bom postar outra resposta aqui assim. Não encontrei uma maneira de postar isso em resposta direta à minha solução aceita. Ainda estou aprendendo a usar o WPSE.
fonte
add_action( 'wp_ajax_nopriv_my_editor_styles', 'my_editor_styles_callback' );
se o editor for usado no frontend (para usuários não logados).Provavelmente estou atrasado para esta festa, mas depois de usar a solução acima, logo percebi que a velocidade de carregamento da página do editor havia sido severamente prejudicada! Observando profundamente o código, percebi que o código continua sendo executado muito tempo depois que o tinyMCE.activeEditor foi inicializado. O código usa o método setInterval () que avalia uma expressão em intervalos especificados, acredito que foi porque você não conseguiu determinar em que ponto durante a execução do código "activeEditor" estará disponível. Foi isso que derrubou a velocidade da página.
Uma solução muito melhor que estou usando para criar um plugin é esta
Aqui, um ouvinte TinyMCE nativo é usado para executar o código após a inicialização do editor ativo. Espero que isso ajude alguém por aí. Atenciosamente.
fonte
Esta é uma solução modificada postada nos fóruns do WordPress.org para esta pergunta: http://wordpress.org/support/topic/customdynamic-css-in-tinymce?replies=14#post-4827573
Isso definitivamente funciona. No entanto, não sou um guru do JS, por isso não tenho certeza se essa é a melhor solução.
Isso também pode ser adicionado a um arquivo JS. Você poderia facilmente passar variáveis
wp_localize_script()
com isso.fonte