Я добавил пользовательскую кнопку в tinymce, чтобы вставлять свои короткие коды, но у меня их так много, и я хочу вместо этого сделать сплиткнопку, но не могу понять, как это сделать. Любой может помочь. Вот код, который я использовал для создания обычной кнопки:
в 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;
}
и в пользовательском плагине.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);
})();
Я нашел кое-что здесь http://tinymce.moxiecode.com/tryit/listbox_splitbutton.php, но не могу понять, как реализовать это в WP.
Кто-нибудь может помочь? Спасибо.
Это должно быть довольно просто, скопируйте соответствующие фрагменты кода со страницы, на которую вы ссылаетесь, в существующий плагин TinyMCE, обновите несколько строк… готово!..
Начните с этого для своего JS-плагина TinyMCE и посмотрите, как у вас дела.
Если что-то не работает, пожалуйста, сообщите как можно больше информации, т.е. что вы пробовали, каков результат, что получилось, что нет… и т.д..
Вы, сэр, золото. Это как раз то, что мне нужно. Спасибо.
Не за что… 🙂 Сам недавно был на той же странице… Если у вас возникли проблемы, добавьте их в этот вопрос и оставьте комментарий к этому ответу (я помогу, если смогу — сам недавно делал что-то подобное).
Осторожно — вы создали глобальную переменную с расширением
theurl
. Вы должны сохранить его как свойство плагина. Например.tinymce.plugins.onehalf.theurl = url;
Затем, чтобы получить его, вы должны использоватьimage : tinymce.plugins.onehalf.theurl + '/theicon.png',
Хорошее дополнение, я оставлю это в своем коде, хотя вы заслуживаете репутации за дополнение.. 🙂
t31os ответ отличный. Просто примечание: чтобы получить путь к изображению, добавьте
прямо раньше
createControl: function...
и сейчас вы можете использовать его вПредположим, что ваш значок находится рядом с JavaScript для плагина TinyMCE.