¿Cómo agregar una clase a las etiquetas ul creadas por el editor de WordPress Tinymce?

3

Quiero establecer un estilo especial para las etiquetas ul creadas solo por Tinymce, que significa solo para publicaciones y páginas, solo encontré este filtro tiny_mce_before_init con un ejemplo sobre cómo agregar opciones de estilo personalizadas a un menú desplegable de estilo existente.

entonces, ¿hay una manera de agregar una clase a las etiquetas ul creadas por el editor de WordPress?

    
pregunta Pierre 08.02.2013 - 11:55

2 respuestas

12

Siempre es una buena idea mirar Wordpress Codex antes de preguntar. Estilos personalizados de TinyMCE

<?php
// Insert 'styleselect' into the $buttons array
function my_mce_buttons_2( $buttons ) {
    array_unshift( $buttons, 'styleselect' );
    return $buttons;
}
// Use 'mce_buttons' for button row #1, mce_buttons_3' for button row #3
add_filter('mce_buttons_2', 'my_mce_buttons_2');

function my_mce_before_init_insert_formats( $init_array ) {
    $style_formats = array(
        array(
            'title' => 'Custom UL class', // Title to show in dropdown
            'selector' => 'ul', // Element to add class to
            'classes' => 'custom-ul-class' // CSS class to add
        )
    );
    $init_array['style_formats'] = json_encode( $style_formats );
    return $init_array;
}
add_filter( 'tiny_mce_before_init', 'my_mce_before_init_insert_formats' );

En el editor: primero crea una lista no numerada, luego aplica el estilo.

Actualizar después de la aceptación .

Si desea agregar una clase a todos los elementos <ul> agregados a través de TinyMCE, puede hacerlo antes de insertar o actualizar la base de datos:

<?php
add_filter('wp_insert_post_data', 'my_add_ul_class_on_insert');
function my_add_ul_class_on_insert( $postarr ) {
    $postarr['post_content'] = str_replace('<ul>', '<ul class="my-custom-class">', $postarr['post_content'] );
    return $postarr;
}

Sintonice str_replace() function needle si los elementos <ul> ya tienen atributos. O usa preg_replace() allí.

    
respondido por el Max Yudin 08.02.2013 - 13:55
3

¿Es eso realmente necesario? Intenta modificar el page.php y el single.php de tu tema de forma que sea wrapp the_content (); etiqueta de plantilla con un div de la clase o id especificada. De esta manera:

...
<div id="post_content_from_tinymce">
<?php the_content(); ?>
</div>
...

Y usa esa identificación en tu hoja de estilos:

#post_content_from_tinymces ul{ ... }

Esto podría ser enseñado en la mayoría de los casos. Agregar la posibilidad de agregar una clase personalizada a UL exigiría escribir un plugin tinyMCE y aún así, tendría que hacer clic en el botón adicional para establecer el estilo cada vez que cree una publicación / página.

    
respondido por el david.binda 08.02.2013 - 12:04

Lea otras preguntas en las etiquetas