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

Probleme mit dem Schreiben eines Plugins

Dieses Thema im Forum "Plugins und Widgets" wurde erstellt von Holly73, 21. Februar 2011.

  1. Holly73

    Holly73 Member

    Registriert seit:
    15. Februar 2011
    Beiträge:
    6
    Zustimmungen:
    0
    Hallo Forum,

    ich habe mich kürzlich daran gemacht, mein erstes eigenes WP-Plugin zu schreiben, da es das, was ich will, so nicht zu geben scheint.

    Ich habe einige grundlegende Funktionen auch schon hin bekommen, aber so langsam verzweifle ich. Außerdem habe ich das Gefühl, schon jedes Tutorial im Netz abgegrast zu haben - ohne Erfolg.

    Nun zu meinen Problemen:
    Ich schreibe ein Plugin mit einer eigenen Datenbank-Tabelle, in die Datensätze vom Admin-Bereich aus eingetragen werden sollen.

    Dazu habe ich eine Options-Seite erstellt, auf der ein Formular erscheint und darunter die Liste der bisherigen Eintragungen.

    Problem 1:
    Ich weiß nicht so recht, wo ich den Code hinpacken soll, der den Datensatz einträgt. So wie ich es bis jetzt habe funktioniert das Eintragen zwar, aber bei jedem Reload der Seite wird der Datensatz erneut eingetragen. Außerhalb WP würde ich das mit einem header-redirect lösen, aber hier...?

    Problem 2:
    In meiner Übersicht möchte ich neben den bisherigen Eintragungen auch Buttons (Links) für das "Bearbeiten" und "Löschen" der Datensätze haben. Aber auch hier erschließt sich mir nicht, wie ich das anstellen soll. Der Klick auf den "Edit" link muss ja das Formular mit den Daten öffnen und ein weiterer Klick auf das Absenden muss die Daten eintragen.

    Das generelle Problem, das ich habe: ich verstehe irgendwie die Struktur nicht. Auf normalen Webseiten schicke ich die Anfrage einfach an eine Adresse mit angehängten Variablen, aber in WP ist das alles etwas kompliziert...

    Weiß jemand ein gutes Tutorial, das nicht nur zeigt, wie man Daten in die Options-Tabelle schreibt, oder wie man eine eigene Tabelle anlegt, sonder auch, wie es dann weiter geht?

    Danke schonmal!
     
  2. sateffen

    sateffen Well-Known Member

    Registriert seit:
    1. November 2010
    Beiträge:
    85
    Zustimmungen:
    0
    wenn du willst kannst du dich für codeprobleme mit mir auseinandersetzen, bin offen für sowas ;)
    das multiple eintragen ist ärgerlich, darum versuche eines der eintragefelder "unique" zu machen. eben eines das wirklich unique sein kann, dann hast du es schon geschafft.
    andernfalls musst du abfragen ob es bereits einen solchen datensatz gibt bevor du einen eintrag machst.
    du kannst auch mit sessions arbeiten und die letzten post-daten in die session schreiben, und so abfragen ob das 1zu1 die gleichen daten wie beim mal davor sind.
    wären nur 3 ideen ums zu umgehen.

    für das öffnen eines "edit2" oder "löschen" müsstest du per get die vars übergeben also $_server['requested_uri'].'&edit=true&dataid='.$id
    du musst den primary key übergeben um den datensatz 1zu1 zu übergeben, und den mode. ob du nun edit=true setzt, oder ob du einfach mode=edit setzt, deine sache. achte hier aber auf validation der daten die reinkommen! dann kannst du einfach per if abfragen ob das gesetzt ist und den datensatz laden.

    bei weiteren fragen einfach anschreiben per pn oder hier im forum posten
     
  3. Holly73

    Holly73 Member

    Registriert seit:
    15. Februar 2011
    Beiträge:
    6
    Zustimmungen:
    0
    Danke mal vorab für deine Mühe. Ich lasse mir die Vorschläge mal durch den Kopf gehen und würde mich zur Not nochmals melden.

    Danke nochmals!
     
  4. mbstef

    mbstef Well-Known Member

    Registriert seit:
    16. Februar 2008
    Beiträge:
    68
    Zustimmungen:
    0
    1) In deiner Funktion, in der Du das Formular erstellst, fragst Du direkt nach dem Funktions-Aufruf auf $_POST['save'] (oder was auch immer als Variable im Post-Array) ab und im if-Block kannst Du mit der $wpdb Klasse deine Daten in die DB speichern. Frage entsprechend ab, ob das Ganze erfolgreich war, kannst Du mit wp_redirect() umleiten und das Form wird nicht nochmal abgesendet bei einem Reload

    2) Tatsächlich ist das eine Krux mit diesen Funktionen ;)
    Ich löse das mittels Ajax-Abfragen über Dialogboxen und Redirect, ist aber gar nicht so simpel und vor allem mit ein paar Worten zu erklären.

    Du kannst aber auch wie bei den Artikeln mit Select-Feldern arbeiten, die Du wie bei 1) innerhalb der Funktion abfragst und mittels wp_redirect wieder auf die Formseite mit angehängtem &edit=[id] z.B. weiterleitest.
    Alternativ kannst Du auch direkt in den Zeilen der Ausgabe einen direkten Edit-Link mit dem Link zum Formular plus "&edit=[id]" anhängen.

    Vielleicht hilfts ja.
     
  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