Ich versuche, dem visuellen TinyMCE-Editor in WordPress benutzerdefiniertes CSS (über Designoptionen festgelegt) hinzuzufügen. Am Frontend generiert das Theme dieses CSS und gibt es am wp_head
Hook aus. Das Problem, auf das ich stoße, ist, dass ich diese CSS-Ausgabe zum Editor hinzufügen kann.
Dies ist nicht möglich, add_editor_style( 'editor-style.css' )
da wir PHP verwenden müssen, um auf die Theme-Option zuzugreifen.
Ein Beispiel dafür, wie es am Frontend funktioniert:
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}; }";
}
Ich brauche eine Methode, um diesen benutzerdefinierten Stil in den visuellen Editor zu übernehmen. Jede Hilfe wäre sehr dankbar.
editor-style.css
, was ein Themengebiet ist.Antworten:
Lösung 1
Dies funktioniert als Javascript-Lösung:
Beispiel:
öffne einfach deine js-konsole und füge sie für einen schnellen test ein. Um einen bestimmten Editor anzusprechen, sollten Sie Folgendes verwenden:
Dadurch wird der bereitgestellte String in den iframe des Editors eingefügt
<head><style id="mceDefaultStyles"></style> ...
Lösung 2
Verwenden Sie wp_ajax als Callback-Handler, um dem Editor-Init mithilfe eines Filters dynamische Stile hinzuzufügen
quelle
add_editor_style( add_query_arg( 'action', 'my_editor_styles', admin_url( 'admin-ajax.php' ) )
da dies die Standardmethode für Designs ist, um Editorstile hinzuzufügen.mce_css
für Sie gearbeitet habe (wenn Sie es ausprobiert haben).add_editor_style()
, aber es sollte funktionieren, wenn Sie den Code betrachten. Verwendenmce_css
ist eigentlich eine bessere Lösung für den Fall, dass Sie nach über hinzugefügten Stilen einbinden müssenadd_editor_style()
. Ein solcher Grund für ein Thema ist, dass vollständige URLs, die über hinzugefügt wurdenadd_editor_style()
, trotz der Reihenfolge, in der sie hinzugefügt wurden, zuerst ausgegeben werden.WordPress bietet einen
mce_css
Filter , mit dem Sie dem visuellen Editor benutzerdefinierte Stylesheets hinzufügen können. Nach dem Kodex:Beispiel für einen Codex-Filter-Rückruf, der für ein Thema geändert wurde:
quelle
Ich habe die obige Lösung von @ungestaltbar akzeptiert. Ich wollte diese Antwort jedoch ein wenig mit der vollständigen Lösung, die ich verwende, erweitern, damit andere sehen können, wie es funktioniert.
Ich hoffe, dass es in Ordnung ist, hier eine weitere Antwort zu posten. Ich habe keine Möglichkeit gefunden, dies als direkte Antwort auf meine akzeptierte Lösung zu veröffentlichen. Ich lerne immer noch, wie man WPSE benutzt.
quelle
add_action( 'wp_ajax_nopriv_my_editor_styles', 'my_editor_styles_callback' );
ob der Editor im Frontend verwendet wird (für nicht angemeldete Benutzer).Ich bin wahrscheinlich zu spät zu dieser Party, aber nachdem ich die obige Lösung verwendet hatte, wurde mir schnell klar, dass die Seitenladegeschwindigkeit des Editors stark beeinträchtigt war! Als ich mir den Code genauer ansah, wurde mir klar, dass der Code noch lange nach der Initialisierung von tinyMCE.activeEditor ausgeführt wird. Der Code verwendet die setInterval () -Methode, die einen Ausdruck in festgelegten Intervallen auswertet. Ich glaube, das lag daran, dass Sie nicht feststellen konnten, zu welchem Zeitpunkt während der Codeausführung "activeEditor" verfügbar sein wird. Dies brachte die Seitengeschwindigkeit auf die Knie.
Eine viel bessere Lösung, die ich verwende, um ein Plugin zu erstellen, ist diese
Hier wird ein nativer TinyMCE-Listener verwendet, um den Code auszuführen, nachdem der aktive Editor initialisiert wurde. Ich hoffe das hilft jemandem da draußen. Mit freundlichen Grüßen.
quelle
Dies ist eine geänderte Lösung, die in den WordPress.org-Foren für diese Frage veröffentlicht wurde: http://wordpress.org/support/topic/customdynamic-css-in-tinymce?replies=14#post-4827573
Das funktioniert definitiv. Ich bin allerdings kein JS-Guru, daher bin ich mir nicht ganz sicher, ob dies die beste Lösung ist.
Dies könnte auch zu einer JS-Datei hinzugefügt werden. Damit könnten Sie einfach Variablen übergeben
wp_localize_script()
.quelle