WordPress: Beiträge via PHP erstellen / importieren


WordpressWill man WordPress-Beiträge / Seiten via PHP erstellen (um sie z.B. aus einem anderen System zu importieren, wie ich es hier erst kürzlich gemacht habe) muss man sich nicht unbedingt näher mit der Datenbankstruktur von WordPress beschäftigen (auch wenn das natürlich nicht schaden kann wenn man öfter mit WordPress arbeitet), denn WordPress liefert die dazu nötige Funktion „wp_insert_post()“ gleich selber mit.


Um diese Funktion zu verwenden muss man nur die Datei „wp_blog_header.php“ aus dem Hauptverzeichnis von WP includen. Anschließend füllt man einen Array mit den Daten (Titel, Inhalt, Kategorie etc) zu seinem Beitrag und übergibt dieses an die Funktion „wp_insert_post()“, das könnte dann in etwa folgendermaßen aussehen:


  include('wp-blog-header.php');

  $pdo = new PDO('', 'bla', '*****');
  $pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_OBJ);

  // Alte Daten abfragen
  $sql = "SELECT titel, text, filename, post_time FROM artikel WHERE kat = 'News' ORDER BY titel";
  $res = $pdo->query($sql);

  foreach ($res as $r) {
    $postarr = array();
    $postarr['post_author'] = 1; // WordPress-interne ID des Autors
    $postarr['post_title'] = $r->titel; // Beitragstitel
    $postarr['post_date'] = date('Y-m-d H:i:s', $r->post_time); // Datum / Uhrzeit im Format 'Y-m-d H:i:s'
    $postarr['post_content'] = $r->text; // Inhalt / Text des Beitrages
    $postarr['post_status'] = 'publish'; // Status des Beitrages. 'publish' = veröffentlicht
    $postarr['ping_status'] = 'open'; // Ping Status, 'open' = Beitrag kann gepingt werden
    $postarr['post_type'] = 'post'; // Typ des Posts, 'post' = normaler Beitrag, 'page' wäre z.B. eine Seite
    $postarr['post_category'] = array('11'); // Kategorie(n) des Posts, Achtung: muss immer als Array übergeben werden, auch wenn es nur eine Kategorie ist

    wp_insert_post($postarr);
  }

Dies war jetzt eine etwas vereinfachte Darstellung dessen, was ich hier selbst genutzt habe, um die Beiträge meiner alten Webseite zu importieren.

Eine Liste aller Parameter, die man wp_insert_post() übergeben kann, findet ihr hier: https://developer.wordpress.org/reference/functions/wp_insert_post/



Abgelegt unter:

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert