Cómo editar widgets en WordPress
En el menú Apariencia -> Widgets hay una lista de widgets que puedes arrastrar y soltar para mostrarlos en la barra lateral.
¿Dónde está el código HTML/PHP de estos widgets personalizados?
He estado en la Referencia de Funciones de WordPress pero no pude encontrar nada. Seguramente estos widgets deben obtenerse de una plantilla HTML/PHP.
La razón por la que quiero saber esto es porque los títulos de los widgets por defecto son etiquetas <h3>
y quiero cambiarlos a etiquetas <h5>
. También necesito agregar algunos <hr />
y otras cosas.
He buscado en el archivo theme/includes/widgets.php
pero no encontré nada.
Por cierto, estoy usando una copia de Twenty Eleven para modificar mi tema.
El código en theme/sidebar.php
es para (!dynamic_sidebar())
, sin embargo, mi barra lateral es dinámica, por lo que este código es inútil.

La API de Widgets de WordPress es cómo se crean varios widgets y se registran las barras laterales.
Al crear un nuevo widget, hay variables que se pueden agregar a cualquier widget. Esas obtienen su valor de los argumentos de register_sidebars
.
args (string/array) (opcional)
Construye la barra lateral basada en los valores 'name' e 'id'. Por defecto: Ninguno
name
- Nombre de la barra lateral.
id
- ID de la barra lateral.
before_widget
- HTML para colocar antes de cada widget.
after_widget
- HTML para colocar después de cada widget.
before_title
- HTML para colocar antes de cada título.
after_title
- HTML para colocar después de cada título.
Ejemplo:
<?php
add_action( 'widgets_init', 'prefix_register_sidebars' );
function prefix_register_sidebars() {
$args = array(
'name' => 'Mi Barra Lateral',
'id' => 'mi-barra-lateral',
'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 );
}
Ejemplo de Widget:
class MY_Widget extends WP_Widget {
function my_widget( $args, $instance ) {
$widget_ops = array(
'description' => 'Descripción de mi Widget'
);
parent::WP_Widget(false, 'Nombre de mi Widget', $widget_ops );
}
function widget() { // Esto controla la visualización del widget
$title = 'Título de mi Widget';
echo $before_widget; // Muestra la configuración 'before_widget' de register_sidebars
echo $title; //Se envolverá en las configuraciones 'before_title' y 'after_title'
echo '<p>Esta es la salida de mi widget</p>';
echo $after_widget; //Muestra la configuración 'after_widget'
}
}
add_action( 'widgets_init', 'prefix_register_widgets' );
function prefix_register_widgets() {
register_widget( 'my_widget' );
}

Está en el archivo functions.php
function twentyeleven_widgets_init() {
register_widget( 'Twenty_Eleven_Ephemera_Widget' );
register_sidebar( array(
'name' => __( 'Barra 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>',
) );
