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

sortierte Beitagsliste

Dieses Thema im Forum "Konfiguration" wurde erstellt von F.LM, 28. August 2008.

  1. F.LM

    F.LM Well-Known Member

    Registriert seit:
    24. Juli 2005
    Beiträge:
    192
    Zustimmungen:
    0
    Hallo,

    ich nutze Wordpress für ein Online-Filmmagazin. Jetzt möchte ich auf einer anderen Internetseite folgende Ausgabe aus der WP-Datenbank generieren:

    Eine alphabetisch sortierte Listen der Beiträge von author=x und cat=y, wobei die alphabetische Sortierung nach dem Inhalt des "Auszug"-Feldes vorgenommen werden soll.

    Kann mir da jemand ein kleines PHP-Skript entwerfen? Die Zugangsdaten für den MySQL-Zugriff auf die WP-Datenbank kann ich selbst eintragen.

    Vielen Dank!
     
  2. baex

    baex Well-Known Member

    Registriert seit:
    22. Februar 2006
    Beiträge:
    162
    Zustimmungen:
    0
    Liegt die "andere Internetseite" auf einem anderen Server? Dann wäre es brandgefährlich, bei jeder Abfrage die Datenbank-Zugangsdaten über Netz zu schicken - findest Du nicht?

    In diesem Fall arbeitest Du besser mit einem Parser, der einen von WordPress generierten RSS-Feed verarbeitet. Zum Beispiel SimplePie. Laut dem WP Codex müsste soetwas funktionieren: wp-rss2.php?cat=1?author=1. Irgendwie ist es auch zu schaffen, dass er alle Artikel in den Feed packt und nicht nur die im wp-admin angegebene Zahl. Da müsste ich aber selbst erstmal losgooglen ;)

    Es sollte auch möglich sein, sich von WP einen "nackten" Loop ausgeben zu lassen (entsprechend modifizierte Datei im Theme-Ordner oder so...) und die dann per PHP-Include einzubinden. (Nicht ganz so ressourseneffizient wie die Feed-Variante, weil Du nicht so leicht cachen kannst und jedes Mal eine Server-zu-Server-Abfrage durchs Netz geht, bevor der Besucher was sieht.)

    Ich hatte mal Beiträge aus einer Installation in einer anderen auszugeben. Da beider unter der gleichen Domain liefen, hatte ich eine SQL-Abfrage gefrickelt, der die Beitragstitel direkt ausgelesen hatte. Das war auch ganz nett und sah so aus:

    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Du siehst, gleiche Datenbank, anderer Prefix. Danach folgt natürlich noch der Schleifeninhalt mit der eigentlich Abfrage.

    Ein fertiges Script hab ich aber keins anzubieten.
     
  3. F.LM

    F.LM Well-Known Member

    Registriert seit:
    24. Juli 2005
    Beiträge:
    192
    Zustimmungen:
    0
    Die abfragende Seite liegt auf demselben Server und ist sogar auch ein Wordpress-Blog.

    Ich frage mich, ob das nicht einfacher zu bewerkstelligen ist. Immerhin gibt es ja den the_excerpt()-Tag. Dooferweise kann man dem keine Parameter übergeben.

    Für mich wäre wichtig, einen author- und category-Parameter zu übergeben und das ganze dann noch in der alphabetischen Reihenfolge auszugeben.

    Das hier wäre so eine Artikelliste: F.LM » Stefan Höltgen (damit mal klar ist, worum es mir geht: In den excerpten stehen die Titel der Filme, zu denen in dem Blog von mir Kritiken sind.)
     
    #3 F.LM, 29. August 2008
    Zuletzt bearbeitet: 29. August 2008
  4. baex

    baex Well-Known Member

    Registriert seit:
    22. Februar 2006
    Beiträge:
    162
    Zustimmungen:
    0
    Achso, das mit der Sortierung nach Excerpt hab ich jetzt erst verstanden :roll:

    Ich weiß, im Nachhinein kommt das immer gut... aber wie kommst Du nur auf die Idee, dafür den Excerpt zu missbrauchen? Custom Fields wäre hier das Mittel des Wals gewesen... :|

    Trotzdem glaube ich, das mein Weg direkt in die Datenbank letztendlich der Beste ist.

    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Es juckt mich doch :cool: Hier ist vorrausgesetzt, dass die gleichen DB-Zugangsdaten verwendet werden ($wpdb). Dann holen wir die Werte ID, Permalink, Titel und Excerpt aus der Datenbank ins Array.

    Der DB-Präfix ist hier pl. Veröffentlicht sollen die Artikel natürlich sein und es sollen Artikel sein, keine Seiten. Nur Artikel vom Autor mit der ID 1 und aus der Kategorie mit der ID 1. Sortieren wollen wir das Ganze absteigend.

    So irgendwie müsste das tun...
     
  5. F.LM

    F.LM Well-Known Member

    Registriert seit:
    24. Juli 2005
    Beiträge:
    192
    Zustimmungen:
    0
    excerpt habe ich genommen, weil das einerseits in der Übersicht ( F.LM » Home ) gleich angezeigt wird und andererseits schon automatisch über den Kritiken drüber steht. Ein bisschen unelegant ist es. Das gebe ich zu.

    Deine Lösung werde ich morgen früh mal teste. Danke schon mal!!!
     
  6. F.LM

    F.LM Well-Known Member

    Registriert seit:
    24. Juli 2005
    Beiträge:
    192
    Zustimmungen:
    0
    Ich hab das mal eben blind in den Loop meines Pages-Template eingesetzt und kriegen:

    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Vielleicht siehst du den Fehler auf Anhieb?

    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Die Datenbank-Tabelle heißt "FLM_posts", die Datenbank heißt "dissimulation_de", der autor=1, die category=3.
     
    #6 F.LM, 29. August 2008
    Zuletzt bearbeitet: 29. August 2008
  7. baex

    baex Well-Known Member

    Registriert seit:
    22. Februar 2006
    Beiträge:
    162
    Zustimmungen:
    0
    Wenn das so ist, hast Du einige hübsche Fehler eingebaut ;) Die Schleife ist in unserem Fall das foreach. Wir arbeiten ausdrücklich nicht mit einer WordPress Loop! (Machen praktisch das, was die WP Loop macht, einfach selbst.)

    Da wir ja wissen das Artikel vorhanden sind (und die Sache nur für den Eigenbedarf geschrieben wird) schenken wir uns einfach mal irgendwelche If-Abfragen :twisted:

    Bevor ich jetzt Code poste, frage ich nochmal nach. So wie das im Moment gelöst ist, greift er auf die WordPress-Datenbankabfrage $wpdb zurück. Das funktioniert aber ausdrücklich nur dann, wenn beide Installationen in der gleichen Installation mit unterschiedlichen Präfixen laufen.

    Ich gehe deshalb nun einfach mal davon aus, dass beide Installationen in der Datenbank dissimulation_de liegen und dass die, auf die wir gleich zugreifen werden, den Präfix FLM_ hat.

    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Das ganze packst Du jetzt irgendwo in ein Template File außerhalb eines Loops, aber innerhalb von WordPress (versteht sich, da wir ja die Datenbankabfrage von WordPress brauchen)

    Die Abfragen nach der ID und dem post_title brauchen wir so erstmal nicht. Sollten die tatsächlich überflüssig werden, löschst Du die einfach oben in Zeile 3. Alternativ könnte man noch ein Datum aus der Datenbank holen 8)

    Ich hoffe das tut jetzt. Code so ins Blinde herin schreiben ist gar nicht so einfach... Lustig wird es übrigens, wenn in Deinen Excerpt-Inhalten auch noch mit Paragraph-Tags gearbeitet wird. Aber jetzt bau's mal ein, dann schaun wir mal.
     
  8. F.LM

    F.LM Well-Known Member

    Registriert seit:
    24. Juli 2005
    Beiträge:
    192
    Zustimmungen:
    0
    Ja, die Installationen von wp liegen im selben Verzeichnis und mit verschiedenen Tabellen-Präfixen in der selben Datenbank.

    Ich habe deinen Code in ein neues Template namens "test" eingebaut:

    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    und eine Seite geschrieben, die "test" heißt und das Template benutzt:

    SimulationsRaum » test

    Die bleibt aber, wie du siehst, leer. Wahrscheinlich habe ich irgend etwas falsch gemacht?
     
    #8 F.LM, 30. August 2008
    Zuletzt bearbeitet: 30. August 2008
  9. F.LM

    F.LM Well-Known Member

    Registriert seit:
    24. Juli 2005
    Beiträge:
    192
    Zustimmungen:
    0
    Ich glaube, ich habe den Fehler gefunden:

    AND post_category = '3'

    ergibt so keine Ergebnisse. Ich habe die Zeile mal entfernt - jetzt werden alle Beiträge von author=1 angezeigt.

    In der Datenbank steht (seltsamerweise) in der Spalte "category" bei allen Beiträgen der Wert "0". Das heißt, der cat=3 muss in irgend einer anderen Datenbank-Tabelle stehen.

    kuk ma: http://forum.wordpress-deutschland.org/allgemeines/37309-schreibt-keine-daten-post_category-und-doppelte-eintraege.html#post179945

    Das ist dann der Wert term_taxonomy_id=2 in der Tabelle FLM_term_taxonomy

    Wie baut man denn da jetzt noch eine zusätzliche Abfrage dieser zweiten Tabelle ein?
     
    #9 F.LM, 30. August 2008
    Zuletzt bearbeitet: 30. August 2008
  10. baex

    baex Well-Known Member

    Registriert seit:
    22. Februar 2006
    Beiträge:
    162
    Zustimmungen:
    0
    Shit, da hab ich gar nicht drangedacht :???: Ja, da war was. In der guten alten Zeit, also damals... :rolleyes:

    Ja, aber...wenn ich das überschaue, liegen die Verknüpfungen Artikel - Kategorien & Tags alle in der Tabelle termin_relationships.

    Na, gehen wir einen ganz dreckigen Weg 8)

    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Du siehst, ich habe in die Schleife einfach nochmal eine Datenbankabfrage gepackt und das ganze dann per if gecheckt.

    Teste das mal, es ist besch... dass ich das nicht gleich selbst machen kann :| In der Zeile
    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    bin ich mir nicht ganz sicher, ob da hinten die Syntax richtig ist. Aber test' das mal...

    Liebe Edith, das mit der Syntax ist geklärt. Der Code oben sollte so richtig sein. Ausprobieren! (-:
     
    #10 baex, 30. August 2008
    Zuletzt bearbeitet: 30. August 2008
  11. F.LM

    F.LM Well-Known Member

    Registriert seit:
    24. Juli 2005
    Beiträge:
    192
    Zustimmungen:
    0
    bringt:

    Parse error: syntax error, unexpected '?' in /is/htdocs/50786/www.dissimulation.de/simulationsraum/wp-content/themes/Blueleaves/test.php on line 31

    Das ist Zeile 31:

    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
     
    #11 F.LM, 31. August 2008
    Zuletzt bearbeitet: 31. August 2008
  12. baex

    baex Well-Known Member

    Registriert seit:
    22. Februar 2006
    Beiträge:
    162
    Zustimmungen:
    0
    Na wenn das alles ist :)

    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Es fehlte ein Leerzeichen vor dem ersten ?>.
    Geht jetzt alles?
     
  13. F.LM

    F.LM Well-Known Member

    Registriert seit:
    24. Juli 2005
    Beiträge:
    192
    Zustimmungen:
    0
    Computer sagt: nein.

    Parse error: syntax error, unexpected '?' in /is/htdocs/50786/www.dissimulation.de/simulationsraum/wp-content/themes/Blueleaves/test.php on line 31
     
  14. baex

    baex Well-Known Member

    Registriert seit:
    22. Februar 2006
    Beiträge:
    162
    Zustimmungen:
    0
    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Habe nochmal ein paar Fehler ausgebügelt. Wie gesagt, ich kanns nicht direkt testen... :rolleyes:
     
  15. F.LM

    F.LM Well-Known Member

    Registriert seit:
    24. Juli 2005
    Beiträge:
    192
    Zustimmungen:
    0
    Ich fühle mich mehr und mehr inspiriert, endlich mal nen ordentlichen LAPM-Kurs zu belegen. In den 80ern hatte ich immer ne Menge Spaß, solche Probleme selbst zu lösen. Aber mit GFA-Basic und Turbo-Pascal scheint dem irgendwie nicht beizukommen zu sein. :D

    Das Script produziert keinen Fehler mehr, gibt aber nur eine leere Seite aus.

    In der ersten DB-Abfrage versucht das Script aus der Tabelle "term_relationships" die Tabellen "post_author" und "post_cathegory" auszulesen. Ein Blick in meine DB verrät aber, dass die da gar nicht drin sind.
     
    #15 F.LM, 1. September 2008
    Zuletzt bearbeitet: 1. September 2008
  16. baex

    baex Well-Known Member

    Registriert seit:
    22. Februar 2006
    Beiträge:
    162
    Zustimmungen:
    0
    Ich hatte die beiden Tabellennamen (bei FROM) vertauscht. :roll:

    Wenn Du willst, kannst Du mir mal per PM Deine FTP-Daten geben und sagen, wo Du das Teil zurzeit ausprobierst. Dann bring ich's einfach gleich selber zum Laufen :)

    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Ich werd wahrscheinlich in zehn, fünfzehn Jahren auch nur noch hilflos dastehen... Insofern - :)
     
  17. F.LM

    F.LM Well-Known Member

    Registriert seit:
    24. Juli 2005
    Beiträge:
    192
    Zustimmungen:
    0
    Sorry, ich muss das Thema noch mal hochholen, weil es ein kleines Problem gibt.

    Und zwar verstehe ich an der Routine nicht, was ich ändern muss, wenn sich der Name der Quell-Datenbank geändert hat.

    Kann mir da jemand helfen?
     
  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