Come modificare i widget in WordPress

16 gen 2012, 14:20:21
Visualizzazioni: 49.6K
Voti: 7

Nel menu Aspetto -> Widget c'è una lista di widget che puoi trascinare e rilasciare per mostrarli nella barra laterale.

Dove si trova il codice HTML/PHP per questi widget personalizzati?

Ho consultato la Function Reference di WordPress ma non ho trovato nulla. Sicuramente questi widget devono essere caricati da un template HTML/PHP.

Il motivo per cui voglio saperlo è che i titoli dei widget di default sono tag <h3> e voglio cambiarli in tag <h5>. Inoltre, ho bisogno di aggiungere alcuni <hr /> e altre cose.

Ho cercato nel file theme/includes/widgets.php ma non ho trovato nulla.

Sto usando una copia di Twenty Eleven per modificare il mio tema tra l'altro.

Il codice in theme/sidebar.php è per (!dynamic_sidebar()), tuttavia la mia barra laterale è dinamica quindi questo codice è inutile.

2
Commenti

Forse stai cercando questo: http://stackoverflow.com/a/2293494

Asko Asko
16 gen 2012 14:24:14

dynamic_sidebar() farà una di queste due cose quando viene chiamato: mostrerà la sidebar oppure restituirà false. Quindi if( !dynamic_sidebar() ) mostrerà la sidebar oppure eseguirà qualche tipo di fallback.

mor7ifer mor7ifer
16 gen 2012 15:46:01
Tutte le risposte alla domanda 2
1
10

L'API dei Widget di WordPress è il modo in cui vengono creati vari widget e registrate le sidebar.

Quando si crea un nuovo widget, ci sono variabili che possono essere aggiunte a qualsiasi widget. Queste ottengono il loro valore dagli argomenti di register_sidebars.

args (stringa/array) (opzionale)
Costruisce la Sidebar basandosi sui valori 'name' e 'id'. Predefinito: Nessuno
name - Nome della Sidebar.
id - ID della Sidebar.
before_widget - HTML da inserire prima di ogni widget.
after_widget - HTML da inserire dopo ogni widget.
before_title - HTML da inserire prima di ogni titolo.
after_title - HTML da inserire dopo ogni titolo.

Esempio:

<?php
    add_action( 'widgets_init', 'prefix_register_sidebars' ); 
    function prefix_register_sidebars() {
         $args = array(
         'name' => 'La mia Sidebar',
         'id'   => 'my-sidebar',
         'before_widget' => '<div id="%1$s" class="widget %2$s">',,
         'after_widget'  => '</div><hr />',
         'before_title'  => '<h5 class="widgettitle">',
         'after_title'   => '</h5>'
         );
      register_sidebars( $args );
   }

Esempio di Widget:

class MY_Widget extends WP_Widget {
    function my_widget( $args, $instance ) {
         $widget_ops = array(
         'description' => 'Descrizione del mio Widget'
         );
        parent::WP_Widget(false, 'Nome del mio Widget', $widget_ops );
    }
    function widget() { // Questo controlla la visualizzazione del widget
    $title = 'Titolo del mio Widget';

    echo $before_widget;  // Output delle impostazioni 'before_widget' di register_sidebars
    echo $title;         //Sarà racchiuso tra le impostazioni 'before_title' e 'after_title'
    echo '<p>Questo è l\'output del mio widget</p>';
    echo $after_widget;  //Output delle impostazioni 'after_widget'
    }
}
add_action( 'widgets_init', 'prefix_register_widgets' );
function prefix_register_widgets() {
    register_widget( 'my_widget' );
}
17 gen 2012 07:56:27
Commenti

dove inserisco questa classe nel mio child theme?

shorif2000 shorif2000
20 ott 2014 18:05:29
0

si trova nel file functions.php

function twentyeleven_widgets_init() {

register_widget( 'Twenty_Eleven_Ephemera_Widget' );

register_sidebar( array(
    'name' => __( 'Sidebar Principale', 'twentyeleven' ),
    'id' => 'sidebar-1',
    'before_widget' => '<aside id="%1$s" class="widget %2$s">',
    'after_widget' => "</aside>",
    'before_title' => '<h3 class="widget-title">',
    'after_title' => '</h3>',
) );
16 gen 2012 14:37:05