Plugin entwickeln mit eigener Tabelle in der DB

Aktuell arbeiten wir noch im Hintergrund an der Foren-Struktur, daher kann es vorkommen das noch nicht alles zu 100% passt. Sowohl die Foren-Bereiche, Labels, Berechtigungen, Icons und das verschieben der Themen in die entsprechende Bereiche wird noch alles durchgeführt, sobald das abgeschlossen ist entfernen wir diesen Hinweis auch.
  • hallo, ich möchte ein plugin entwickeln mit eigener tabelle in der datenbank.

    ich möchte variable abspeicher in abhängigkeit zum/r post/page. d.h. beim konpfdruck "submit" sollen die dateien im backend abhängig vom aktuell bearbeitetem post gespeichert und später wieder aufgerufen werden.

    folgende anleitung kenn ich schon:

    Creating Tables with Plugins WordPress Codex

    hilfreich erscheint mir auch folgendes:
    Function Reference/wpdb Class WordPress Codex

    aber ich weiß noch nicht ganz, wie ich es anstellen soll.

    hat jemand tipps für mich?

    • 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

    Wenn du Fragen hast, kannst du dich gerne jederzeit an @Maximilian Rupp wenden

    Hinweis: folgt noch

  • ok, dann denk ich halt mal wieder laut.

    also ich will ein plugin schreiben, mit dem ich einige dateien in der datenbank speicher und immer wieder aufrufe, wenn ich sie brauche. alles, was in der db gespeichert wird, soll postabhängig sein, also jeder post soll zusätzlichen dateien speichern. ich bin da auf die benutzerdefinierten felder, custom fields, gekommen.

    ich weiß so im groben, wie ein plugin aufgebaut werden muß.

    das einzige, was ich nicht ganz verstehe ist halt, wie ich daten in der datenbank speichern kann.

    inzwischen aber ist mir klar geworden, dass ich für das plugin eben die meta-tabelle nutzen kann.

    ok, wie man dateien aus der bank aufrufen und zeigen kann, dazu gibt es so einiges im netzt. bei franky kann man z.B. folgendes abschreiben:

    PHP
    [COLOR=#000000][B]<?php[/B][/COLOR] [COLOR=#000088]$image[/COLOR] [COLOR=#339933]=[/COLOR] get_post_meta[COLOR=#009900]([/COLOR][COLOR=#000088]$post[/COLOR][COLOR=#339933]->[/COLOR][COLOR=#004000]ID[/COLOR][COLOR=#339933],[/COLOR] 'image_des_beitrags'[COLOR=#339933],[/COLOR] [COLOR=#000000][B]true[/B][/COLOR][COLOR=#009900])[/COLOR]; [COLOR=#000000][B]?>[/B][/COLOR]
     
    <a href="[COLOR=#000000][B]<?php[/B][/COLOR] the_permalink[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR] [COLOR=#000000][B]?>[/B][/COLOR]"><img src="[COLOR=#000000][B]<?php[/B][/COLOR] [COLOR=#990000]echo[/COLOR] [COLOR=#000088]$image[/COLOR]; [COLOR=#000000][B]?>[/B][/COLOR]" alt="[COLOR=#000000][B]<?php[/B][/COLOR] the_title[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR]; [COLOR=#000000][B]?>[/B][/COLOR]" /></a>

    aber wie schreibe ich jetzt dateien in die datenbank rein?
    ich glaube weiter helfen kann mir folgender fund:

    soweit ich da mir was abgucken kann: ich vermute, dass bevor ich dateien in die bank schreiben kann, muß ich mich mit der db verbinden(?)
    mit:

    Code
    global $wpdb;

    genaueres hierzu gibt es aber hier.

  • interessantes habe ich auch in dem zusammenhang in dem tread gefunden:

    http://forum.wordpress-deutschland.org/konfiguration/…e-auslesen.html

    und hier auch natürlich wichtig, stichwort: run any query on the database:
    http://codex.wordpress.org/wpdb_Class

    das grundmuster ist:

  • kurz mal was bei rene-ade.de gelernt: übrigens eine sehr gute einleitung, die man zusätzlich zu den üblichen wordpress-codex-anleitungen lesen kann. sehr gut beschrieben, was man machen muß, wenn man ein eigenes plugin entwickeln will.


    Quote

    WPDB: Datenbankabfragen
    Für die meisten Abfragen gibt es bereits komfortable Funktionen wie zum Beispiel get_post(…) um das Datenobjekt eines bestimmten Posts (Beitrag oder Seite) zu bekommen, oder get_posts(…) um alle Posts auszulesen die bestimmten Kriterien entsprechen. Wer keine Funktion von WordPress finden konnte um bestimmte Werte aus der Dankenbank abzufragen, kann selbst Querys über das globale Objekt $wpdb der WPDB-Klasse ausführen.
    Mit der Methode query(…) können Manipulationen an der Datenbank vorgenommen werden. Ein einzelner Wert wird am besten mit der Methode get_var(…) abgefragt, die den gewünschten Wert direkt zurückgibt. Die Methode get_row(…) gibt eine Ergebnis-Zeile als Array oder Objekt zurück. Und mit der Methode get_results(…) können umfangreichere Datenbankabfragen durchgeführt werden: Diese Methode liefert alle abgefragten Datensätze in einem Array zurück, wobei die Elemente des Arrays (wie ein einzelner Rückgabewert bei get_row(…)) auf Wunsch die Spalten einer Ergebnis-Zeile in einem Array oder als Objekt enthalten.

  • auch sehr guter thread:
    http://forum.wordpress-deutschland.org/plugin-entwick…g-aufbauen.html

    Quote
    PHP
    [LEFT]  [COLOR=#000000] [COLOR=#0000cc]<?php $comments [/COLOR][COLOR=#006600]= [/COLOR][COLOR=#0000cc]$wpdb[/COLOR][COLOR=#006600]->[/COLOR][COLOR=#0000cc]get_results[/COLOR][COLOR=#006600]([/COLOR][COLOR=#cc0000]"SELECT comment_post_ID, comment_author, comment_author_email, comment_content, comment_date, DATE_FORMAT(comment_date,'%d.%m.%Y %H:%i') AS new_comment_date 
      FROM $wpdb->comments 
      WHERE comment_type = '' 
      && comment_approved = '1' 
      ORDER BY comment_date 
     DESC LIMIT 3"[/COLOR][COLOR=#006600]); [/COLOR][COLOR=#0000cc]?>[/COLOR] [/COLOR]   [/LEFT]

    ok, für mich wird klar, ich muß bei meinem plugin erstmal die verbindung zur datenbank herstellen.

    eine anmerkung von marX macht mir auch was deutchlicher:

    Quote


    Du willt ja keine neue DB-Verbindung aufbauen, sondern die bestehende nutzen.

    mit dem

    Code
    [COLOR=#000000][COLOR=#006600]global [/COLOR][COLOR=#0000cc]$wpdb[/COLOR][COLOR=#006600]; [/COLOR][/COLOR]

    greife ich auf schon eine bestehende verbindung zu.

    eine sache ist für mich auch noch aus dem thread klargeworden. ich muß das ganze im wp-context einbauen. also in der plugin-datei oder einer datei, die ich mit include eingebunden habe.

    Code
    Wo bindest du das Script denn ein? Muss natürlich irgendwo im [URL="http://forum.wordpress-deutschland.org/lexikon/?do=showentry&item=WP"]WP[/URL]-context sein, z.B. [URL="http://forum.wordpress-deutschland.org/lexikon/?do=showentry&item=Plugin"]Plugin[/URL] oder [URL="http://forum.wordpress-deutschland.org/lexikon/?do=showentry&item=Theme"]Theme[/URL].
  • kurze abweichung: ich hab mir ja auch gedanken darüber gemacht, dass ich für das plugin im adminbereich eine eigene verwaltungsseite haben will.

    bei wordpress.org gibt es ein wundervolles copy&paste-beispiel. einfach den folgenden code in eine datei kopieren, in den plugins-odner schieben, aktivieren, fertig. schon kann man sehen, wo sich alles eine neue adminseite einfügt. eine super demosache:

    Quote

    für meine zwecke aber brauche ich diese box im adminbereich bearbeiten und erstellen.
    auch hierfür gibt es eine superanleitung sogar als video:
    Creating Click & Drag Options Boxes in WP 2.7 | Techlyzer.com

    wirklich empfehlenswert.

    den code aus dem videotutorial habe ich zusammengeschrieben und in eine plugin-datei kopiert. hier mal auch wieder eine easy-copy&paste-sache: den code einfach in eine datei kopieren, in den plugin-ordner schieben, aktivieren und im adminbereich "bearbeiten", "erstellen" schauen. da gibt es dann so eine box. aus dem code heraus wird auch deutlich, wie man dann eine eigene box gestalten kann:

    Quote
  • ok, anne will war heute mal wieder wie immer. übriges gibt es auch ein blog von der guten. natürlich powered by wordpress.

    aber ich wollte ja eigentlich mein plugin basteln. ich merke es schon, es artet eher aus in eine art selbst-tutorial. naja, warum eigenlich nicht. mir hilft ja keiner, also helfe ich mir selber. macht auch spaß die teilinfos zu suchen.

    der thread mag vielleicht ein wenig durcheinander wirken, aber so ist es eben mit der selbstevolution. ich bin grad dabei rauszufinden, was ich nicht weiß und habe hier versucht mich sozusagen am eigenen schopf aus dem sumpf zu ziehen. (anne will hat einfach zu schönes haar, da wollt ich dann doch nicht ran)

    also, einfaches plugin kann ich. aber ich will dateien letztenendes in der datenbank ablegen.

    inzwischen habe ich so einiges rausbekommen. auch wenn es bis her etwas konfus wirkt.

    für meine zwecke reicht die tabelle post_meta mit alldazugehörigen wordpress eigenen funktionen.

    ich will eine optionsbox im adminbereich haben, mit eigenen benutzerdefinierten feldern. ich will aber nicht die schon vorhandenen nutzen. ich will die für meine zwecke anpassen und alles so gestalten, dass das plguin sofort einsatzbereit ist nach dem aktivieren.

    inzwischen glaube ich etwas sehr sinnvolles gefunden zuhaben:

    genau das tutorial, das ich jetzt an der stelle brauche:
    Function Web Design & Development [ Blog ] Tutorial: Creating Custom Write Panels in WordPress

  • so, dann hab ich jetzt aus dem tutorial die codeschnipsel in eine php datei geschmissen und in den pluginordner geschoben. das plugin aus dem tutorial funktioniert wunderbar. im tutorial selber werden wie gesagt nur codeschnipsel geboten. hier biete ich einfach mal den ganzen code zum copy&paste an, natürlich mit großem dank an den lehrer:

    ich werde es dann demnächst auf meine wünsche anpassen. erstmal soweit. ich glaube, mit dem tutorial werde ich an mein ziel kommen. guts nächtle erstmal

  • achso ich hätts fast vergessen. bei dem letztgenannten plugin aus dem tutorial kann man im selbstgestaltetem "benutzerdefiniertem feld" eine url eingeben. man muß aber noch im theme irgenwo die ausgabe einpflegen. ich habe folgenden code einfach in der index.php hiter

    PHP
    <?php the_content(); ?>

    gepackt:

  • PHP
    [COLOR=#000000][B]<?php[/B][/COLOR] [COLOR=#000088]$image[/COLOR] [COLOR=#339933]=[/COLOR] get_post_meta[COLOR=#009900]([/COLOR][COLOR=#000088]$post[/COLOR][COLOR=#339933]->[/COLOR][COLOR=#004000]ID[/COLOR][COLOR=#339933],[/COLOR] 'image_des_beitrags'[COLOR=#339933],[/COLOR] [COLOR=#000000][B]true[/B][/COLOR][COLOR=#009900])[/COLOR]; [COLOR=#000000][B]?>[/B][/COLOR]
     
    <a href="[COLOR=#000000][B]<?php[/B][/COLOR] the_permalink[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR] [COLOR=#000000][B]?>[/B][/COLOR]"><img src="[COLOR=#000000][B]<?php[/B][/COLOR] [COLOR=#990000]echo[/COLOR] [COLOR=#000088]$image[/COLOR]; [COLOR=#000000][B]?>[/B][/COLOR]" alt="[COLOR=#000000][B]<?php[/B][/COLOR] the_title[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR]; [COLOR=#000000][B]?>[/B][/COLOR]" /></a>


    Ersterer Code hat nichts direkt mit der DB zu tun, sondern mit benutzerdef. Feldern, die du natürlich auch nutzen kannst.

    Letzteres Bsp. wäre eher was für dich.

    Kurze Zwischenfrage: Du schreibst immer, du möchtest Dateien in die DB schreiben. Dateien oder Daten? ;)

    wpseek.com - Die WordPress-Code-Suchmaschine

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!