Elimină <div class="textwidget"> din widget-ul de text

12 iun. 2012, 18:25:30
Vizualizări: 20.1K
Voturi: 3

Când adaugi un widget de text într-o bară laterală în WordPress, widget-ul include acest cod

<div class="textwidget">

Cum pot elimina acest div fără a edita core-ul WordPress?

Info - Cred că această linie se află aici: wp-includes/default-widgets.php (linia 383)

7
Comentarii

De ce ai vrea să faci asta? Widget-urile pot avea ID-uri specifice.

Wyck Wyck
12 iun. 2012 19:31:18

Folosesc o cutie jquery cu niște efecte interesante împreună cu acea aplicație de text, așa că div-ul îmi strica puțin CSS-ul. Dacă ar exista o modalitate ușoară de a-l elimina, mi-ar economisi mult timp :)

Demilio Demilio
12 iun. 2012 20:14:32

Păi, cea mai simplă metodă de a-l elimina ar fi să folosești .remove din jquery.

Wyck Wyck
12 iun. 2012 20:34:22

Și poți explica cum? :)

Demilio Demilio
13 iun. 2012 01:28:35

Nu e mai bine să folosești jQuery pentru a elimina un div după ce reconstruiești un widget curat cu exact funcționalitatea de care ai nevoie?

MZAweb MZAweb
13 iun. 2012 04:21:21

componenta jQuery box nu adaugă clase CSS suplimentare sau markup pe care le poți folosi apoi pentru a scrie selectori CSS care să anuleze stilizarea text-widget?

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

În afară de utilizarea JavaScript sau crearea propriului widget personalizat pentru text, nu există în prezent nicio metodă de a elimina div-ul textwidget.

henrywright henrywright
2 nov. 2016 02:09:44
Arată celelalte 2 comentarii
Toate răspunsurile la întrebare 5
0

OK, încercarea de a elimina cu jQuery este contraintuitivă.

Modificarea acestuia prin intermediul output buffering este ineficientă.

Și nu ar trebui să edităm codul actual al widget-ului, deoarece acesta se va întoarce la starea inițială la următoarea actualizare WordPress.

Aș sugera fie crearea propriului tău widget de text, fie simpla extindere și modificare a widget-ului existent WordPress după cum urmează (introduceți următorul cod în fișierul 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 dec. 2014 01:57:05
2

Dacă dorești să elimini div-ul cu clasa textwidget, dar să păstrezi conținutul acestuia, iată o metodă simplă folosind jQuery:

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

Aceasta nu este cu siguranță o soluție care ar trebui implementată în frontend...

feeela feeela
22 iun. 2015 12:59:43

@feela poți, te rog, să detaliezi comentariul tău și să explici mai bine care este problema cu răspunsul?

Rarst Rarst
22 iun. 2015 23:13:51
1
-1

Conform comentariului, în acest caz este probabil mai bine să eliminăm sau să înlocuim numele clasei folosind jQuery decât o funcție PHP, deoarece acea clasă este oricum hardcodată.

Pentru a o elimina:

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

Pentru a seta CSS-ul pentru a o ascunde:

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

Pentru a schimba numele clasei:

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

Asta va elimina probabil clasa, nu? Dar problema aici este div-ul

Demilio Demilio
17 iun. 2012 01:38:14
1
-3

Puteți folosi bufferizarea ieșirii (http://php.net/manual/ro/book.outcontrol.php) pentru a obține întreaga pagină generată într-o variabilă și a elimina div-ul problematic înainte de a o afișa.

Dar pare exagerat de complicat pentru acest caz. Puteți pur și simplu să copiați tot codul widget-ului și să creați un widget nou (într-un plugin sau în functions.php) fără acel div hardcodat. Nu este chiar atât de mult cod.

De asemenea, există vreun motiv pentru a elimina acel div care nu poate fi rezolvat prin CSS?

12 iun. 2012 18:46:33
Comentarii

De ce voturile negative? Există o soluție mai bună?

MZAweb MZAweb
13 iun. 2012 04:20:31
2
-3
  1. Editează fișierul: /wp-includes/widgets/class-wp-widget-text.php
  2. Găsește și șterge: <div class="textwidget"> și </div>
  3. Gata!
15 ian. 2017 13:11:25
Comentarii
  1. Vezi-ți modificările suprascrise imediat după următoarea actualizare WordPress. 5. Înțelege de ce nu ar trebui să modifici fișierele de bază.
fuxia fuxia
15 ian. 2017 18:26:37

Nu ar trebui să modifici niciodată fișierele de bază ale WordPress dacă poți evita acest lucru.

Jay Jay
22 oct. 2017 20:00:12