web-dev-qa-db-fra.com

Comment éditer des widgets dans WordPress

Le menu Apparence -> Widgets contient une liste de widgets que vous pouvez faire glisser pour les afficher dans la barre latérale.

Où se trouve le code HTML/PHP pour ces widgets personnalisés?

Je suis sur la référence de fonction de WordPress mais je n'ai rien trouvé. Ces widgets doivent sûrement être extraits d'un modèle HTML/PHP.

La raison pour laquelle je veux savoir est que les titres de widget par défaut sont des tags <h3> et je veux les changer en tags <h5>. Aussi, j'ai besoin d'ajouter des <hr /> et d'autres choses.

J'ai regardé dans le fichier theme/includes/widgets.php mais rien trouvé.

J'utilise une copie de Twenty Eleven pour modifier mon thème en passant.

Le code dans theme/sidebar.php est pour (!dynamic_sidebar()), mais ma barre latérale est dynamic, ce code est donc inutile.

7
AlexMorley-Finch

Le API WordPress Widgets est la façon dont différents widgets sont créés et les barres latérales enregistrées.

Lors de la création d'un nouveau widget, certaines variables peuvent être ajoutées à n'importe quel widget. Ceux-ci tirent leur valeur des arguments register_sidebars .

args (chaîne/tableau) (facultatif)
Construit la barre latérale basée sur les valeurs 'name' et 'id'. Par défaut: aucun
name - Nom de la barre latérale.
id - Identifiant de la barre latérale.
before_widget - HTML à placer avant chaque widget.
after_widget - HTML à placer après chaque widget.
before_title - HTML à placer avant chaque titre.
after_title - HTML à placer après chaque titre.

Exemple:

<?php
    add_action( 'widgets_init', 'prefix_register_sidebars' ); 
    function prefix_register_sidebars() {
         $args = array(
         'name' => 'My 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 );
   }

Exemple de widget:

class MY_Widget extends WP_Widget {
    function my_widget( $args, $instance ) {
         $widget_ops = array(
         'description' => 'My Widget Description'
         );
        parent::WP_Widget(false, 'My Widget Name', $widget_ops );
    }
    function widget() { // This controls the display of the widget
    $title = 'My Widget Title';

    echo $before_widget;  // Outputs the the 'before_widget' register_sidebars setting
    echo $title;         //Will be wrapped in the 'before_title' and 'after_title' settings
    echo '<p>This is my widget output</p>';
    echo $after_widget;  //Outputs the 'after_widget' settings
    }
}
add_action( 'widgets_init', 'prefix_register_widgets' );
function prefix_register_widgets() {
    register_widget( 'my_widget' );
}
10
Chris_O

c'est dans le functions.php

function twentyeleven_widgets_init () {

register_widget( 'Twenty_Eleven_Ephemera_Widget' );

register_sidebar( array(
    'name' => __( 'Main Sidebar', '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>',
) );
0
wassem