1. Herzlich willkommen bei WPDE.org, dem grössten und ältesten deutschsprachigen Community-Forum rund um das Thema WordPress. Du musst angemeldet oder registriert sein, um Beiträge verfassen zu können.
    Information ausblenden

WP 5.6 Code widget

Dieses Thema im Forum "Plugins und Widgets" wurde erstellt von headloose, 26. Januar 2021.

  1. headloose

    headloose Well-Known Member

    Registriert seit:
    15. Mai 2017
    Beiträge:
    82
    Zustimmungen:
    1
    Hallo zusammen,

    vielleicht könnt Ihr mir helfen.

    Ich habe eine kleine Datenbankanweisung in SQL mit php geschrieben. Nicht besonders. Um das ganze nun auf meiner Startseite auszugeben habe ich mir das Code Widget von Sharaz Shaid installiert und die Datenbank wie folgt eingebunden.

    <?php include("php/connect.php");?>
    // Nun die Datenbankausgabe
    <?php include("php/kalender_startseite.php");

    Wenn ich das ganze im Backend mir anschaue geht das richtig super. Nur wenn ich mich abmelde und die Seite aufrufe kommt gar nichts.

    Das verstehe ich jetzt nicht!

    Weiß Jemand hier abhilfe?
     
  2. r23

    r23 Well-Known Member

    Registriert seit:
    9. Dezember 2006
    Beiträge:
    5.609
    Zustimmungen:
    249
  3. headloose

    headloose Well-Known Member

    Registriert seit:
    15. Mai 2017
    Beiträge:
    82
    Zustimmungen:
    1
    Danke für den Tipp,

    aber da bin ich noch ein bisschen weiße. Das Grundgerüst verstehe ich ja, aber wie sieht dann mein code in der Function aus?
     
  4. r23

    r23 Well-Known Member

    Registriert seit:
    9. Dezember 2006
    Beiträge:
    5.609
    Zustimmungen:
    249

    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!

    der Dateikopf sollte klar sein. Dieser ist wichtig, damit du im Backend unter Plugins dein Plugin findest.

    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    dann kommt der Shortcode
    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!

    weitere Informationen
    https://codex.wordpress.org/Shortcode_API
     
  5. headloose

    headloose Well-Known Member

    Registriert seit:
    15. Mai 2017
    Beiträge:
    82
    Zustimmungen:
    1
    Danke für die Info.

    Weiter Frage:
    // Nun die Datenbankausgabe
    include '..../.../php/kalender_startseite.php';

    muss ich das innerhalb des content setzen? Derzeit habe ich es ausserhalb. Spricht aber nicht an.

    Was ist mit der Funcition. Raus oder rein!

    if ( ! defined( "ABSPATH" ) ) exit; // Exit if accessed directly
     
  6. r23

    r23 Well-Known Member

    Registriert seit:
    9. Dezember 2006
    Beiträge:
    5.609
    Zustimmungen:
    249
    In meinem Beispiel steht es innerhalb der Funktion... in der Hoffnung, dass diese Datei nur dann geladen wird, wenn der Shortcode verwendet wird.

    Ich würde vermutlich include-once https://www.php.net/manual/de/function.include-once.php verwenden

    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    https://www.php.net/manual/de/function.include.php

    In WordPress Plugins verwendet man in der Regel

    require_once(dirname(__FILE__) . '/includes/kalender_startseite.php');

    dann liegt das "externe" Script im Verzeichnis includes von deinem Plugin


    ^- das ist keine Funktion, sondern es wird nur geprüft, ob das Plugin innerhalb von WordPress läuft.

    Bei einem Aufruf über https://exmaple.org/wpcontent/plugin/dein/plugin.php

    steht die Konstante ABSPATH nicht zur Verfügung, so wird das Script mit exit beendet. Dies kann sinnvoll sein.
     
  7. b3317133

    b3317133 Well-Known Member

    Registriert seit:
    21. November 2014
    Beiträge:
    9.274
    Zustimmungen:
    1.151
    Üblicherweise verwendet man dafür plugin_dir_path( __FILE__ ) - mehr zu den verfügbaren WordPress Ordnern und Pfaden hier.
     
  8. headloose

    headloose Well-Known Member

    Registriert seit:
    15. Mai 2017
    Beiträge:
    82
    Zustimmungen:
    1
    Hallo zusammen,
    Danke für Eure Tipps.

    Ich habe mal einen anderen Weg versucht bin aber auch hier gescheitert. Es geht um folgendes.

    Ich habe eine externe sql-datenbank die ich in mein WP einbinden möchte. Nun habe ich ein wenig gebasteltund ein kleines Plugin geschrieben.
    Dies sieht folgendermaßen aus:

    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Auf Lochost läuft das echt gut. Installiere ich das auf dem Host mit den echten Zugangsdaten bei strato macht er keine Verbindung

    Muss ich die Datenbankverbindung aners einbinden?
     
  9. b3317133

    b3317133 Well-Known Member

    Registriert seit:
    21. November 2014
    Beiträge:
    9.274
    Zustimmungen:
    1.151
    Welche Fehlernummer / Fehlermeldung wird denn von mysqli_connect() zurückgegeben?
     
  10. headloose

    headloose Well-Known Member

    Registriert seit:
    15. Mai 2017
    Beiträge:
    82
    Zustimmungen:
    1
    Keine!

    var_dump($db);

    zeigt folgendes:
    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
     
  11. b3317133

    b3317133 Well-Known Member

    Registriert seit:
    21. November 2014
    Beiträge:
    9.274
    Zustimmungen:
    1.151
    Versuche es mal mit dem Beispiel #1 mysqli_connect() im o.g. Link...
     
  12. headloose

    headloose Well-Known Member

    Registriert seit:
    15. Mai 2017
    Beiträge:
    82
    Zustimmungen:
    1
    ok die Verbindung ist da!

    Erfolg: es wurde ordnungsgemäß mit MySQL verbunden! Die Datenbank "datenbank" ist toll. Host-Informationen: rdbms.strato.de via TCP/IP

    Das Script läuft bis hier durch:

    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Das würde bedeuten dass aus der DB nix rauskommt. Dann stimmt was mit dem Select evtl. nix
     
  13. headloose

    headloose Well-Known Member

    Registriert seit:
    15. Mai 2017
    Beiträge:
    82
    Zustimmungen:
    1
    Fehler gefunden!

    $res = mysqli_query($wpdb, $sqlab);

    $res = mysqli_query($db, $sqlab);
     
  14. b3317133

    b3317133 Well-Known Member

    Registriert seit:
    21. November 2014
    Beiträge:
    9.274
    Zustimmungen:
    1.151
    Ok, also war die Angabe bei strato macht er keine Verbindung falsch.

    Weiter zur nächsten Zeile, dort steht im o.g. Code $wpdb wo man eher $db vermuten würde. Wie das auf localhost angeblich funktionert hat ist schwer nachvollziehbar.

    Generell: Würde das Abfangen von Fehlermeldungen etwas strukturierter empfehlen.
     
  15. headloose

    headloose Well-Known Member

    Registriert seit:
    15. Mai 2017
    Beiträge:
    82
    Zustimmungen:
    1
    Ja wie würdest Du es mach?
     
  16. b3317133

    b3317133 Well-Known Member

    Registriert seit:
    21. November 2014
    Beiträge:
    9.274
    Zustimmungen:
    1.151
    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Beispielsweise statt if (!$db ... an dieser Stelle eher so wie im Beispiel #1 mysqli_connect() im o.g. Link...

    Die weitere Abfrage von mysqli_num_rows(...) macht an der Stelle eher keinen Sinn, man würde ja eine Datenbank-Abfrage mit mysqli_connect() überhaupt nur erst dann tätigen, wenn die Datenbank erfolgreich verbunden ist.

    Die PHP Beispiele zeigen etwas mehr Struktur eigentlich ganz gut.

    Ergänzung: Generell würde ich einen anderen Ansatz über eine eigene Instanz von $wpdb wählen und dann die WordPress API Funktionen für alle Datenbank-Operationen verwenden.
     
    #16 b3317133, 28. Januar 2021
    Zuletzt bearbeitet: 28. Januar 2021
  17. headloose

    headloose Well-Known Member

    Registriert seit:
    15. Mai 2017
    Beiträge:
    82
    Zustimmungen:
    1
    Alles klar! Habe es geändert.

    Jetzt habe ich ein weiteres Problem:

    mit folgendem Link möchte ich die ID in eine Einzelseite übergeben.

    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Das ganze habe ich in eine Template Struktur eingebunden. Die Übergabe der ID geht auch, das sehe ich im Browserfeld. Auch hier geht alles wieder auf localhost.

    Nur beim HOSTING bleibt der Bildschirm weiß.

    Das Template ist so aufgebaut:
    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Das komische ist allerdings, wenn ich mein Plugin deaktiviere dann geht es!
     
  18. b3317133

    b3317133 Well-Known Member

    Registriert seit:
    21. November 2014
    Beiträge:
    9.274
    Zustimmungen:
    1.151
    Lt. der og. sonstigen Angaben würde im Template ein echo do_shortcode( '[kalender_start]' ); eingefügt werden und kein Datenbank-Script...

    Wenn der Bildschirm "weiss bleibt", schau in das PHP Error Log des Servers für weitere Angaben oder nutze WP_DEBUG.
     
  19. r23

    r23 Well-Known Member

    Registriert seit:
    9. Dezember 2006
    Beiträge:
    5.609
    Zustimmungen:
    249
    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Ich würde verwenden:
    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
     
  20. headloose

    headloose Well-Known Member

    Registriert seit:
    15. Mai 2017
    Beiträge:
    82
    Zustimmungen:
    1
    Was kann eigentlich das Problem sein dass es mit dem Plugin Probleme gibt? Ich bin absolut unbedarft in der Sache und lerne jeden Tag dazu. Muss ich im Plugin etwas einfügen zur WP VErsion
     
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden