Support » Allgemeine Fragen » Nach Pluginaktivierung wird Fehler angezeigt

  • Gelöst christian712

    (@christian712)


    Hallo zusammen,
    ich habe leider das Entwicklerforum nicht gefunden. Aber ich hoffe, dass Ihr mir trotzdem nochmal helft.

    Bei meinem selbst erstellten Plugin wird nach der Aktivierung folgender Fehler angezeigt:
    Das Plugin erzeugt 126 Zeichen mit unerwarteter Ausgabe während der Aktivierung. Wenn du „headers already sent“ – Hinweise, Probleme mit Syndication-Feeds oder andere Probleme bemerkst, versuche, dieses Plugin zu deaktivieren oder zu entfernen.

    Außerdem erhalte ich beim Veröffentlichen von neuen Seiten eine Fehlermeldun: „Ungültige JASON Antwort“.

    Habt ihr vielleicht eine Lösung, wie ich diese Zeichen anzeigen lassen kann oder den Fehler finde?
    Kann euch leider keine Webseite angeben, da ich das Plugin auf einer lokalen Seite entwickle und es erst später auf die eigentliche Seite setze. Ich hoffe, dass ihr mir trotzdem helfen könnt.

    Viele Grüße
    Christian

Ansicht von 8 Antworten - 1 bis 8 (von insgesamt 8)
  • ich habe leider das Entwicklerforum nicht gefunden.

    Fragen zur Entwicklung kannst du auf Stackexchange stellen:
    WordPress Development

    Das Plugin erzeugt 126 Zeichen mit unerwarteter Ausgabe während der Aktivierung.

    Eigentlich sollte ein Plugin während der Aktivierung gar nichts ausgeben. Da ist jedes Zeichen unerwartet. Vermutlich geht es aber um einen PHP-Programmierfehler. Hast du das Debugging in der wp-config.php aktiviert?

    // Enable WP_DEBUG mode
    define( 'WP_DEBUG', true );
    define( 'WP_DEBUG_DISPLAY', true );
    
    // Enable Debug logging to the /wp-content/debug.log file
    define( 'WP_DEBUG_LOG', true );

    Außerdem erhalte ich beim Veröffentlichen von neuen Seiten eine Fehlermeldun: „Ungültige JSON Antwort“.

    Klar. WordPress möchte einfach von der REST API zurückgemeldet bekommen, dass der Beitrag/die Seite online ist. Statt dessen kommt eine Fehlermeldung, was WordPress doof ungültig findet.

    Du kannst die Entwickler-Tools deines Browsers öffen und im Tab Netzwerk schauen, was du bei der Datei admin-ajax.php als Antwort-Header angezeigt bekommst.
    Aber wahrscheinlich findest du den Programmierfehler schneller über den Debug-Modus.

    Thread-Starter christian712

    (@christian712)

    Hallo @pixolin,
    vielen Dank für die schnelle Hilfe.
    Ich habe nun Debugging aktiviert, allerdings bekomme ich keine Fehlermeldungen angezeigt. Jetzt weiß ich nicht, ob ich sie nur nicht entdecke oder ob es keine Fehlermeldungen gibt. Unter dem reiter Netzwerk im Entwicklermodus (unter MS edge) konnte ich die Datei admin-ajax.php leider nicht finden.

    Vielen Dank nochmal!
    Viele Grüße
    Christian

    Hast du denn nach Aktivieren des Debug-Modus nochmal versucht, das Plugin erneut zu installieren?

    Die admin-ajax.php taucht erst auf, wenn du an der Seite Änderungen vornimmst.

    Thread-Starter christian712

    (@christian712)

    Ich habe das Plugin danach nochmal aktiviert und wieder deaktiviert.
    Aber nachdem ich mich nochmal neu eingeloggt habe bekomme ich auf einer Seite mit meinem Shortcode den Fehler angezeigt, dass ich einen ungültigen index ’save‘ angegeben habe.

    Das Problem geht zurück auf folgenden Programmabschnitt:

    if($_POST['save'] == 1){
    //Aktion wird ausgeführt
    }
    

    Weiter unten wird ein Formular aufgebaut, auf das reagiert werden soll. Dies wird über ein Element mit dem Typ „hidden“ gesetzt und soll dafür sorgen, dass der Programmabschnitt nur nach absenden des Formulars ausgeführt wird.

    Aber ich habe in der Konsole gesehen, dass auf eine Datei verlikt wird, die nicht vorhanden ist. Das mit dem Entwicklermodus war eine tolle Idee! Danke!

    Kann man das oben genannte Problem irgendwie lösen oder soll ich den Debuging Modus einfach wieder deaktivieren, denn dann tritt die Fehlermeldung nicht nochmal auf?

    Das ist für mich mit der recht knappen Beschreibung kaum nachvollziebar. Bei einem GitHub-Repository könnte ich wenigsten einen Blick auf den Code werfen.

    Den Debug-Modus auszuschalten um die lästigen Fehlermeldungen loszuwerden mag für den Moment weniger nervtötend wirken, behebt aber nicht die Ursache.

    Bei if($_POST['save'] == 1) … habe ich das Gefühl, dass du da etwas konstruierst, was sich mit WordPress-Hooks besser umsetzen ließe.
    Schau dir mal den Hook save_post an: https://developer.wordpress.org/reference/hooks/save_post/

    Thread-Starter christian712

    (@christian712)

    Save Post hilft mir glaube ich nicht weiter, denn es handelt sich ja nicht um ein Seite.
    Sobald der Knopf gedrückt wurde, sollen diverse Datenbankeinträge erledigt werden.

    Das Fenster enthält im front-end nur ein Eingabefeld und einen Knopf.
    Hier ist der ganze Teil:

    if (is_user_logged_in()){
            $Bezeichnung = 'Buchungscode';
            
            $html = '';
            if ($_POST['save']==1){
                global $wpdb;
                $code = $_POST['code'];
                $codes = $wpdb->get_col("SELECT Code FROM ".$wpdb->prefix."fimint_codes WHERE ID > 0"); 
                $anzahl = count ($codes);
                $ID = 0;
                
                for ($i = 0; $i<$anzahl; $i++){
                    $ID = 0;
                    if ($code === $codes [$i]){
                        $ID = $i +1;
                        break;
                    }
    
                }
                $rückgabe = '';
                if ($ID === 0){
                    $rückgabe = '<font color = "red">Dieser Code ist nicht vorhanden. Bitte Eingaben überprüfen!</font>';
                }
                else {
                    global $wpdb;
                    $infos = $wpdb->get_row("SELECT * FROM ".$wpdb->prefix."fimint_codes WHERE ID = " . $ID); 
                    $User = wp_get_current_user();
                    $Userid = $User -> ID;
    
                    
                    if (($infos->eingeloest) == 0){
                        $wpdb->update( 
                            'wp_fimint_codes', //Tabellenname 
                            array( 
                                'eingeloest' => 1, 
                                'Einlösedatum' =>  date('d.m.y'),
                            ), 
                            array ('ID' => $ID),
                            array( 
                                '%d',
                                '%s', //String-Wert (column1)
                            ) ,
                            array ('%d')
                        );
    
                        global $wpdb;
                        $Produktinformation = $wpdb->get_row("SELECT * FROM ".$wpdb->prefix."fimint_produkte WHERE ID = " . $infos->ProduktID);
                        $ablaufen = date ('Ymd')+$Produktinformation->ID;
                        
                        $wpdb->insert( 
                            'wp_fimint_laufendelizenzen', //Tabellenname 
                            array( 
                                
                                'userID' => $Userid, 
                                'rolle' =>  $infos->Produktrolle,
                                'einlösedatum' =>  date('d.m.y'),
                                'ablaufdatum' =>  $ablaufen,
    
                            ), 
                            
                            array( 
                                '%d',
                                '%s',
                                '%s',
                                 '%s',
                                 '%s'//String-Wert (column1)
                            ) ,
                            
                        );
    
                        $rückgabe = "Code eingelöst! Viel Spaß!";
                        
                        $u = new WP_User( $Userid );
                        $u->add_role($infos -> Produktrolle);
                        
                        header('Location: ' . $Produktinformation->Produktstartseite);
                    }
                    else {
                        $rückgabe = '<font color = red>Dieser Code wurde bereits benutzt!</font>';
                    }
                }
                
    
                    $html .= "Nachricht: " . $rückgabe. '<br/></br>';
            }
        
            
            $html .= '
            <form name="eingabe" method="post">
            <input type="hidden" name="save" value="1" />
            <label for ="code">'.$Bezeichnung. ': '.' </label><input type="text" name="code" value="" /> <br />      
            <br />
            <input type="submit" value="einlösen"  />
            </form>'; 
            global $wpdb;
            $userIDen = $wpdb->get_row("SELECT * FROM ".$wpdb->prefix."users WHERE ID =1");
            return $html;
        }
        else {
            global $wpdb;
            $einstellung = $wpdb->get_row("SELECT * FROM ".$wpdb->prefix."fimint_einstellungen WHERE ID =1");
            $Nachricht = 'Sie müssen eingelloggt sein, um diese Aktion auszuführen.';
            
            $Nachricht .= ' Gerne können Sie sich hier einloggen: '.$einstellung->LoginUrl;
            
            return ($Nachricht);
        }
    

    Das Plugin erzeugt 126 Zeichen mit unerwarteter Ausgabe während der Aktivierung.

    Man muss bei einem Plugin zwischen Admin-Modus (is_admin, Backend) und Frontend-Ausgabe unterscheiden:

    if (is_admin()) {
      // Backend
    } else {
      // Frontend
    }
    Thread-Starter christian712

    (@christian712)

    Habs gelöst und zwar mit isset($_Post[’save])
    Vielen Dank für die Hilfe!

Ansicht von 8 Antworten - 1 bis 8 (von insgesamt 8)
  • Das Thema „Nach Pluginaktivierung wird Fehler angezeigt“ ist für neue Antworten geschlossen.