Problem mit Funktion wp_register_sidebar_widget

  • Hallo Ihr,

    ich führe einen einfachen Test mit einem Plugin durch (Lernphase). Ein Test-Widget soll einem Sidebar hinzugefügt werden. Das Plugin für das Widget besteht nur aus add_action ('init', 'callback-function' ) und der Funktion callback-function, welche das Widget mit dem Aufruf von wp_register_sidebar_widget registriert. Das Widget lässt sich nach Aktivierung im Customizer dem Sidebar hinzufügen, nach Speichern erfolgt aber die Meldung "Ungültiger Wert" und das Hinzufügen scheitert. PHP Debugging bringt mich leider nicht weiter (dazu fehlen mir tiefere WP Kenntnisse).
    In der Datei debug.log steht zuletzt der Eintrag
    WP_Customize_Widgets->is_wide_widget($widget_id = *uninitialized*) C:\xampp\htdocs\wordpress\wp-includes\class-wp-customize-widgets.php:506

    Kann mir hier jemand weiterhelfen ? Eventuell auch mit Verweis auf Quellen zur Plugin/Widget-Programmierung.

    maksimilian

    • 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


  • ich führe einen einfachen Test mit einem Plugin durch (Lernphase). Ein Test-Widget soll einem Sidebar hinzugefügt werden. Das Plugin für das Widget besteht nur aus add_action ('init', 'callback-function' ) und der Funktion callback-function, welche das Widget mit dem Aufruf von wp_register_sidebar_widget registriert. Das Widget lässt sich nach Aktivierung im Customizer dem Sidebar hinzufügen, nach Speichern erfolgt aber die Meldung "Ungültiger Wert" und das Hinzufügen scheitert. PHP Debugging bringt mich leider nicht weiter (dazu fehlen mir tiefere WP Kenntnisse).
    In der Datei debug.log steht zuletzt der Eintrag

    warum verwendest du keine IDE, die WordPress Support bietet? Zum Beispiel gibt es für Netbeans WordPress Erweiterungen...

    Da du uns keine PHP Code zeigt, kann man dir leider auch nicht helfen. Das Hinwerfen von Funktions oder PHP Klassen bringt realativ wenig.


    Das Plugin für das Widget besteht nur aus add_action

    https://codex.wordpress.org/Function_Refer…egister_sidebar



    Ein Test-Widget soll einem Sidebar hinzugefügt werden.


    dies geht in der Regel über die Theme und hier über die functions.php

    Beispiel


    https://github.com/r23/MyOOS/blob…n/functions.php

    ich hoffe die hilft weiter

    ralf

    Mit offenen Augen träumen

  • warum verwendest du keine IDE, die WordPress Support bietet?
    ralf


    Danke für die ausführliche Antwort. Könntest Du mir bitte einen Link geben ?

    Mir ist klar, dass das Thema sehr komplex und meine Frage nicht detailliert genug ist. Es hätte ja sein können, dass die zitierte Meldung Rückschlüsse zulässt.

  • Es hätte ja sein können, dass die zitierte Meldung Rückschlüsse zulässt.


    Man könnte den Rückschluss ziehen, dass irgendwo [FONT=courier new]is_wide_widget()[/FONT] ohne gültigen Parameter [FONT=courier new]$widget_id[/FONT] aufgerufen wurde. Das steht nämlich exakt so im Log. Und daraus könnte man schliessen, dass der Code zum Erstellen des Widgets diesen Parameter "leer" oder gar nicht setzt. Und das könnte man sehen, wenn man den entspr. Code sehen könnte.

  • @ b3317133 #4

    Hier der Code vom Plugin testplugin.php (es wird im Theme starkers eingesetzt):

    <?php
    /*
    Plugin Name: testplugin
    Version: 1.0
    */

    function wptst_sidebar_widget ($args) /* callback Funktion, wird wo aufgerufen ? */
    {

    }

    function wptst_add_widget ()
    {
    wp_register_sidebar_widget ('testwidget', 'Test Widget', 'wptst_sidebar_widget');
    }

    add_action ('init', 'wptst_add_widget');

    ?>

    Soweit wie ich es im PHP Debugging in Netbeans verfolgen kann, tritt der Fehler nach Einfügen des Plugins in den Sidebar auf, wenn in admin-ajax.php (bei mir in Zeile 91) die Funktion do_action('wp_ajax'.$_REQUEST['action']); aufgerufen wird.

Jetzt mitmachen!

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