Registro de barras laterales y widgets de la barra lateral. Los widgets de la barra lateral no se muestran

3

Estoy registrando barras laterales y widgets de barra lateral.

El tema actualmente soporta dos barras laterales. Primaria y Secundaria.

add_action('widgets_init', array($this, 'add_sidebars'), 10, 2);

public function add_sidebars(){
    register_sidebar(array(
        'name' => 'Primary Sidebar',
        'id' => 'mbe-sidebar-primary-sidebar',
        'description' => '',
        'class' => 'mbe-sidebar',
        'before_widget' => '<div id="%1$s" class="widget %2$s">',
        'after_widget' => '</div>',
        'before_title' => '<h3 class="widget-title">',
        'after_title' => '</h3>'
    ));
    register_sidebar(array(
        'name' => 'Secondary Sidebar',
        'id' => 'mbe-sidebar-secondary-sidebar',
        'description' => '',
        'class' => 'mbe-sidebar',
        'before_widget' => '<div id="%1$s" class="widget %2$s">',
        'after_widget' => '</div>',
        'before_title' => '<h3 class="widget-title">',
        'after_title' => '</h3>'
    ));
    $this->add_sidebar_widgets();
}

Luego agrego todos los widgets preestablecidos (objetos de publicación de un tipo de publicación) como un widget de barra lateral disponible.

private function add_sidebar_widgets(){
    global $mbe_content;
    $widgets = $mbe_content->get_content('archive', 'mbe-sidebar-widgets');
    if(!$widgets){
        return;
    }
    foreach($widgets as $widget){
        wp_register_sidebar_widget(
            'mbe-sidebar-widget-'.$widget['post_name'],
            $widget['post_title'],
            array($this, 'display_widget'),
            array(
                'description' => 'Sidebar Widget'
            ),
            ''
        );
    }
}

public function display_widget($args, $params){
    echo 'widget';
}

También he configurado los widgets de la barra lateral como widgets activos en la barra lateral principal. Ahora, por ejemplo, a nivel de tema, si solo quisiera usar una barra lateral dinámica ...

if(is_active_sidebar('mbe-sidebar-primary-sidebar')){
    dynamic_sidebar('mbe-sidebar-primary-sidebar');
} else{
    echo 'NO PRIMARY WIDGETS!'.PHP_EOL;
}

Se muestra el "widget" de mis widgets, pero ahí es donde se producirá la salida de mis widgets. Así que eso no importa. El punto es que la barra lateral dinámica está funcionando y puedo ver mi dispositivo de salida de widgets.

Una pregunta que tengo es, ¿por qué si agrego un widget de WordPress predeterminado simple a la barra lateral, no se muestra nada en la barra lateral? Es como si ni siquiera existiera o algo así.

¿Cómo puedo hacer que mis widgets se muestren en la barra lateral, mientras que sigo permitiendo que los widgets de barra lateral predeterminados proporcionados por WordPress se muestren también en la barra lateral?

Al principio pensé que era mi function display_widget() . Así que intenté obtener todos los widgets, repitiéndolos y luego llamando a the_widget() en cada uno de sus identificadores de widgets, pero luego recibo errores acerca de que no se encuentra ese widget, blau bla.

    
pregunta Michael Ecklund 05.03.2013 - 17:56

1 respuesta

1

Comprueba tu archivo de plantilla desde tu tema. Es posible que algunos widgets se agreguen allí manualmente si no hay otros widgets habilitados.

Si ese es el caso, modifique la declaración condicional en la plantilla de la barra lateral para que los widgets se impriman después de los valores predeterminados establecidos allí.

@s_ha_dum básicamente llegó al fondo de la misma.

    
respondido por el MikeNGarrett 19.01.2014 - 05:31

Lea otras preguntas en las etiquetas