eigenes Plugin, posts mit php erzeugen

  • Hallo Zusammen, bin gerade dabei an einem für eigene Zwecke programmiertem Plugin zu feilen und komme da an einem Punkt nicht wirklich weiter. Hoffe mir kann jemand ein Denkanstoss geben.

    Also das Plugin soll folgendes machen...

    Ich kriege Daten mittels einer XML Datei zur Verfügung gestellt, diese Datei wird vom Plugin ausgelesen und in ihre Bestandteile in einer eigenen DB-Tabelle gespeichert. (Ist gelöst)
    Für den Inhalt wird ein eigenes Custom Post Type direkt aus dem Plugin heraus angelegt. (Ist gelöst)
    Die Daten aus der DB-Tabelle werden ausgelesen und nach einem von mir vorgegebenem Muster (kriege ich hin) als ein fertiger Artikel dieser Custom Post Type Gruppe automatisiert von Php erstellt werden.( Und da hackt es bei mir)

    Habe durch die Suchfunktion nichts ähnliches gefunden.

    Gibt es da evtl. Lösungen von WP heraus, oder soll ich diese in die Tabelle wp_posts in die entsprechenden Tabellenzellen schreiben?

    • 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

  • Gibt es da evtl. Lösungen von WP heraus, oder soll ich diese in die Tabelle wp_posts in die entsprechenden Tabellenzellen schreiben?


    Die Posts sind ja mit anderen Tabellen verknüpft und eine Anleitung, wie die verknüpft sind, habe ich noch nicht gefunden. So sehr viel gesucht habe ich aber auch noch nicht danach, doch nach anderen und dabei ist mir bisher nichts über den Weg gelaufen. Wenn, so müsstest Du Dir mal richtig anschauen, was da wie importiert werden muss.

  • Mit Lösungen von WP dachte ich eigentlich mehr an so was wie z.B. eine Funktion bei dessen Aufruf ein klar strukturiertes Array oder direkt Argumente wie Titel, Content, Post-Type, usw. übergeben werden müssen und diese Funktion übernimmt dann den Eintrag in die Wp-Datenbank.
    An Melewo: Die Tabellenstrucktur kann hier nachgelesen werden. http://codex.wordpress.org/File:WP3.8-ERD.png

  • das dir insert post noch abgeht, war aus der frage nicht erkennbar, da du geschrieben hast, du speicherst die daten bereits in der Datenbank, wp_insert_post ist die direkt WP Funktion, was man bevor wordpress mit mysql php befehle gelöst hat,
    was du dir dann auch noch anschaun solltest (falls du mehr felder als Standard wp_post tabelle speicherst, add_post_meta weiters wp_set_object_terms dann kannst du auch taxonmies, categories usw gleich speichern,

    und ich wäre auch auf deine Lösung mit XML einlesen neugierig, würde zu meinem Plugin Project, wo ich alle wp tabellen auslesen und nach wunsch als table, li, ul, span, div, form usw darstellen kann und auch per definierten formulare die daten bearbeiten usw interessant dazupassen.

    Wordpress weil es spass macht, besonders beim WordPress Meetup in Linz

  • Die Tabellenstrucktur kann hier nachgelesen werden. http://codex.wordpress.org/File:WP3.8-ERD.png


    Das ist nur grob, welche Tabelle mit welcher. Ich bin bei einer anderen Sache mal ganz schön ins schleudern gekommen, weil die ID des Beitrages in der Tabelle wp_post ID heißt, aber mit der Tabelle wp_term_relationships verknüpft ist, wo sie dann nicht mehr ID heißt, sondern object_id und diese dann mit term_taxonomy_id und term_order verknüpft ist, womit die Verknüpfung aber noch nicht ganz zu Ende war, da kam nach noch eine weitere Tabelle. Und das ist ja nur die ID. Davon abgeschreckt, hatte ich mir alles weitere für spätere Zeiten aufgehoben.

  • das dir insert post noch abgeht, war aus der frage nicht erkennbar, da du geschrieben hast, du speicherst die daten bereits in der Datenbank, wp_insert_post ist die direkt WP Funktion, was man bevor wordpress mit mysql php befehle gelöst hat,
    was du dir dann auch noch anschaun solltest (falls du mehr felder als Standard wp_post tabelle speicherst, add_post_meta weiters wp_set_object_terms dann kannst du auch taxonmies, categories usw gleich speichern,

    und ich wäre auch auf deine Lösung mit XML einlesen neugierig, würde zu meinem Plugin Project, wo ich alle wp tabellen auslesen und nach wunsch als table, li, ul, span, div, form usw darstellen kann und auch per definierten formulare die daten bearbeiten usw interessant dazupassen.


    Speichern in der Datenbank ja, aber eigens konstruierte Tabelle, die in diesem Moment mit den Posts nicht viel zu tun hat. Da die Struktur der XML ebenfalls sehr umfangreich ist und einige Felder davon nur zu Abfragezwecken benötigt werden um z.B zu entscheiden ob bestimmte Daten angezeigt werden dürfen oder nicht, habe ich mich dazu entschlossen eben die Daten in ihren Bestandteilen zu zerlegen und erst in der DB zu speichern. Zur Konstruktion des Artikels kann ich mir dann, per Formulareingaben und Auswahlkriterien im Admin-Menü die Daten entsprechend auslesen und zusammenzusetzen.

    Meinst du den Code zum Auslesen der XML?

  • Also ein kleines Feedback, zwischendurch...

    Das erstellen der Posts mit wp_insert_post() und das anlegen der Meta-tags mit add_post_meta klappt schon mal wunderbar.
    2 ungelöste Probleme habe ich allerdings noch.

    zu1. -> Bilder zu jedem Post ? Es gibt pro Post etwa 1 bis 10 Bilder, wie speichere ich diese ???
    Ich könnte natürlich die URL als Post_Meta speichern und diese dann im Template mit <img>-Tag aufrufen oder gibt es da evtl. ein anderen Ansatz(Wordpressnahe)
    zu2- -> Bei einem erneuten Aufruf im Admin werden die Posts erneut angelegt, was natürlich zu mehrfachen Doppelposts kommen kann. Also brauche ich da erst eine Abfrage ob dieser Post bereits existiert.
    Wie kann ich auf die ID eines POSTS zugreifen, bei dem z.B. der Titel 'XYZ' ist oder der Postname 'ABC'???
    Mit get_the_ID kann ich nicht dran, da im Backend-Bereich ich natürlich außerhalb vom Loop bin.

    wäre für jeden Hinweis dankbar!

Jetzt mitmachen!

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