it-swarm.com.de

Widgets können nicht in benutzerdefinierten Seitenleisten gespeichert werden

Ich arbeite an einem untergeordneten Thema des Toolset-Bootstrap-Themas. Ich muss eine benutzerdefinierte Seitenleiste erstellen, daher habe ich die neue Seitenleiste in der function.php-Datei meines untergeordneten Themas registriert:

function wpbootstrap_register_newsidebar() {

/* Register the new sidebar. */
register_sidebar(
    array(
        'id' => 'sidebar-999',
        'name' => __( 'Home sidebar', 'wpbootstrap' ),
        'description' => __( 'This sidebar will display only on the homepage.', 'wpbootstrap' ),
        'before_widget' => '<aside id="%1$s" class="widget %2$s">',
        'after_widget' => '</aside>',
        'before_title' => '<h3 class="widget-title">',
        'after_title' => '</h3>'
    )
);
} add_action( 'widgets_init', 'wpbootstrap_register_newsidebar' );

Ich kann die neue Seitenleiste im Admin-Bildschirm sehen, Widgets hinein ziehen, einen Titel hinzufügen und neu anordnen, aber wenn ich die Seite neu lade, verschwinden alle Widgets aus der Seitenleiste. Das übergeordnete Thema verfügt bereits über 3 integrierte Widgetbereiche, die problemlos funktionieren: In diesen Bereichen können Widgets hinzugefügt und gespeichert werden. Auch wenn ich zu einem Standarddesign wie Twenty Fourteen wechsle und versuche, eine benutzerdefinierte Seitenleiste mit demselben Code zu registrieren, der oben eingefügt wurde, erhalte ich einen voll funktionsfähigen benutzerdefinierten Seitenleistenbereich. Also anscheinend ist mein Code nicht das Problem.

Ich habe versucht, die Frage im Vendor-Support-Forum des übergeordneten Themas zu posten, habe aber noch nichts von ihnen gehört. Deshalb habe ich überlegt, sie an die breitere WP Community zu richten, falls bei jemandem ein ähnliches Problem auftritt.

Ich bin kein WP Guru und ich weiß nicht viel darüber, wie benutzerdefinierte Widget-Bereiche innerhalb der WP Umgebung erstellt und gespeichert werden, aber wenn jemand mich in die richtige Richtung lenken kann wäre mehr als glücklich, mehr darüber zu erfahren.

Leider arbeite ich an einer lokalen Entwicklungsversion einer Website, daher kann ich keine Test-URL bereitstellen.

1
kikaweb

Ok, endlich hat das Support-Team meine Frage beantwortet und, auch wenn es keine echte Lösung gibt, eine Problemumgehung vorgeschlagen. Da die Antwort tief im Benutzerforum des Anbieters vergraben ist - hier verlinken - teile ich die Lösung hier, nur für den Fall, dass jemand das gleiche Problem mit diesem oder einem anderen Thema hat.

Grundsätzlich handelt es sich um einen Fehler im übergeordneten Design (Toolset Bootstrap), der die benutzerdefinierten Seitenleisten zurücksetzt. Um dieses Verhalten zu überschreiben, habe ich dieses Codefragment verwendet, um meine Seitenleisten zu registrieren, wie vom Supportteam vorgeschlagen:

//Override check sidebar widgets filter in child theme
function wpbootstrap_checksidebars_widgets($sidebars_widgets) {
    return $sidebars_widgets;
}
add_filter('sidebars_widgets','wpbootstrap_checksidebars_widgets' );
//Now user can add custom widget areas
function custom_widget_areas_init() {
    register_sidebar( array(
    'name' => 'Front Page Widget Area',
    'id' => 'frontpage-widgets',
    'before_widget' => '<div>',
    'after_widget' => '</div>',
    'before_title' => '<h2 class="rounded">',
    'after_title' => '</h2>',
    ) );
}
add_action( 'widgets_init', 'custom_widget_areas_init' );

Jetzt bleiben die Widgets in den neu registrierten Seitenleisten. Trotzdem danke an die User, die versucht haben mir zu helfen.

1
kikaweb

die ID der Sidebar (in der PHP-Funktion) sollte LOWERCASE sein !!!!!!!!!!!

2
T.Todua

Dies scheint für mich richtig zu testen.

function register_home_sidebar() {

/* Register the new sidebar. */
register_sidebar(
    array(
        'id' => 'home-sidebar',
        'name' => __('Home Sidebar'),
        'description' => __( 'This sidebar will display only on the homepage.'),
        'before_widget' => '<aside id="%1$s" class="widget %2$s">',
        'after_widget' => '</aside>',
        'before_title' => '<h3 class="widget-title">',
        'after_title' => '</h3>'
          )
     );
} add_action( 'widgets_init', 'register_home_sidebar' );

Vielleicht haben Sie schon eine Funktion mit dem anderen Namen?

1
Howard E