J'essaie d'ajouter du CSS personnalisé (défini via les options de thème) à l'éditeur visuel TinyMCE dans WordPress. À l'avant, le thème génère ce CSS et le renvoie sur le wp_head
crochet. Le problème que je rencontre est de pouvoir ajouter cette sortie CSS à l'éditeur.
Cela ne peut pas être fait add_editor_style( 'editor-style.css' )
car nous devons utiliser PHP pour accéder à l'option thème.
Comme exemple de la façon dont cela fonctionne sur le 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}; }";
}
J'ai besoin d'une méthode pour obtenir ce style personnalisé dans l'éditeur visuel. Toute aide serait grandement appréciée.
editor-style.css
, qui est un territoire à thème.Réponses:
Solution 1
Cela fonctionne comme une solution javascript:
Exemple:
ouvrez simplement votre console js et collez-la pour un test rapide. Pour cibler un éditeur spécifique, il faut utiliser:
Cela injectera la chaîne fournie dans les iframe des éditeurs
<head><style id="mceDefaultStyles"></style> ...
Solution 2
Utilisez wp_ajax comme gestionnaire de rappel pour ajouter des styles dynamiques sur l'éditeur init en utilisant un filtre
la source
add_editor_style( add_query_arg( 'action', 'my_editor_styles', admin_url( 'admin-ajax.php' ) )
car c'est la manière standard pour les thèmes d'ajouter des styles d'éditeur.mce_css
fonctionné pour vous (si vous l'avez essayé).add_editor_style()
, mais cela devrait fonctionner très bien en regardant le code. L'utilisationmce_css
est en fait une meilleure solution dans le cas où vous devez vous connecter après l'ajout de styles viaadd_editor_style()
. L'une de ces raisons dans un thème est que les URL complètes ajoutées viaadd_editor_style()
sont sorties en premier, malgré l'ordre dans lequel elles sont ajoutées.WordPress fournit un
mce_css
filtre , qui peut être utilisé pour ajouter des feuilles de style personnalisées à Visual Editor. Selon le Codex:Exemple de rappel de filtre Codex, modifié pour un thème:
la source
J'ai accepté la solution ci-dessus par @ungestaltbar. Cependant, je voulais développer un peu cette réponse avec la solution complète que j'utilise afin que les autres puissent voir comment cela fonctionne.
J'espère que c'est correct de poster une autre réponse ici comme celle-ci. Je n'ai pas vu de moyen de poster ceci en réponse directe à ma solution acceptée. J'apprends toujours à utiliser WPSE.
la source
add_action( 'wp_ajax_nopriv_my_editor_styles', 'my_editor_styles_callback' );
si l'éditeur est utilisé sur le frontend (pour les utilisateurs non connectés).Je suis probablement en retard à cette fête mais après avoir utilisé la solution ci-dessus, je me suis vite rendu compte que la vitesse de chargement des pages de l'éditeur avait été gravement paralysée! En examinant attentivement le code, j'ai réalisé que le code continue de s'exécuter longtemps après l'initialisation de tinyMCE.activeEditor. Le code utilise la méthode setInterval () qui évalue une expression à des intervalles spécifiés, je pense que c'est parce que vous ne pouviez pas déterminer à quel moment de l'exécution du code "activeEditor" sera disponible. C'est ce qui a mis la vitesse de la page à genoux.
Voici une bien meilleure solution que j'utilise pour créer un plugin
Ici, un écouteur natif TinyMCE est utilisé pour exécuter le code après l'initialisation de l'éditeur actif. J'espère que cela aidera quelqu'un là-bas. Sincères amitiés.
la source
Il s'agit d'une solution modifiée publiée sur les forums WordPress.org pour cette question: http://wordpress.org/support/topic/customdynamic-css-in-tinymce?replies=14#post-4827573
Cela fonctionne vraiment. Je ne suis pas un gourou de JS, donc je ne suis pas tout à fait sûr que ce soit la meilleure solution.
Cela pourrait également être ajouté à un fichier JS. Vous pouvez facilement transmettre des variables
wp_localize_script()
avec cela.la source