Wie füge ich dem TinyMCE-Editor eine Shortcode-Schaltfläche hinzu?
-
-
Fügen Sieeinen Screenshot desgewünschten Ergebnisses hinzu.Esistnicht klar,was Sie wollen.Add a screen shot of the result you want to get. It is not clear what you want.
- 0
- 2012-11-13
- fuxia
-
Ich denke,Siemöchtenein Pluginerstellen,das dem Editoreine TinyMCE-Schaltfläche hinzufügt,dieeinen WordPress-Shortcodeeinfügt,oder?I think you want to create a plugin that adds a TinyMCE button to the editor that inserts a WordPress shortcode, right?
- 0
- 2012-11-13
- developdaly
-
2 Antworten
- Stimmen
-
- 2012-11-13
Um unsere Schaltfläche zum TinyMCE-Editor hinzuzufügen,müssen wir verschiedene Dingetun:
- Fügen Sie unsere Schaltfläche zur Symbolleiste hinzu
- Registrieren Sieein TinyMCE-Plugin
- Erstellen Sie das TinyMCE-Plug-In,das TinyMCEmitteilt,was zutunist,wenn auf unsere Schaltflächegeklickt wird.
Schritte 1 und 2
In diesen Schritten registrieren wir unser TinyMCE-Plug-In,das sichin einer Javascript-Datei unter
'path/to/shortcode.js'
befindet (siehewpse72394_register_tinymce_plugin()
unten )// init process for registering our button add_action('init', 'wpse72394_shortcode_button_init'); function wpse72394_shortcode_button_init() { //Abort early if the user will never see TinyMCE if ( ! current_user_can('edit_posts') && ! current_user_can('edit_pages') && get_user_option('rich_editing') == 'true') return; //Add a callback to regiser our tinymce plugin add_filter("mce_external_plugins", "wpse72394_register_tinymce_plugin"); // Add a callback to add our button to the TinyMCE toolbar add_filter('mce_buttons', 'wpse72394_add_tinymce_button'); } //This callback registers our plug-in function wpse72394_register_tinymce_plugin($plugin_array) { $plugin_array['wpse72394_button'] = 'path/to/shortcode.js'; return $plugin_array; } //This callback adds our button to the toolbar function wpse72394_add_tinymce_button($buttons) { //Add the button ID to the $button array $buttons[] = "wpse72394_button"; return $buttons; }
Schritt 3
Jetztmüssen wir unser TinyMCE-Plug-Inerstellen. Dieserfolgtin einer Datei
'path/to/shortcode.js'
(wiein denersten Schritten angegeben).jQuery(document).ready(function($) { tinymce.create('tinymce.plugins.wpse72394_plugin', { init : function(ed, url) { // Register command for when button is clicked ed.addCommand('wpse72394_insert_shortcode', function() { selected = tinyMCE.activeEditor.selection.getContent(); if( selected ){ //If text is selected when button is clicked //Wrap shortcode around it. content = '[shortcode]'+selected+'[/shortcode]'; }else{ content = '[shortcode]'; } tinymce.execCommand('mceInsertContent', false, content); }); // Register buttons - trigger above command when clicked ed.addButton('wpse72394_button', {title : 'Insert shortcode', cmd : 'wpse72394_insert_shortcode', image: url + '/path/to/image.png' }); }, }); // Register our TinyMCE plugin // first parameter is the button ID1 // second parameter must match the first parameter of the tinymce.create() function above tinymce.PluginManager.add('wpse72394_button', tinymce.plugins.wpse72394_plugin); });
To add our button to the TinyMCE editor we need to do several things:
- Add our button to the toolbar
- Register a TinyMCE plugin
- Create that TinyMCE plug-in which tells TinyMCE what to do when our button is clicked.
Steps #1 and #2
In these steps we register our TinyMCE plug-in which will live inside a javascript file at
'path/to/shortcode.js'
(seewpse72394_register_tinymce_plugin()
below)// init process for registering our button add_action('init', 'wpse72394_shortcode_button_init'); function wpse72394_shortcode_button_init() { //Abort early if the user will never see TinyMCE if ( ! current_user_can('edit_posts') && ! current_user_can('edit_pages') && get_user_option('rich_editing') == 'true') return; //Add a callback to regiser our tinymce plugin add_filter("mce_external_plugins", "wpse72394_register_tinymce_plugin"); // Add a callback to add our button to the TinyMCE toolbar add_filter('mce_buttons', 'wpse72394_add_tinymce_button'); } //This callback registers our plug-in function wpse72394_register_tinymce_plugin($plugin_array) { $plugin_array['wpse72394_button'] = 'path/to/shortcode.js'; return $plugin_array; } //This callback adds our button to the toolbar function wpse72394_add_tinymce_button($buttons) { //Add the button ID to the $button array $buttons[] = "wpse72394_button"; return $buttons; }
Step #3
Now we need to create our TinyMCE plug-in. This will go in a file
'path/to/shortcode.js'
(as specified in the early steps).jQuery(document).ready(function($) { tinymce.create('tinymce.plugins.wpse72394_plugin', { init : function(ed, url) { // Register command for when button is clicked ed.addCommand('wpse72394_insert_shortcode', function() { selected = tinyMCE.activeEditor.selection.getContent(); if( selected ){ //If text is selected when button is clicked //Wrap shortcode around it. content = '[shortcode]'+selected+'[/shortcode]'; }else{ content = '[shortcode]'; } tinymce.execCommand('mceInsertContent', false, content); }); // Register buttons - trigger above command when clicked ed.addButton('wpse72394_button', {title : 'Insert shortcode', cmd : 'wpse72394_insert_shortcode', image: url + '/path/to/image.png' }); }, }); // Register our TinyMCE plugin // first parameter is the button ID1 // second parameter must match the first parameter of the tinymce.create() function above tinymce.PluginManager.add('wpse72394_button', tinymce.plugins.wpse72394_plugin); });
-
In Schritt 1 kann durch Ändern des "init" -Hooksin den "admin_init" -Hook aucheine geringfügige zusätzliche Verarbeitungim Front-Endeingespart werden.In step 1, changing the `init` hook to the `admin_init` hook could also save some slight extra processing on the front-end.
- 2
- 2016-11-16
- Tim Malone
-
Es kommt darauf an,dass Sie TinyMCE auchim Frontend haben können.Aberja,wenn diesnur auf der Administratorseiteist,wäre "admin_init" vorzuziehen.It depends, you can have TinyMCE on the front-end too. But yes, if this is admin-side only, `admin_init` would be preferable.
- 0
- 2016-11-17
- Stephen Harris
-
Alsomuss "shortcode.js" hierplatziert werden "wp-enthält/js/tinymce/js/shortcode.js" und auch die Schaltfläche hat kein SymbolSo `shortcode.js` needs to be placed here `wp-includes/js/tinymce/js/shortcode.js` and also button has no icon
- 0
- 2020-08-08
- Jadeye
-
- 2012-11-13
Esgibt zu viel,um diegesamte Antwort hier zuplatzieren. Lesen Sie daher diesen Leitfaden: http://wp.smashingmagazine.com/2012/05/01/wordpress-shortcodes-complete-guide/
Siemüsseneine Javascript-Dateierstellen,die über die Schaltfläche,die Sie über WordPress registrieren,eine Aktion ausführt und die TinyMCE-Schaltflächein den Editoreinfügt.
There's too much to put the whole answer here so checkout this guide: http://wp.smashingmagazine.com/2012/05/01/wordpress-shortcodes-complete-guide/
You have to create a Javascript file that takes action from the button you register through WordPress that inserts the TinyMCE button into the editor.
-
Verwendet query_posts,dahermöglicherweisenicht dasbeste Beispielfüreine Verknüpfung.Uses query_posts so maybe not the best example to link to.
- 4
- 2014-07-11
- Brad Dalton
Wieerstelleichein Plugin-Symbolin einem WordPress-Beitrag?Der Code,denichin den Plugin-Codeeinfügenmöchte und derin der Post-Leiste [wp-admin/post.php] angezeigt wird.
Gefälltmir dieses Bild:
Ausgabe: Wennich auf das Symbol klicke,schreibtes automatisch
[plugin]
in den Beitragsinhalt wiefolgt: