dynamicinternet Webdesign

Das Blog

Themen, Tutorials sowie Tipps & Tricks über Webdesign, (X)HTML und CSS, Programmierung, WordPress und was uns sonst noch bewegt.

RSS abonnieren

WordPress Funktionen ausserhalb von WP nutzen

Das Scenario: Ich wollte diese Webseite nicht allein mit Worpress als CMS betreiben, da ich mich nicht vollkommen von WordPress abhängig machen möchte und ausserdem die Freiheit brauche, eigene Seiten zu erstellen, auf denen selbstprogrammierte Anwendungen laufen. Darum befindet sich dieses Blog in einem extra Verzeichnis. Wie kann ich nun auf meiner Startseite, die in der Root vom Webserver liegt und keine WordPresseite ist, trotzdem Artikel aus dem Blog anzeigen?

Die Index Datei in eurem Rootverzeichnis muß natürlich eine PHP Datei sein (index.php), sonst kann PHP die Datei nicht parsen. Öffent nun diese Datei mit einem Editor und fügt in den Head Bereich ein:



</head>
.......
<?php
require_once(Pfad_zu_eurem_blog/wp-blog-header.php");
?>
....
</head>

Damit stehen euch nun alle WordPress Funktionen zur Verfügung. Nun wollen wir, das der neuste Blogartikel auf dieser Seite erscheint. Der normale WordPress Loop listet immer soviel Artikel, wie ihr unter Einstellungen->Lesen angegeben habt. Das wollen wir auch nicht verändern, also bauen wir uns unseren eigenen Loop. Fügt diesen Code an der Stelle ein, wo ihr ihn hinhaben möchtet.



<?php
$lastpost = get_posts('numberposts=1');
if ($lastpost):
	foreach ($lastpost as $post) :
		setup_postdata($post);
?>
<p>aktuell im <a href="http://eureseite/euerblogverzeichnis/" title="Unseren Blog besuchen">Blog:</a></p>
<div class="beitrag">
	<h2><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanenter Link zu diesem Artikel"><?php the_title(); ?></a></h2>
	<p>geschrieben am <?php the_time('d. F Y'); ?> von <?php the_author() ?> </p>
	<?php the_content(__('weiterlesen...')); ?>
</div>
<?php endforeach;
else:
?>
<p>Zur Zeit haben wir noch keine Artikel.</p>
<?php endif; ?>

Mit get_posts(‘numberposts=1′); holen wir uns den letzten Beitrag. Die anderen Funktionen wie zB. <?php the_permalink() ?> sind die gleichen Funktionen, wie ihr sie in eurem Blogtemplate verwendet. Die HTML Elemente müßt ihr natürlich eurer Seite anpassen, je nachdem, wie ihr es haben möchtet.

Jetzt möchten wir aber auch noch die letzten 5 Blogartikel als Links in einer Liste dargestellt haben. Also brauchen wir noch so eine Routine.



<?php
$lastpost = get_posts('numberposts=5&offset=1');
if ($lastpost): ?>
	<h2>Die letzten Artikel</h2>
	<ul>
<?php foreach ($lastpost as $post) :
setup_postdata($post);
?>
		<li><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanenter Link zu diesem Artikel"><?php the_title(); ?></a></li>
<?php endforeach;?>
	</ul>
<?php endif; ?>

Hier haben wir get_posts(‘numberposts=5&offset=1′) aufgerufen, was uns 5 Posts liefert, das Offset brauchen wir, damit der Artikel, den wir oben als ganzen Beitrag haben, nicht noch einmal in der Liste erscheint. Hier haben wir mal keine else Bedingung, wenn keine Post da ist, wird nichts angezeigt.

Mit folgenden Parametern können wir die Funktion get_posts() beeinflussen:

  • numberposts – (integer), Anzahl der Posts, die gelistet werden sollen, Defaultwert ist 5
  • offset – (integer), Offset, Defaultwert ist 0
  • category – (integer), zeigt nur Posts aus einer bestimmten Kategorie(ID angeben), kein Defaultwert
  • orderby – (string), Sortierung der Posts (post_title, post_ID, post_modified, post_author, post_name), kein Defaultwert
  • order – (string), ASC sortiert aufsteigend, DESC absteigend

Die Parameter müssen mit dem ‘&’ verknüpft werden. Ein Aufruf mit allen Parametern sieht dann so aus:



$lastpost = get_posts('numberposts=5&offset=1&category=2&orderby=post_date&sort=ASC');

Mehr Informationen über die Template Tags findet man unter WordPress Template Tags.

6 Kommentare
  1. SuMu sagt:

    wenn du jetzt noch das Datum bei der Auflistung der letzten Posts anzeigen lassen kannst, wäre ich mehr als zufrieden ;-)
    danke

  2. Micha sagt:

    Hallo SuMu,
    Du brauchst nur <?php the_time(‘d. F Y’)?> in den Link einfügen und sieht dann so aus: 14. März 2007. the_time(‘d.m.Y’) macht 14.03.2007. Mehr Infos über Datumsformatierung aufhttp://www.php.net/manual/de/function.date.php
    Die letzten 5 Beiträge sehen dann so aus:
    <?php
    $lastpost = get_posts(‘numberposts=5&offset=1′);
    if ($lastpost): ?>
    <h2>Die letzten Artikel</h2>
    <ul>
    <?php foreach ($lastpost as $post) :
    setup_postdata($post);
    ?>
    <li><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanenter Link zu diesem Artikel"><?php the_time(‘d. F Y’)?> – <?php the_title(); ?></a></li>
    <?php endforeach;?>
    </ul>
    <?php endif; ?>

    Das Ergebnis sieht dann so aus: 14. März 2007 – Dein Beitrag
    Ich hoffe, ich konnte Dir damit helfen.
    Viele Grüße
    Micha

  3. Joachim Ott sagt:

    Hallo,

    das ist genial. Habe jetzt gerade ziemlich lange danach gesucht, auch im WP-Forum. Und diese Lösung hat bei mir auf Anhieb funktioniert. Danke!

  4. Micha sagt:

    @Joachim: Freut mich, das ich Dir helfen konnte.
    Viele Grüße

  5. Sascha sagt:

    Tolle Funktion!

    Das müsste dann doch auch mit der Monatsanzeige gehen…

    …also das immer nur der Aktuelle Monat angezeigt wird.

    Oder nicht der ganze Blogg Artike, sondern nur ein Auzug.

    Viel Grüße sascha

  6. Micha sagt:

    @Sascha: Wenn du nur einen Auszug darstellen möchtest, ersetzte einfach die Zeile
    <?php the_content(__('weiterlesen...')); ?> mit
    <?php the_excerpt(); ?>
    Das zeigt dir die ersten 55 Wörter deines Artikels. Was meinst du mit Monatsanzeige?

1 Pingback
  1. links for 2008-11-28 | Endl.de | Zielpublikum Weblog
Einen Kommentar schreiben