| |||||||
| Registrieren | Lexikon | Hilfe | Benutzerliste | Kalender | Suchen | Heutige Beiträge | Alle Foren als gelesen markieren |
![]() |
| | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| PostRank: 3 ![]() Registriert seit: 24.07.2005
Beiträge: 136
| 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! |
| | |
| | #2 (permalink) |
| PostRank: 4 ![]() Registriert seit: 22.02.2006 Ort: Baden-Baden/Baden
Beiträge: 163
| 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-Code: Ein fertiges Script hab ich aber keins anzubieten. |
| | |
| | #3 (permalink) |
| PostRank: 3 ![]() Registriert seit: 24.07.2005
Beiträge: 136
| 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.) Geändert von F.LM (29.08.2008 um 20:16 Uhr). |
| | |
| | #4 (permalink) |
| PostRank: 4 ![]() Registriert seit: 22.02.2006 Ort: Baden-Baden/Baden
Beiträge: 163
| Achso, das mit der Sortierung nach Excerpt hab ich jetzt erst verstanden 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-Code: 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 (permalink) |
| PostRank: 3 ![]() Registriert seit: 24.07.2005
Beiträge: 136
| 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 (permalink) |
| PostRank: 3 ![]() Registriert seit: 24.07.2005
Beiträge: 136
| 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 Code: <?php
/*
Template Name: Pages
*/
?>
<?php get_header(); ?>
<?php get_sidebar(); ?>
<div id="content">
<?php if (have_posts()) : ?>
<?php while (have_posts()) : the_post(); ?>
<?php $moviecritics = $wpdb->get_results("SELECT ID, guid, post_title, post_excerpt
FROM ".dissimulation_de."FLM_posts
WHERE post_status = 'publish'
AND post_type = 'post'
AND post_author = '1'
AND post_category = '3'
ORDER BY post_excerpt ASC");
foreach ($moviecritics as $moviecritics ) {?>
<?php endwhile; ?>
<p align="center"><?php next_posts_link('« Previous Entries') ?> <?php previous_posts_link('Next Entries »') ?></p>
<?php else : ?>
<h3 align="center">Not Found</h3>
<p align="center">Sorry, but you are looking for something that isn't here.</p>
<?php endif; ?>
</div>
<!-- end content-->
<?php get_footer(); ?>
</div>
</body>
</html>
Geändert von F.LM (29.08.2008 um 23:57 Uhr). |
| | |
| | #7 (permalink) | |
| PostRank: 4 ![]() Registriert seit: 22.02.2006 Ort: Baden-Baden/Baden
Beiträge: 163
| Zitat: 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 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-Code: 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 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 (permalink) |
| PostRank: 3 ![]() Registriert seit: 24.07.2005
Beiträge: 136
| 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: <?php
/*
Template Name: test
*/
?>
<?php get_header(); ?>
<?php get_sidebar(); ?>
<div id="content">
<ul>
<?php $moviecritics = $wpdb->get_results("SELECT ID, guid, post_title, post_excerpt
FROM ".FLM."_posts
WHERE post_status = 'publish'
AND post_type = 'post'
AND post_author = '1'
AND post_category = '3'
ORDER BY post_excerpt ASC");
/* Hier kommt die Schleife! */
foreach ($moviecritics as $moviecritics ) {?>
<li>
<a href="<?php echo $moviecritics->guid;?>"><?php echo $moviecritics->post_excerpt; ?></a>
</li>
<?php } ?>
</ul>
</div>
<!-- end content-->
<?php get_footer(); ?>
</div>
</body>
</html>
SimulationsRaum » test Die bleibt aber, wie du siehst, leer. Wahrscheinlich habe ich irgend etwas falsch gemacht? Geändert von F.LM (30.08.2008 um 08:04 Uhr). |
| | |
| | #9 (permalink) |
| PostRank: 3 ![]() Registriert seit: 24.07.2005
Beiträge: 136
| 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: Schreibt keine daten in post_category und doppelte einträge! 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? Geändert von F.LM (30.08.2008 um 10:39 Uhr). |
| | |
| | #10 (permalink) | ||
| PostRank: 4 ![]() Registriert seit: 22.02.2006 Ort: Baden-Baden/Baden
Beiträge: 163
| Zitat:
![]() Ja, aber...wenn ich das überschaue, liegen die Verknüpfungen Artikel - Kategorien & Tags alle in der Tabelle termin_relationships. Zitat:
PHP-Code: Teste das mal, es ist besch... dass ich das nicht gleich selbst machen kann PHP-Code: Liebe Edith, das mit der Syntax ist geklärt. Der Code oben sollte so richtig sein. Ausprobieren! (-: Geändert von baex (30.08.2008 um 15:20 Uhr). | ||
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |