Cum să editezi widget-urile în WordPress
În meniul Aspect -> Widget-uri există o listă de widget-uri pe care le poți trage și plasa pentru a le afișa în bara laterală.
Unde se află codul HTML/PHP pentru aceste widget-uri personalizate?
Am căutat în Referința Funcțiilor WordPress dar nu am găsit nimic. Cu siguranță aceste widget-uri trebuie să fie preluate dintr-un șablon HTML/PHP.
Motivul pentru care vreau să știu este că titlurile widget-urilor sunt implicit tag-uri <h3> și vreau să le schimb în tag-uri <h5>. De asemenea, trebuie să adaug câteva <hr /> și alte elemente.
M-am uitat în fișierul theme/includes/widgets.php dar nu am găsit nimic.
Folosesc o copie a temei Twenty Eleven pentru a-mi modifica tema.
Codul din theme/sidebar.php este pentru (!dynamic_sidebar()), însă bara mea laterală este dinamică așa că acest cod este inutil.
WordPress Widgets API este modul în care sunt create diverse widget-uri și înregistrate barele laterale.
Atunci când creezi un widget nou, există variabile care pot fi adăugate oricărui widget. Acestea își obțin valoarea din argumentele register_sidebars.
args (string/array) (opțional)
Construiește o bară laterală bazată pe valorile 'name' și 'id'. Implicit: Niciunul
name- Numele barei laterale.
id- ID-ul barei laterale.
before_widget- HTML de plasat înaintea fiecărui widget.
after_widget- HTML de plasat după fiecare widget.
before_title- HTML de plasat înaintea fiecărui titlu.
after_title- HTML de plasat după fiecare titlu.
Exemplu:
<?php
add_action( 'widgets_init', 'prefix_register_sidebars' );
function prefix_register_sidebars() {
$args = array(
'name' => 'Bara Mea Laterală',
'id' => 'bara-mea-laterala',
'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 );
}
Exemplu de Widget:
class MY_Widget extends WP_Widget {
function my_widget( $args, $instance ) {
$widget_ops = array(
'description' => 'Descrierea Widget-ului Meu'
);
parent::WP_Widget(false, 'Numele Widget-ului Meu', $widget_ops );
}
function widget() { // Aceasta controlează afișarea widget-ului
$title = 'Titlul Widget-ului Meu';
echo $before_widget; // Afișează setarea 'before_widget' din register_sidebars
echo $title; //Va fi încadrat în setările 'before_title' și 'after_title'
echo '<p>Acesta este conținutul widget-ului meu</p>';
echo $after_widget; //Afișează setările 'after_widget'
}
}
add_action( 'widgets_init', 'prefix_register_widgets' );
function prefix_register_widgets() {
register_widget( 'my_widget' );
}
se află în fișierul functions.php
function twentyeleven_widgets_init() {
register_widget( 'Twenty_Eleven_Ephemera_Widget' );
register_sidebar( array(
'name' => __( 'Bara Laterală Principală', '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>',
) );