sortierte Beitagsliste

  • 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!

    • 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

  • 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
    <?php 
    $logphotos = $wpdb->get_results("SELECT ID, guid, post_title FROM ".pl."_posts
        WHERE post_status = 'publish' AND post_type = 'post' ORDER BY ID DESC LIMIT 9");
    foreach ($logphotos as $logphotos) {?>

    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.

  • 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.)

  • 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 gl[COLOR=black]aube ich, das mein Weg direkt in die Datenbank letztendlich der Beste ist.

    Es juckt mich doch 8-) 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...
    [/COLOR]

  • Ich hab das mal eben blind in den Loop meines Pages-Template eingesetzt und kriegen:

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

    Vielleicht siehst du den Fehler auf Anhieb?

    Die Datenbank-Tabelle heißt "FLM_posts", die Datenbank heißt "dissimulation_de", der autor=1, die category=3.

  • Die Datenbank-Tabelle heißt "FLM_posts", die Datenbank heißt "dissimulation_de", der autor=1, die category=3.

    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.

    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.

  • 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:

    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?

  • 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/37…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?

  • 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/37…html#post179945

    Shit, da hab ich gar nicht drangedacht :???: Ja, da war was. In der guten alten Zeit, also damals... :rolleyes:


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

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


    Wie baut man denn da jetzt noch eine zusätzliche Abfrage dieser zweiten Tabelle ein?

    Na, gehen wir einen ganz dreckigen Weg 8)

    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
    WHERE object_id = ''.$moviecritics->guid;.'';

    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! (-:

  • Habe nochmal ein paar Fehler ausgebügelt. Wie gesagt, ich kanns nicht direkt testen... :rolleyes:

  • 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.

  • 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 :-)

    Zitat

    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. :grin:

    Ich werd wahrscheinlich in zehn, fünfzehn Jahren auch nur noch hilflos dastehen... Insofern - :-)

Jetzt mitmachen!

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