Eliminar <div class="textwidget"> del widget de texto

12 jun 2012, 18:25:30
Vistas: 20.1K
Votos: 3

Cuando agregas un widget de texto a una barra lateral en WordPress, el widget incluye este código

<div class="textwidget">

¿Cómo puedo eliminarlo sin editar el núcleo?

Para tu información - Creo que esta línea se encuentra aquí: wp-includes/default-widgets.php (línea 383)

7
Comentarios

¿Por qué querrías hacer eso? Los widgets pueden tener IDs específicos.

Wyck Wyck
12 jun 2012 19:31:18

Uso una caja de jquery con algunos efectos interesantes junto con esa aplicación de texto, así que el div estropea un poco el css. Si hubiera una forma fácil de eliminarlo me ahorraría mucho tiempo :)

Demilio Demilio
12 jun 2012 20:14:32

Bueno, la forma más fácil de eliminarlo sería usar el .remove de jquery.

Wyck Wyck
12 jun 2012 20:34:22

¿Y podrías explicar cómo? :)

Demilio Demilio
13 jun 2012 01:28:35

¿No sería mejor usar jQuery para eliminar un div después de recrear un widget limpio con la funcionalidad exacta que necesitas?

MZAweb MZAweb
13 jun 2012 04:21:21

¿El elemento de jQuery no añade clases CSS adicionales o marcado que puedas usar luego para escribir selectores CSS que anulen el estilo del widget de texto?

Tom J Nowell Tom J Nowell
2 oct 2012 22:54:12

Aparte de usar JavaScript o crear tu propio widget de texto personalizado, actualmente no hay forma de eliminar el div textwidget.

henrywright henrywright
2 nov 2016 02:09:44
Mostrar los 2 comentarios restantes
Todas las respuestas a la pregunta 5
0

OK, intentar eliminar el con jQuery es contraproducente.

Modificarlo mediante el almacenamiento en búfer de salida es ineficiente.

Y no deberíamos editar el código real del widget en sí, ya que esto se revertirá la próxima vez que actualicemos WordPress.

Sugeriría crear tu propio widget de texto, o simplemente extender y modificar el widget existente de WordPress de la siguiente manera (coloca el siguiente código en tu archivo functions.php):

add_action( 'widgets_init', 'register_my_widgets' );


function register_my_widgets() {
    ...
    register_widget( 'My_Text_Widget' );
}

class My_Text_Widget extends WP_Widget_Text {
    function widget( $args, $instance ) {
        extract($args);
        $title = apply_filters( 'widget_title', empty( $instance['title'] ) ? '' : $instance['title'], $instance, $this->id_base );
        $text = apply_filters( 'widget_text', empty( $instance['text'] ) ? '' : $instance['text'], $instance );
        echo $before_widget;
        if ( !empty( $title ) ) { echo $before_title . $title . $after_title; } ?>
            <?php echo !empty( $instance['filter'] ) ? wpautop( $text ) : $text; ?>
        <?php
        echo $after_widget;
    }
}
13 dic 2014 01:57:05
2

Si estás buscando eliminar el div real con la clase textwidget aplicada pero no su contenido, este es un método simple usando jQuery:

$('.textwidget').replaceWith($('.textwidget').contents());
2 oct 2012 22:35:52
Comentarios

Esto es algo que definitivamente no se debería hacer en el frontend…

feeela feeela
22 jun 2015 12:59:43

@feela ¿podrías por favor ampliar tu comentario y explicar mejor cuál es el problema con la respuesta?

Rarst Rarst
22 jun 2015 23:13:51
1
-1

Como se mencionó en el comentario, en este caso probablemente sea mejor simplemente eliminar o reemplazar el nombre de la clase usando jQuery en lugar de una función PHP, ya que dicha clase está codificada de todos modos.

Para eliminarla.

jQuery('.textwidget').remove();

Para configurar el CSS y ocultarla.

jQuery('.textwidget').css('display', 'none');

Para cambiar el nombre de la clase

jQuery('.textwidget').attr('class', 'newName');
13 jun 2012 18:53:07
Comentarios

¿Esto probablemente eliminará la clase, verdad? Pero el problema aquí es el div

Demilio Demilio
17 jun 2012 01:38:14
1
-3

Puedes usar el almacenamiento en búfer de salida (http://php.net/manual/es/book.outcontrol.php) para obtener toda la página generada en una variable y eliminar el div problemático antes de mostrarla.

Pero parece excesivamente complicado para este caso. Simplemente puedes copiar todo el código del widget y crear un nuevo widget (en un plugin o en tu functions.php) sin ese div codificado. Realmente no es tanto código.

También, ¿alguna razón para eliminar ese div que no pueda resolverse con CSS?

12 jun 2012 18:46:33
Comentarios

¿Por qué los votos negativos? ¿alguna solución mejor?

MZAweb MZAweb
13 jun 2012 04:20:31
2
-3
  1. Editar archivo: /wp-includes/widgets/class-wp-widget-text.php
  2. Buscar y eliminar: <div class="textwidget"> y </div>
  3. ¡Listo!
15 ene 2017 13:11:25
Comentarios
  1. Verás que tus cambios se sobrescriben después de la próxima actualización de WordPress. 5. Entiende por qué no deberías modificar archivos del núcleo.
fuxia fuxia
15 ene 2017 18:26:37

Nunca deberías modificar los archivos del núcleo de WordPress si puedes evitarlo.

Jay Jay
22 oct 2017 20:00:12