Cum să folosesc pictograme FontAwesome în editorul TinyMCE?
Încerc să adaug un buton YouTube în editorul TinyMCE.
Iată fișierul recent-posts.js care se află în folderul js al directorului temei.
(function() {
tinymce.create('tinymce.plugins.buttons', {
init : function(ed, url) {
//pentru butonul postări recente
ed.addButton('recentposts', {
title : 'Postări recente',
image : url + '/youtube.png',
onclick : function() {
var posts = prompt("Număr de postări", "");
var text = prompt("Titlu listă", "");
if (text != null && text != ''){
if (posts != null && posts != '')
ed.execCommand('mceInsertContent', false, '[recent-posts posts="'+posts+'"]'+text+'[/recent-posts]');
else
ed.execCommand('mceInsertContent', false, '[recent-posts]'+text+'[/recent-posts]');
}
else{
if (posts != null && posts != '')
ed.execCommand('mceInsertContent', false, '[recent-posts posts="'+posts+'"]');
else
ed.execCommand('mceInsertContent', false, '[recent-posts]');
}
}
});
//pentru video YouTube
ed.addButton('youtube', {
title : 'YouTube',
text: 'YouTube',
onclick : function() {
var id = prompt("ID video", "");
var text = prompt("Titlu video", "");
if (text != null && text != ''){
if (id != null && id != '')
ed.execCommand('mceInsertContent', false, '[yt id="'+id+'"]'+text+'[/yt]');
}
else{
if (id != null && id != '')
ed.execCommand('mceInsertContent', false, '[yt posts="'+id+'"]');
}
}
});
},
createControl : function(n, cm) {
return null;
},
getInfo : function() {
return {
longname : "eu Cel Mai Strălucit",
author : 'eu',
authorurl : 'http://www.google.com',
infourl : 'http://www.google.com',
version : "1.0"
};
}
});
tinymce.PluginManager.add('buttons', tinymce.plugins.buttons);
})();
Codul din functions.php este
function register_button( $buttons ) {
array_push( $buttons,"recentposts", "youtube" );
return $buttons;
}
function add_plugin( $plugin_array ) {
$plugin_array['buttons'] = get_template_directory_uri() . '/js/recent-posts.js';
return $plugin_array;
}
function my_recent_posts_button() {
if ( ! current_user_can('edit_posts') && ! current_user_can('edit_pages') ) {
return;
}
if ( get_user_option('rich_editing') == 'true' ) {
add_filter( 'mce_external_plugins', 'add_plugin' );
add_filter( 'mce_buttons', 'register_button' );
}
}
add_action('init', 'my_recent_posts_button');
În loc de image : url+'/youtube.png'
încerc să folosesc text :'<i class="fa fa-camera-retro"></i>'
Dar în editorul de text, în loc de pictogramă FontAwesome, afișează doar textul așa cum este. Unde ar trebui să plasez fișierul FontAwesome și cum să-l încarc și să-l folosesc în TinyMCE?
Nu ai putea adăuga o pictogramă FontAwesome prin transmiterea directă către metoda ed.addButton();
, din păcate.
Poți încerca totuși o soluție alternativă. Dacă omiți parametrul image : url+'/youtube.png'
din metodă, atunci se va crea automat un element <span>
gol cu clasa mceIcon
și o altă clasă mce_[plugin_name]
.
Apoi poți folosi CSS pentru a stiliza acel element <span>
după cum dorești.
Poți folosi FontAwesome direct în CSS-ul tău acum, ceva de genul (asigură-te că schimbi clasa substituită .mce_[plugin_name]
folosită aici cu clasa ta reală):
span.mce_[plugin_name] {
position: relative;
}
span.mce_[plugin_name]:before {
content: "\f166"; /* Valoare pentru pictograma YouTube */
font-family: FontAwesome;
font-style: normal;
font-weight: normal;
text-decoration: inherit;
/*--ajustează după necesități--*/
color: #000;
font-size: 18px;
padding-right: 0.5em;
position: absolute;
top: 10px;
left: 0;
}
ACTUALIZARE
Iată cum încarc fișierul meu CSS FontAwesome. Am adaptat pentru a se încărca în zona de administrare pentru ceea ce trebuie să faci. Îl încarc de pe CDN-ul BootStrap, dar ai putea descărca fișierul CSS și să-l încarci din folderul temei sau al plugin-ului folosind aceeași funcție admin_enqueue_scripts();
.
// Încarcă Font Awesome
function royal_enqueue_awesome() {
wp_enqueue_style( 'prefix-font-awesome', '//netdna.bootstrapcdn.com/font-awesome/4.0.3/css/font-awesome.min.css', array(), '4.0.3' );
}
add_action( 'admin_enqueue_scripts', 'royal_enqueue_awesome' );

iar iconița YouTube de la fontawesome se obține folosind <i class="fa fa-youtube"></i>
. Cum pot folosi acest lucru în CSS?

Ceea ce faci în codul tău de mai sus este să adaugi propriul tău plugin TinyMCE - nu mă refer la utilizarea unui plugin WordPress :-) Sugerez să arunci un ochi și peste acest tutorial pentru a înțelege mai bine procesul, ar putea fi util :-)

Elementul <i class="fa fa-youtube"></i>
reprezintă marcajul HTML căruia i se aplică implicit CSS-ul FontAwesome. De asemenea, îl puteți aplica și altor elemente folosind Selectoare CSS Pseudo, așa cum am făcut și eu în codul meu, dacă doriți.

Nu primesc niciun element span dacă las image:
. Pot accesa butonul folosind ID-ul său care este #mce_17 și pot folosi acțiunea admin_head, iar pot schimba culoarea de fundal etc. Sunt confuz unde ar trebui să pun folderul FontAwesome pe care l-am descărcat și ar trebui doar să includ fișierul CSS în functions.php? După aceea, ce ar trebui să fac? Permiteți-mi să pun întregul cod.

Da, poți folosi și ID-ul. Trebuie să folosești funcția wp_enqueue_style
pentru a adăuga fișierul CSS FontAwesome pe site-ul tău înainte de a putea apela CSS-ul pe care ți l-am furnizat anterior.

nu sunt sigur de unde obții valoarea "\f1666", nu există documentație despre ea pe site-ul FontAwesome

nu funcționează așa cum ai spus, elementul este <button role="presentation" type="button" tabindex="-1">YouTube</button>
, tot ce trebuie să fac este să înlocuiesc YouTube cu <i fa fa-youtube></i>

Valoarea "\f1666" este codul de caracter UTF-8. Poți găsi aceste referințe în FontAwesome Cheatsheet

`function tinymce_style(){
?> <style> #mce_17{
content: "\f166"; /* Valoare pentru pictograma Youtube */
font-family: FontAwesome;
font-style: normal;
font-weight: normal;
text-decoration: inherit;
}
</style>
<?php }
add_action('admin_head', 'tinymce_style');` folosesc asta

`function thought_script(){
wp_enqueue_style('fontawesome-style', get_template_directory_uri().'/font-awesome/css/font-awesome.min.css');
}
add_action('wp_enqueue_scripts', 'thought_script');` și asta pentru a adăuga css-ul fontawesome

Să continuăm această discuție în chat.

<div id="mce_17" class="mce-widget mce-btn mce-last" tabindex="-1" aria-labelledby="mce_17" role="button" aria-label="YouTube"><button role="presentation" type="button" tabindex="-1"><i class="mce-ico mce-i-youtube"></i></button></div>
asta obțin din Google Inspect Element

Încearcă asta deoarece foloseai acțiunea greșită și încărcai FontAwesome în website și nu în Panoul de administrare cum ar trebui... function thought_script(){ wp_enqueue_style('fontawesome-style', get_template_directory_uri().'/font-awesome/css/font-awesome.min.css'); } add_action('admin_enqueue_scripts', 'thought_script');

acum primesc <i class="mce-ico mce-i-youtube"></i>
în interiorul elementului button, dar nu funcționează.

Acum am înțeles, nu este un element span ci un element i care apare dacă nu este specificat niciun text sau imagine. Așa că trebuia doar să targetez clasa i.mce-i-youtube, care este diferită cum ai menționat. Căutam elementul span. Mulțumesc pentru ajutor și timpul acordat.

Am testat următoarele pe WordPress 4.6.1
Initial am căutat acest proces pentru a crea un buton care să genereze un shortcode. Pe baza mai multor postări, inițial am folosit următorii parametri addButton în fișierul meu javascript pentru a decora butonul TINYMCE...
ed.addButton('wpse72394_button', { title: 'titlul butonului meu', cmd: 'wpse72394_inser', image: url + '/calea/către/imagine.png' });
...Dar nu am vrut să creez un buton nou de la zero sau doar o etichetă text. Am vrut în schimb să folosesc o pictogramă existentă în WordPress. Am descoperit că pot înlocui parametrul image: cu un parametru icon: astfel...
ed.addButton('wpse72394_button', { title: 'Inserează shortcode', cmd: 'wpse72394_insert_shortcode', icon: 'wp_code' });
În WordPress, dacă te uiți în
calea-către-site\wp-includes\js\tinymce\plugins\wordpress\plugins.js
vei descoperi diverse opțiuni precum...
wp_help
wp_more
wp_page
wp_code
Nu cred că acestea sunt pictograme fontawesome, dar sunt suficient de apropiate pentru mine pentru a face treaba fără a adăuga referințe suplimentare de css sau link-uri CDN.

Iată o soluție extrem de simplă pentru această problemă.
Mai întâi, adăugați biblioteca FontAwesome în backend-ul WordPress prin crearea și adăugarea acesteia la admin_init
function fontawesome_dashboard() {
wp_enqueue_style('fontawesome', 'https://use.fontawesome.com/releases/v5.1.1/css/all.css');
}
add_action('admin_head', 'fontawesome_dashboard', 11);
Apoi, în fișierul javascript:
ed.addButton('recentposts', {
title : 'Postări recente',
icon: ' fa fa-camera-retro', // observați un spațiu înainte de 'fa'
Acest tip de hack a funcționat pentru mine. Sunt sigur că va funcționa și pentru tine :)
