In Widget-Bereiche gezogene Widgets verschwinden wieder (und werden nicht angezeigt)

  • WP 3.4.2 (WAMP)
    In einem Child Theme habe ich zusätzliche Widget-Bereiche registriert mit

    PHP
    if (function_exists('register_sidebar')) {
        register_sidebar(array( ...


    Alle Widget-Bereiche, auch die des Haupt-Themes werden in der Verwaltung unter Design -> Widgets angezeigt. Wenn ich nun irgendein Widget in einen Widget-Bereich ziehe, dann fügt es sich erst dort ein. Ich kann auch soweit vorhanden das Widget konfigurieren, wenn ich jedoch den Blog anzeige ist der betreffende Widget-Bereich leer. Und wenn ich in der Verwaltung Design -> Widgets erneut anzeigen lasse, ist das zuvor eingefügte Widget wieder verschwunden und der entsprechende Widget-Bereich leer.
    Nur bei dem an erster Stelle gelisteten Widget-Bereich (dieser wird auch im Child-Theme als erstes registriert, erst kommen alle im Child Theme registrierten Widget-Bereiche, dann die des Haupt-Themes) funktioniert alles wie erwartet, d.h. ein dort hinein geschobenes Widget bleibt auch dort und wird im Blog an der betr. Stelle angezeigt.

    Hatte bislang noch keinen derartigen Effekt und auch keinen Ansatzpunkt, wo der fehler liegen könnte.

    Hat jemand eine Idee?

    Danke und Gruß

    Tom

    • Anzeige

    Hallo!

    Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.

    • ✔️ Schnelle Ladezeiten (optimiert für WordPress & Co.)
    • ✔️ Deutsche Server & DSGVO-konform
    • ✔️ Persönlicher Support (kein 0815-Ticket-System)

    Mehr erfahren

  • Nun habe ich testhalber aus dem Child-Theme ein normales Theme gemacht und nun funktionieren die Widget-Bereiche wie sie es sollen. Dabei habe ich nichts in der functions.php geändert. Mein Code ist also korrekt.

    Meine starke Vermutung ist nun, dass mein gewähltes Haupt-Theme die Probleme verursacht. Es ist ein gekauftes Theme, dessen Widget Registrierung in einer verschlüsselten php-Datei liegt.

    In /lib/functions/theme-functions.php ist der Code verschlüsselt, da hier auch die Funktionen des Lizensierungsverfahrens enthalten sind, aber auch die erste Stufe der Widget-Registrierung.
    Nach Decodierung der theme-functions.php steht darin wie gewöhnlich:

    PHP
    register_sidebar(array('name' =>  'Sidebar %d', ...));
    register_sidebar(array('name' => 'Membership Sidebar', ...));
    register_sidebar(array('name' => 'Blog Sidebar', ...));
    add_action( 'init', 'the_widgets_init' );


    In der /functions.php, die nicht codiert ist dann noch eine für das Theme geschriebene Widget-Funktion enthalten, doch diese hat ja nichts mit den Widget-Bereichen zu tun.
    [code=php]
    // Function that output's the contents of the dashboard widget
    function mytheme_widget_function() {

    Ist die Verschlüsselung der Definition der Widget-Bereiche des Haupthemes in theme-functions.php ein Problem für das Child-Theme.

    Kennt jemand ggf. eine Lösung für ein derartiges Problem?

    Danke und Gruß

    Tom

    Einmal editiert, zuletzt von tomybyte (1. November 2012 um 13:19)

  • Also doch:

    Wenn ich nun im Haup-Theme in der functions.php den oben stehenden Code auskommentiere,

    PHP
    ...
    function mytheme_widget_function() {...}
    function add_mytheme_widgets() {}
    /*
    // Register the new optimizepress widget into the 'wp_dashboard_setup' action
    add_action('wp_dashboard_setup', 'add_optimizepress_widgets' );
    */

    dann arbeiten die Widget-Bereiche auch mit dem Child-Theme wie sie sollen. Das Problem scheint also an

    PHP
    add_action('wp_dashboard_setup', 'add_mytheme_widgets' );


    zu liegen.
    Warum ist mir nicht ganz klar.
    Außerdem reduziere ich damit eine Funtionalität des Haupt-Themes und muss in den Code dort eingreifen. Das gefällt mir nicht.
    Hat da jemand einen anderen Lösungsvorschlag

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!