Você não pode aprimorar a lista suspensa formatselect
. Mas você pode aprimorar com o gancho tiny_mce_before_init
o segundo menu suspenso styleselect
, pois há uma instalação padrão do WordPress. A documentação lista todos os padrões e possibilidades.
- inline - Nome do elemento inline a ser produzido, por exemplo, "span". A seleção de texto atual será agrupada neste elemento embutido.
- block - Nome do elemento do bloco a ser produzido, por exemplo, "h1". Os elementos de bloco existentes na seleção são substituídos pelo novo elemento de bloco.
- selector - Padrão do seletor CSS 3 para encontrar elementos dentro da seleção por. Isso pode ser usado para aplicar classes a elementos específicos ou coisas complexas, como linhas ímpares em uma tabela.
- classes - lista de classes separadas por espaço para aplicar os elementos selecionados ou o novo elemento embutido / bloco.
- styles - objeto de nome / valor com itens CSS tyle para aplicar, como cores etc.
- atributos - objeto de nome / valor com atributos a serem aplicados aos elementos selecionados ou ao novo elemento embutido / bloco.
- exato - Desativa o recurso de mesclar estilos semelhantes quando usado. Isso é necessário para alguns problemas de herança de CSS, como decoração de texto para sublinhado / tachado.
- wrapper - Estado que informa que o formato atual é um formato de contêiner para elementos de bloco. Por exemplo, um invólucro div ou uma cotação em bloco.
O botão Estilo
Observe que, por padrão, a lista suspensa Estilo está oculta no WordPress. Inicialmente, adicione o botão para formatos personalizados a uma barra de menus do TinyMCE, por exemplo, linha 2 com gancho mce_buttons_2
.
add_filter( 'mce_buttons_2', 'fb_mce_editor_buttons' );
function fb_mce_editor_buttons( $buttons ) {
array_unshift( $buttons, 'styleselect' );
return $buttons;
}
Os estilos personalizados
Aumente a lista suspensa desse botão. Para que o aprimoramento seja útil por meio de valor adicional na matriz, consulte o codex deste exemplo.
/**
* Add styles/classes to the "Styles" drop-down
*/
add_filter( 'tiny_mce_before_init', 'fb_mce_before_init' );
function fb_mce_before_init( $settings ) {
$style_formats = array(
array(
'title' => 'Download Link',
'selector' => 'a',
'classes' => 'download'
),
array(
'title' => 'My Test',
'selector' => 'p',
'classes' => 'mytest',
),
array(
'title' => 'AlertBox',
'block' => 'div',
'classes' => 'alert_box',
'wrapper' => true
),
array(
'title' => 'Red Uppercase Text',
'inline' => 'span',
'styles' => array(
'color' => 'red', // or hex value #ff0000
'fontWeight' => 'bold',
'textTransform' => 'uppercase'
)
)
);
$settings['style_formats'] = json_encode( $style_formats );
return $settings;
}
Resultado
Menu suspenso aprimorado
Você também pode aprimorar a lista suspensa com um menu em árvore. Crie o var a partir da fonte de exemplo acima com mais estrutura na matriz, como a fonte a seguir.
$style_formats = array(
array(
'title' => 'Headers',
'items' => array(
array(
'title' => 'Header 1',
'format' => 'h1',
'icon' => 'bold'
),
array(
'title' => 'Header 2',
'format' => 'h2',
'icon' => 'bold'
)
)
),
array(
'title' => 'Download Link',
'selector' => 'a',
'classes' => 'download'
)
);
Para mais possibilidades e parâmetros, consulte os valores padrão do campo suspenso Formato do estilo (escreva em javascript).
var defaultStyleFormats = [
{title: 'Headers', items: [
{title: 'Header 1', format: 'h1'},
{title: 'Header 2', format: 'h2'},
{title: 'Header 3', format: 'h3'},
{title: 'Header 4', format: 'h4'},
{title: 'Header 5', format: 'h5'},
{title: 'Header 6', format: 'h6'}
]},
{title: 'Inline', items: [
{title: 'Bold', icon: 'bold', format: 'bold'},
{title: 'Italic', icon: 'italic', format: 'italic'},
{title: 'Underline', icon: 'underline', format: 'underline'},
{title: 'Strikethrough', icon: 'strikethrough', format: 'strikethrough'},
{title: 'Superscript', icon: 'superscript', format: 'superscript'},
{title: 'Subscript', icon: 'subscript', format: 'subscript'},
{title: 'Code', icon: 'code', format: 'code'}
]},
{title: 'Blocks', items: [
{title: 'Paragraph', format: 'p'},
{title: 'Blockquote', format: 'blockquote'},
{title: 'Div', format: 'div'},
{title: 'Pre', format: 'pre'}
]},
{title: 'Alignment', items: [
{title: 'Left', icon: 'alignleft', format: 'alignleft'},
{title: 'Center', icon: 'aligncenter', format: 'aligncenter'},
{title: 'Right', icon: 'alignright', format: 'alignright'},
{title: 'Justify', icon: 'alignjustify', format: 'alignjustify'}
]}
];
Adicionar folha de estilo personalizada ao editor
Agora é o último ponto, que você inclui o CSS personalizado para esses formatos, via gancho mce_css
.
/**
* Apply styles to the visual editor
*/
add_filter( 'mce_css', 'fb_mcekit_editor_style');
function fb_mcekit_editor_style($url) {
if ( ! empty( $url ) )
$url .= ',';
// Retrieves the plugin directory URL
// Change the path here if using different directories
$url .= trailingslashit( plugin_dir_url( __FILE__ ) ) . '/my-editor-styles.css';
return $url;
}
Não se esqueça de adicionar também as regras dessa folha de estilo à folha de estilo do front-end.
Remova o botão Formatar
Como aprimoramento, você pode remover o formatselect
botão suspenso via verificação do valor na matriz de botões. Adicione a fonte a seguir à função fb_mce_editor_buttons
no gancho mce_buttons_2
.
$value = array_search( 'formatselect', $buttons );
if ( FALSE !== $value ) {
foreach ( $buttons as $key => $value ) {
if ( 'formatselect' === $value )
unset( $buttons[$key] );
}
}
formatselect
menu suspenso. Este menu suspenso não tem uma função para criar um menu, é valores estáticos no tinymce.js do WP.$settings['style_formats_merge'] = true;
»fb_mce_before_init ()«.Por esta resposta , a chave para fazer com que os estilos apareçam no menu suspenso é
unset($settings['preview_styles']);
fonte
Muito útil e obrigado por
defaultstyles
sugestões. Descobri que a combinação de matrizes não estava funcionando até a conversão dessas opções padrão para JSON válido (JavaScript não válido). Abaixo, é possível adicionar o drop-down do tinymce do WordPress em vez de substituirOpções padrão (JSON):
Em functions.php, retorne o hash de opções maiores:
fonte
$settings['style_formats_merge'] = true;
»fb_mce_before_init ()«.