Rimuovere <div class="textwidget"> dal widget di testo

12 giu 2012, 18:25:30
Visualizzazioni: 20.1K
Voti: 3

Quando aggiungi un widget di testo a una sidebar in WordPress il widget include questo codice

<div class="textwidget">

Come posso rimuoverlo senza modificare il core?

Per informazione - Penso che questa riga si trovi qui: wp-includes/default-widgets.php (riga 383)

7
Commenti

Perché vorresti farlo? I widget possono avere ID specifici.

Wyck Wyck
12 giu 2012 19:31:18

Uso una box jquery con alcuni effetti interessanti insieme a quell'app di testo, quindi il div scombussola un po' il css. Se ci fosse un modo semplice per rimuoverlo mi farebbe risparmiare un sacco di tempo :)

Demilio Demilio
12 giu 2012 20:14:32

Beh, il modo più semplice per rimuoverlo sarebbe usare il .remove di jquery.

Wyck Wyck
12 giu 2012 20:34:22

E potresti spiegare come? :)

Demilio Demilio
13 giu 2012 01:28:35

Non è meglio usare jQuery per rimuovere un div dopo il fatto piuttosto che ricreare un widget pulito con l'esatta funzionalità di cui hai bisogno?

MZAweb MZAweb
13 giu 2012 04:21:21

il box di jQuery non aggiunge classi CSS aggiuntive o markup che puoi poi usare per scrivere selettori CSS che annullano lo stile del text-widget?

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

A parte l'uso di JavaScript o la creazione di un widget di testo personalizzato, al momento non esiste un modo per rimuovere il div textwidget.

henrywright henrywright
2 nov 2016 02:09:44
Mostra i restanti 2 commenti
Tutte le risposte alla domanda 5
0

OK, provare a rimuovere il <div> con jQuery è controintuitivo.

Modificarlo tramite output buffering è inefficiente.

E non dovremmo modificare direttamente il codice del widget stesso, poiché verrebbe ripristinato al prossimo aggiornamento di WordPress.

Suggerirei invece di creare un proprio widget di testo personalizzato, o semplicemente estendere e modificare il widget esistente di WordPress come segue (inserisci il seguente codice nel file 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

Se stai cercando di rimuovere il div effettivo con la classe textwidget ma non il suo contenuto, ecco un semplice metodo che utilizza jQuery:

$('.textwidget').replaceWith($('.textwidget').contents());
2 ott 2012 22:35:52
Commenti

Questo è assolutamente qualcosa che non si dovrebbe fare nel frontend…

feeela feeela
22 giu 2015 12:59:43

@feela potresti per favore approfondire il tuo commento e spiegare meglio qual è il problema con la risposta?

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

Come menzionato nel commento, in questo caso è probabilmente meglio rimuovere o sostituire il nome della classe utilizzando jQuery piuttosto che una funzione php, dato che questa classe è hardcoded comunque.

Per rimuoverlo.

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

Per impostare il css per nasconderlo.

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

Per cambiare il nome della classe

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

Questo probabilmente rimuoverà la classe giusto? Ma il problema qui è il div

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

Puoi utilizzare l'output buffering (http://php.net/manual/es/book.outcontrol.php) per ottenere l'intera pagina generata in una variabile e rimuovere il div indesiderato prima di fare l'echo.

Ma sembra eccessivamente complicato per questo caso. Puoi semplicemente copiare tutto il codice del widget e crearne uno nuovo (in un plugin o nel tuo functions.php) senza quel div hardcoded. Non è poi così tanto codice.

Inoltre, c'è una particolare ragione per rimuovere quel div che non può essere risolta con il css?

12 giu 2012 18:46:33
Commenti

Perché i voti negativi? Qualche soluzione migliore?

MZAweb MZAweb
13 giu 2012 04:20:31
2
-3
  1. Modifica il file: /wp-includes/widgets/class-wp-widget-text.php
  2. Cerca ed Elimina: <div class="textwidget"> e </div>
  3. Fatto!
15 gen 2017 13:11:25
Commenti
  1. Guarda le tue modifiche sovrascritte subito dopo il prossimo aggiornamento di WordPress. 5. Comprendi perché non dovresti modificare i file core.
fuxia fuxia
15 gen 2017 18:26:37

Non dovresti mai modificare i file core di WordPress se puoi evitarlo.

Jay Jay
22 ott 2017 20:00:12