¿Determinar una instancia de widget y la ubicación de la barra lateral?

4

Al usar el filtro:

add_filter('widget_display_callback', 'function_name');

function function_name($instance) {
   /* Some Code */
   return $instance;
}

¿Es posible determinar el nombre de la barra lateral y / o la identificación de la instancia del widget en particular dentro de function_name ?

    
pregunta Chuck 05.07.2012 - 21:59

1 respuesta

3

El gancho widget_display_callback toma 3 argumentos como podemos ver en /wp-includes/widgets.php : (línea 180, WP 3.4.2)

  • $instance = apply_filters('widget_display_callback', $instance, $this, $args);

Entonces, para hacer un gancho completo, el código es:

// Priority = 10 // Arguments = 3
add_filter('widget_display_callback', 'wpse_57546_widget_display_callback', 10, 3);

// Using "$this" as an argument produces errors, 
// as it is a reference to the current object
// see http://stackoverflow.com/q/1523479/1287812
// hence it is renamed to "$thiz"
function wpse_57546_widget_display_callback( $instance, $thiz, $args ) 
{
    /* Some Code */
    return $instance;
}

Al utilizar FirePHP , vemos que este filtro se ejecuta en todos los widgets que se muestran en la interfaz, y lo siguiente Son los valores del widget "Categorías":

$instance = array(
    ['title'] =>
    ['count'] => 0
    ['hierarchical'] => 0
    ['dropdown'] => 0
)

$thiz = WP_Widget_Categories(
    id_base = 'categories'
    name = 'Categories'
    widget_options = array(
        ['classname'] => 'widget_categories'
        ['description'] => 'A list or dropdown of categories'
    )
    control_options = array(
        ['id_base'] => 'categories'
    )
    number = 2
    id = 'categories-2'
    updated =
    option_name = 'widget_categories'
)

$args = array(
    ['name'] => 'Main Sidebar'
    ['id'] => 'sidebar-1'
    ['description'] =>
    ['class'] =>
    ['before_widget'] => '<aside id="categories-2" class="widget widget_categories">'
    ['after_widget'] => '</aside>'
    ['before_title'] => '<h3 class="widget-title">'
    ['after_title'] => '</h3>'
    ['widget_id'] => 'categories-2'
    ['widget_name'] => 'Categories'
)

Los valores que busca están dentro de $args :

$args['id']
$args['widget_id']

Y para acceder a los valores de $thiz , usarías:

$thiz->id_base
$thiz->widget_options['classname']
    
respondido por el brasofilo 10.11.2012 - 15:07

Lea otras preguntas en las etiquetas