Cum să editezi widget-urile în WordPress

16 ian. 2012, 14:20:21
Vizualizări: 49.6K
Voturi: 7

Î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.

2
Comentarii

Poate căutați acest lucru: http://stackoverflow.com/a/2293494

Asko Asko
16 ian. 2012 14:24:14

dynamic_sidebar() va face unul din două lucruri când este apelată, fie va afișa bara laterală, fie va returna false. Deci if( !dynamic_sidebar() ) va fie afișa bara laterală, fie va executa o alternativă.

mor7ifer mor7ifer
16 ian. 2012 15:46:01
Toate răspunsurile la întrebare 2
1
10

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' );
}
17 ian. 2012 07:56:27
Comentarii

unde pun această clasă în tema mea copil?

shorif2000 shorif2000
20 oct. 2014 18:05:29
0

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>',
) );
16 ian. 2012 14:37:05