Cómo editar widgets en WordPress

16 ene 2012, 14:20:21
Vistas: 49.6K
Votos: 7

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.

2
Comentarios

Quizás estés buscando esto: http://stackoverflow.com/a/2293494

Asko Asko
16 ene 2012 14:24:14

dynamic_sidebar() hará una de dos cosas cuando se llame: mostrará la barra lateral o devolverá false. Así que if( !dynamic_sidebar() ) o mostrará la barra lateral o hará algún tipo de alternativa.

mor7ifer mor7ifer
16 ene 2012 15:46:01
Todas las respuestas a la pregunta 2
1
10

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' );
}
17 ene 2012 07:56:27
Comentarios

¿dónde coloco esta clase en mi tema hijo?

shorif2000 shorif2000
20 oct 2014 18:05:29
0

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