J'ai ajouté un bouton personnalisé à la tinymce pour insérer mes codes abrégés, mais j'en ai beaucoup et je veux créer un splitbutton à la place et je ne peux pas comprendre comment. Tout le monde peut aider. Voici le code que j'ai utilisé pour créer le bouton normal:
dans functions.php:
/**
Hook into WordPress
*/
add_action('init', 'onehalf_button');
/**
Create Our Initialization Function
*/
function onehalf_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' );
}
}
/**
Register Button
*/
function register_button( $buttons ) {
array_Push( $buttons, "|", "onehalf" );
return $buttons;
}
/**
Register TinyMCE Plugin
*/
function add_plugin( $plugin_array ) {
$plugin_array['onehalf'] = get_bloginfo( 'template_url' ) . '/js/tinymce_buttons.js';
return $plugin_array;
}
et dans le plugin personnalisé .js
// JavaScript Document
(function() {
tinymce.create('tinymce.plugins.onehalf', {
init : function(ed, url) {
ed.addButton('onehalf', {
title : 'One Half Column',
image : url+'/mylink.png',
onclick : function() {
ed.selection.setContent('[one_half]' + ed.selection.getContent() + '[/one_half]');
}
});
},
createControl : function(n, cm) {
return null;
},
});
tinymce.PluginManager.add('onehalf', tinymce.plugins.onehalf);
})();
J'ai trouvé quelque chose ici http://tinymce.moxiecode.com/tryit/listbox_splitbutton.php mais je ne vois pas comment l'implémenter dans WP.
Quelqu'un peut aider? Merci.
Ce devrait être assez simple, copiez les morceaux de code pertinents de la page que vous avez liée dans votre plugin TinyMCE existant, mettez à jour quelques chaînes ... c'est fait! ..
Commencez par ceci pour votre plugin TinyMCE JS et voyez comment vous vous en sortez.
// JavaScript Document
(function() {
// Creates a new plugin class and a custom listbox
tinymce.create('tinymce.plugins.onehalf', {
createControl: function(n, cm) {
switch (n) {
case 'onehalf':
var mlb = cm.createListBox('onehalf', {
title : 'My list box',
onselect : function(v) {
tinyMCE.activeEditor.windowManager.alert('Value selected:' + v);
}
});
// Add some values to the list box
mlb.add('Some item 1', 'val1');
mlb.add('some item 2', 'val2');
mlb.add('some item 3', 'val3');
// Return the new listbox instance
return mlb;
/*
case 'onehalf':
var c = cm.createSplitButton('onehalf', {
title : 'My split button',
image : 'img/example.gif',
onclick : function() {
tinyMCE.activeEditor.windowManager.alert('Button was clicked.');
}
});
c.onRenderMenu.add(function(c, m) {
m.add({title : 'Some title', 'class' : 'mceMenuItemTitle'}).setDisabled(1);
m.add({title : 'Some item 1', onclick : function() {
tinyMCE.activeEditor.windowManager.alert('Some item 1 was clicked.');
}});
m.add({title : 'Some item 2', onclick : function() {
tinyMCE.activeEditor.windowManager.alert('Some item 2 was clicked.');
}});
});
// Return the new splitbutton instance
return c;
*/
}
return null;
}
});
tinymce.PluginManager.add('onehalf', tinymce.plugins.onehalf);
})();
Si quelque chose ne fonctionne pas, merci de faire un rapport avec autant d'informations que possible, par exemple. ce que vous avez essayé, quel a été le résultat, ce qui est arrivé, ce qui ne s'est pas passé, etc.
la réponse est géniale. Juste une note de côté: pour obtenir le chemin d'accès à l'image, ajoutez
init : function(ed, url) {
theurl = url;
},
juste avant createControl: function...
et maintenant vous pouvez l'utiliser dans
var c = cm.createSplitButton('onehalf', {
title : 'My split button',
image : theurl + '/theicon.png',
onclick : function() {
tinyMCE.activeEditor.windowManager.alert('Button was clicked.');
}
});
En supposant que votre icône soit juste à côté du JavaScript pour le plugin TinyMCE.