Necesito insertar algo de texto en el cuerpo del artículo, que se convierte en una "etiqueta lateral" envolviéndolo dentro de algunas etiquetas div con clases personalizadas.
He creado un botón personalizado en tinymce que aparece una nueva ventana con un campo de texto. Escribe el texto y cuando presiona OK, agrega las etiquetas div de inicio y final y lo inserta en el editor de wp donde estaba su cursor.
Aquí está el código:
(function () {
tinymce.PluginManager.add('custom_mce_button2', function(editor, url) {
editor.addButton('custom_mce_button2', {
icon: false,
text: 'Side Tag',
onclick: function (e) {
editor.windowManager.open( {
title: 'Insert a Sidetag',
body: [{
type: 'textbox',
name: 'title',
placeholder: 'Type the side tag content here.',
multiline: true,
minWidth: 700,
minHeight: 50,
},
{
type: 'button',
name: 'link',
text: 'Insert/Edit link',
onclick: function( e ) {
//get the Wordpess' "Insert/edit link" popup window.
},
}],
onsubmit: function( e ) {
editor.insertContent( '<div class="side-tag-wrap hidden-xs"><div class="side-tag">' + e.data.title + '</div></div>');
}
});
}
});
});
})();
Y lo que hace:
Hasta ahora todo funciona pero ... También quiero poder agregar enlaces mientras la ventana emergente todavía está activa, exactamente como funciona el botón "Insertar / Editar enlace" del editor predeterminado. Sé cómo usar el complemento de enlace de tinymce, pero esto no ayuda. Principalmente quiero vincular publicaciones que ya están publicadas, así que necesito esto:
¿Hay alguna manera de llamar a este botón en mi ventana emergente personalizada o llamar a la función de etiquetas rápidas?
Respuestas:
Entonces estoy respondiendo mi propia pregunta, para aquellos que enfrentan o enfrentarán el mismo problema.
He agregado dos botones. Uno abre la ventana integrada de WordPress para seleccionar una publicación e inserta el enlace. El otro abre la ventana de medios incorporada de wordpress para seleccionar una imagen. Eso es lo que de alguna manera obtienes al final.
Necesitará dos funciones PHP y una JS en un archivo separado. En functions.php, o donde tenga sus funciones personalizadas, agregue lo siguiente:
Y el archivo JS.
Espero que esto ayude a algunos de ustedes ...
fuente