WordPress in eine normale Seite einbinden

Hinweis: es gibt eine neue, überarbeitete Version dieses Tutorials!!

Im Wunschbuch kam die Frage auf, wie man lediglich die Blog-Funktion von WordPress nutzen kann, ohne gleich seine gesamten statischen Seiten über WordPress laufen lassen zu müssen.
Dies stellt im Grunde kein Problem dar.

Du benötigst eine “herkömmliche” Webseite, die ganz normal in HTML geschrieben ist. Damit WordPress läuft, benötigst du auf deinem Server allerdings PHP.
In dem Verzeichnis, in dem sich die Dateien dieser Seite befinden, installierst du dir WordPress. Wie das genau geht, kannst du in diesem Tutorial nachlesen.

Da das WordPress-Blog in die bereits bestehende Seite eingebunden werden soll, werden eine ganze Menge Dinge aus den WP-Theme-Dateien nicht benötigt – zum Beispiel die Sidebar, denn die Navigation besteht ja bereits in der normalen Webseite. Im Grunde brauchst du lediglich das Posting selber mitsamt den Angaben zu Datum und Kommentaren. Dieses Code-Abschnitt bezeichnet man als den WordPress-Loop:

<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
<div class="post" id="post-<?php the_ID(); ?>">
<h1><a href="<?php the_permalink() ?>" rel="bookmark"><?php the_title(); ?></a></h1>
<div class="meta"><?php _e("einsortiert unter:"); ?> <?php the_category(',') ?>
<?php the_tags(__('Tags: '), ', ', ' — '); ?>
<?php the_time() ?>
<?php edit_post_link(__('edit')); ?>
</div>

<div class="storycontent">
<?php the_content(__('(weiterlesen...)')); ?>
</div>

<div class="feedback">
<?php wp_link_pages(); ?>
<?php comments_popup_link(__('0 Kommentare'), __('1 Kommentar'), __('% Kommentare')); ?>
</div>

</div>

<?php comments_template(); ?>

<?php endwhile; else: ?>
<p><?php _e('Sorry, nichts gefunden.'); ?></p>
<?php endif; ?>

Der bildet nun also das Herzstück der Seite, in die WordPress eingebunden werden soll.
Ganz zu Beginn dieser Seite – also noch vor dem öffnenden HTML-Tag und der Angabe des Doctypes – includest du nun zuerst einmal die Datei wp-blog-header.php, die im Rootverzeichnis deiner WordPress-Installation liegt und in der die verschiedenen Funktionen definiert werden.

<?php include ('wp-blog-header.php'); ?>
Doctype
<html>
<head>
...
</head>
<body>
DER LOOP (siehe oben)
</body>
</html>

Diese Datei speicherst du als index.php in deinem Theme-Verzeichnis – also etwa:

http://www.meinedomain.de/wordpress/wp-content/themes/default_de/index.php

(vielen Dank an Aristagon und Spip für den Hinweis, das hier nochmal explizit zu erwähnen)

Fertig! :-)

verwandte Beiträge

63 Gedanken zu “WordPress in eine normale Seite einbinden

  1. Diese Möglichkeit WordPress zu nutzen finde ich sehr interessant. Scheint nicht ganz so umständlich zu sein. Funktonieren dann aber auch noch solche Dinge wie Plugins oder die Tags. Gibt es da keine Einschränkungen?

  2. Super mein Wunsch ging in erfüllung werde es mal in den Ferien probieren und mich dann entscheiden welches system ich benutze :)

  3. hej
    ich kriegs nicht hin, hab wp installiert gehabt. da gings, dann hab ich da meine anderen sachen hingemacht un wollte dann einfach nur in meine index.php das was bei mir normalerweise zwischen include header und footer gestanden hat den obigen teil einfügen. dann zeigts mir aber eine fehlermeldung in der zeile, in der dieser teil anfängt=(
    *schluchz* will_auch_wp_haben^^

  4. also die fehlermeldung lautet:
    Fatal error: Call to undefined function have_posts() in /srv/www/httpd/phost/b/de/pytalhost/beats/web/index.php on line 3

    Hm. Also ich hab das in verzeichnis in dem ich auch wp installiert hab, also dort sind auch alle dateien mit so wp-… muss man da vllt. noch schreiben wo die funktionen stehn, obwohl ich das nicht mal weis

  5. hej
    also, ich hab das problem soweit etwas gelöst. und zwar hab ich die datei wp-blog-header.php includiert. und jetzt gehts zumindest mal, muss nur das mit dem css dann anpassen. also sieht so aus, etwas komisch: http://beats.pytalhost.de
    ich hoff mal, dass ist die richtig lösung. nur wie kann ich jetzt da auch mal das archiv anzeigen lassen oder die kategorien??

  6. Scheint ja alles soweit so zu laufen, wie es soll. =)
    Die Kategorien kannst du zum Beispiel einbinden, indem du die Links zu den einzelnen Kategorien manuell einfügst. Je nachdem, wie deine Linkstruktur da ausschaut, besteht die URL etwa aus letscher.de.vu/category/kategorie. :-)

  7. welche index.php muss ich denn nehmen?die im hauptverzeichnis? weil da steht das bei mir alles nicht..

  8. Mir geht es wie Neni… Bei keinem meiner index.php Seiten steht auch nur ännäherndes oO

  9. Habs gefunden ;) Aber nun gehts mir so wie Fabi:
    Fatal error: Call to undefined function have_posts() in /srv/www/web435/html/wordpress/index.php on line 154

    =( May you help me?

  10. @ Neni:
    nicht die im Hauptverzeichnis, sondern die index.php deines Themes – also unter wp-content/themes/deintheme/index.php

    @ Lisa:
    du versuchst da eine Funktion aufzurufen, die nirgendwo definiert ist – guck mal nach, ob deine Pfadangabe zur wp-blog-header.php (im Hauptverzeichnis deines Blogs) stimmt.

  11. Okay.Das hab ich mittlerweile gefunden-ist das eigentlich das gleiche wie wenn ich mich einlogg und dann Design > Theme-Editor > Hauptindex ?
    Muss ich dann eben diesen Code kopieren und in meinen Code einbinde oder muss ich meinen Code in die WordPress-Datei machen?

  12. Ich hab jetzt den Teil aus dem Theme-Editor kopiert und in meine .php-Datei eingefügt. Jetzt bekomm ich aber folgende Fehlermeldung:
    Fatal error: Call to undefined function get_header() in /data/apache/users/kilu.de/raincape/www/index.php on line 43
    Was muss ich jetzt machen?

  13. Danke für die Anleitung!
    Aber so wirklich durchsehen kann man damit nicht.

    Was meinst du zb damit?
    ####
    guck mal nach, ob deine Pfadangabe zur wp-blog-header.php (im Hauptverzeichnis deines Blogs) stimmt.
    ####
    Wo soll das eingetragen sein?

    Hat es überhaupt schon einer mit dieser Anleitung ohne hin&her suchen und Problemen geschafft?

    Könntest du die Anleitung mal überarbeiten?
    Wäre sehr sehr nett :-)

  14. Holla,
    mein Fehler.

    Hätte sagen müssen das ich es einbinden möchte:

    bring den Fehler
    Fatal error: Call to undefined function have_posts() in /home/nutzername/html/beispielseite/wordpress/wp-content/themes/default_de/index.php on line 1

    Die WordPress-Daten liegen in http://www.domain.de/wordpress

    Bin schon so viel durchgegangen. Will aber nicht hin haun :-/

  15. Warum gibts hier eigentlich keine Vorschau??

    Nochmal der Code

    *php

  16. Man!
    Bitte füg das zusammen


    <?php
    include ('./wordpress/wp-content/themes/default_de/index.php');
    ?>

    Is das Peinlich!! :-(

  17. @ Tom:
    wenn du PHP-Zeilen in einem Kommentar unterbringen magst, dann musst du die spitzen Klammern durch Entities ersetzen – also:
    & l t ; (ohne Leerzeichen) für <
    und & g t ; für > :-)
    Hab deinen letzten Kommentar mal dahingehend editiert.
    Eine Vorschafunktion für die Kommentare werde ich aber mal einbauen, danke für die Anregung.

    @ have_posts-Problem:
    Also, bei dieser Fehlermeldung reklamiert WordPress, dass es keinen Zugriff auf die Funktion have_posts() hat. Diese wird ebenso wie die restlichen Funktionen in der Datei wp-blog-header.php angegeben. Das heißt, diese wp-blog-header.php muss auf jeden Fall includet werden.
    Ehe ich das jetzt in den fünfhundersten Kommentar schreibe, ändere ich das mal oben im Tutorial. :-)

  18. Hi,

    Also das includen hat grundlegend funktioniert.

    Nur wenn ich jetzt einen Link verwenden will, als z.B. “read more”, dann lande ich im WordPress, verlasse also meine Seite.

    Wie kann ich das abstellen ?

  19. Oh man! Danke dir!!
    Schon verrückt, die wp-blog-header.php hatte ich auch mal mit eingebunden (an der falschen stelle). Sollte wohl nach der Nachtschicht nicht mehr im Code fummeln. Das mit den Klammern is ja auch wirklich peinlich!! Das die weg müssen kam mir erst mit dem letzten Kommentar.

    Jetz klappt alles wunderbar. Danke nochmal :-)

  20. Mittlerweile hab ichs auch hinbekommen, sodass alles klappt :)
    Allerdings, wäre es toll, wenn du noch erklären könntest, wie man dann die Seiten für Comments, Kategorien usw auch ans Layout anpasst. Da kommt man nämlich, wenn man draufklickt immmer ins normale WordPress-Design..
    Würde mir sehr helfen..Danke :)

  21. also bei funktionier es leider nicht überall
    bei 2 blogs klappt es problemlos bei dem anderen kommt
    Sorry, nichts gefunden. vom else teil
    ich nutze auf allen die 2.6 version
    kann mir das also nicht erklären wieso es bei einem klappt und bei dem anderen wieder nicht evtl hat ja hier jemand eine idee

  22. atal error: Call to undefined function: have_posts() in /var/www/web663/html/PC/index.php on line 20 das komtm bei mir als fehlermeldung :/ bitte um hilfe

  23. @ lod:
    hast du da eventuell eine fehlerhafte Permalink-Struktur?

    @ purechaos:
    hast du die wp_blog_header.php auch eingebunden?
    <?php include ('wp-blog-header.php'); ?>

  24. geil, reibungslos integriert in meiner Seite. vielen Dank.
    ich habe soager auch etwas mit dem sidebar erweitert, so dass ich auf linke seite standard navigation habe und auf rechte Seite Blog navigation

  25. Das ist wirklich ein super Tipp. Möchte mich der Frage von Neni (8. Juli) anschließen. Wie integriere ich die Kommentar- und Kategorieansicht in den DIV Bereich in dem ich den WordPress-Loop eingebettet habe. Vielen Dank für die Hilfe.

  26. Hee

    Wie mach ich das denn jetzt genau mit die Kommentare? Habe dir glaub ich auch schon ne Mail deswegen geschrieben… Wäre nett wenn du mir helfen könntest…

  27. Also ich muss mich mal outen als besonders dämmlich, denn ich habe einen halben Tag gebraucht und mich gewundert wieso nix erscheint, bis ich verstanden habe, dass ich meine erstellte html datei mit dem integrierten WB Blog eine neue Endung mit .php geben muss. Vielleicht kann man das ja irgend wo oben erwähnen, jedenfalls denke ich, dass ich nicht der einzige depp bin der das nicht beachtet hat.

  28. Nein, Du bist nicht der einzige Depp. Bedauerlicherweise habe ich zeitgleich mit Dir herum probiert und bin durch andere Webseiten dann auf die Problemursache gestossen, die ich nun umgesetzt habe

    Erwähnenswert überdies das unsere html-Seite jetzt nicht nur auf die Endung “php” besteht, die Seite MUSS jetzt index.php heißen UND im folgenden Verzeichnis abgelegt werden (wenn denn die Standard Installationsordner gewählt wurden):

    http://www.meinedomain.de/wordpress/wp-content/themes/default_de/index.php

    Bitte, bitte Frau Anne, das sind für Normalsterbliche nicht ganz unwichtige Details, die in das Tutorial mit hinein gehören.

    Und wie das immer so ist, wenn man ein Problem gelöst hat, streben schon die nächsten nach einer Lösung, es wird heute also wieder später.

    Gute Nacht
    Spip

  29. Hallo,

    Funktioniert!

    Aber: Ich möchte das Blog gadgetspion.com noch in eine andere Seite einbinden. Also 1) gadgetspion.com als normales WP Blog mit Nav/Sidebar etc. und 2. xyz.com/gadgetspion nur mit den blogbeiträgen.

    Ich habe jetzt anstatt index.php noch eine Datei index_gadgetspion.php im wp-themes-verzeichnis abgespeichert. Leider ohne Erfolg.

    Kann mir jemand weiterhelfen?

    Doctype …
    Fatal error: Call to undefined function have_posts() in /home/bmovie/public_html/gadgetspion.com/wp-content/themes/business-pro/index_gadget.php on line 10

    mfg
    Kevin

  30. hallo,

    erstmal danke für dein angagement und deine gute seite.
    ich bin ein web-neuling (komme vom print) und möchte eben eine reine blog-funktion in meine html/css seite einbauen.
    nur leider versteh ich das tutorial kaum, in meinem wordpress ordner auf meinem server sind unglaublich viele dateien?

    ich möchte eine neue seite unter auftragskniller.de erstellen, unter dem navigationspunkt hey, der blog heißt und ich dann da mein seitenlayout fortführen will nur mit blogversion. also die positionierung des blogs soll auch wie auf den anderen seiten gleich bleiben. ist das möglich?

    kannst du mir helfen??

    wäre super.

    liebe grüße, manuel.

  31. eigentlich würde mir eine kommentar-funktion wie du sie hier hast völlig ausreichen!!!

    ist das simpler?

  32. @ manuel:
    also, wenn du wirklich nur eine Kommentarfunktion benötigst und keine sonstigen Blog-Features, dann könntest du diese Kommentarfunktion entweder via PHP realisieren (was ein wenig aufwendig ist), oder ein simples Newsscript wie etwa CuteNews verwenden.

  33. Hi!
    Ich habe mich auch mal daran versuch, WordPress zu includen, und ich bekomme auch eine Fehlermeldung. Weißt du etwas damit anzufangen?
    –> Warning: Cannot modify header information – headers already sent by (output started at /var/www/vhosts/kantalin.de/httpdocs/indexx.php:2) in /var/www/vhosts/kantalin.de/httpdocs/autorin/tagebuch/wp-includes/pluggable.php on line 850

    Ich bin leider in php-Anfänger und weiß nicht so ganz, wie ich den Fehler wegbekommen soll. Die Zeile 850 sieht bei mir so aus: header(“Location: $location”);

  34. Pingback: Pro & Contra - Wordpress

  35. Hallo.

    @FeuerWoelfin12:
    es ist wichtig, dass Du vorher keinen Header sendest. Im Include ist bereits ein Header vorhanden. Somit darfst Du keinen zweiten senden. Entferne Deinen eigenen Header, also alles zwischen und , dann sollte es gehen.

    Schöne Grüße.
    Rudi

  36. Hallo

    erstmal danke für das Tutorial.
    Leider habe ich aber auch noch ein Problem. Zunächst erscheinen folgende Fehlermeldungen:

    Warning: include(0php’) [function.include]: failed to open stream: No such file or directory in /mnt/web2/52/11/52014111/htdocs/industryinvest/wordpress/wp-content/themes/default/index.php on line 1

    Warning: include() [function.include]: Failed opening ’0php’’ for inclusion (include_path=’.:/opt/RZphp5/includes’) in /mnt/web2/52/11/52014111/htdocs/industryinvest/wordpress/wp-content/themes/default/index.php on line 1

    Weiß leider nichts damit anzufangen. Dann wäre es super, wenn mir mal jemand erklären kann, wie man die Kommentarfunktion sowie die Artikelseite ebenfalls ins seine HTML Seite integriert.

    Danke im voraus,
    Dennis

  37. Und wenn man eine laufende WP-Installation hat, kann man das dann auch einbinden bzw. verschieben oder braucht man extra eine neue WP-Installation?

  38. Leider, leider verstehe ich deinen Tutorial überhaupt nicht. Ich komme voll nicht mit, welche Seite nun in welche Seiten eingefügt werden muss, und welche nicht o.O Dieser WordPress-Loop beispielsweiße… kommt der in die HTML-Seite oder wohin?
     
    Wär echt wahnsinnig gut, wenn mir da jemand weiter helfen könnte ,__,

  39. hallo erstmal. ich kann zwar den blug in meine seite einbinden, so wie beschrieben, aber das is mal nicht so wie ich mir das vorstelle. hier mal ein beispiel, so wie ich mir das denke…;)

    http://www.der-w.de/blog/

    danke schonmal ;)

    Ripper

  40. Ihr Lieben,

    anbetrachts eurer vielen Anmerkungen und Fragen werde ich mich in den nächsten Tagen oder Wochen mal hinsetzen und das Tutorial neu schreiben bzw. überarbeiten!
    Bitte habt solange Geduld – danke! :)

    Viele Grüße
    neontrauma

  41. Ich habe das soweit erfolgreich eingebunden, allerdings wenn ich auf Kommentare oder den Artikel klicke, erhalte ich das Standard Design, welche Dateien muss ich noch anpassen, hoffe du kannst hier im Kommentar mal antworten, weil wohl andere das Problem auch haben. Die index.php habe ich bereits angepasst.
     
    Danke

  42. Nochmal kurz ich, habe es jetzt geschafft.
    Nach Anpassungen der single.php und comments.php, habe ich den Blog nun vollständig in mein Design eingebettet.
     

  43. @ Sascha:
    klasse! :)

    Wie gesagt, ich werde das Tutorial in der nächsten Zeit mal überarbeiten!

  44. Super vielen Dank, bei mir haut es auch soweit hin. Bis auf der Layout, wenn man auf einen Link klickt.

    @Sascha: Könntest Du uns vielleicht noch verraten, wie du die Single.php und Comments.php angepasst hast?

  45. Da waren noch mehr Anpassungen nötig, ich kann das mal gerne zusammenschreiben und hier einen link einstellen, oder wie auch immer – je nachdem wie neontrauma das halt will!

  46. Hab noch Probleme, wenn ich die Permalinks auf benutzerdefiniert aktiviere. Weiß jemand woran das liegt und was da u.U. noch zu ändern ist?

    @ Sascha,
    dass wär super!!! Kannst mir auch einfach die beiden Dateien schicken (Email im Impressum auf meiner Website), dann kann ich sie abgleichen. 1000 Dank