PHP: Alle Blogartikel von PHP ausgeben, mit Link

Auslesen aller Blogartikel mit Link und PHP. Ohne WordPress-Funktionen.

Für unsere “Alle Artikel” Seite habe ich ein kleines PHP-Script geschrieben, welches alle Blogartikel ausliest, einen Link draus macht und diesen dann mit Titel ausgibt.
Vielleicht ist das für den ein oder anderen nützlich, deswegen lasse ich die Snippets mal hier.

Standard-Variante

Die Standard-Variante, wenn die Seite nicht mehrsprachig ist. Wir lesen hier die Tabelle “wp_posts” aus. Sofern es ein “post” ist und auch noch veröffentlicht, dann geben wir das als Link aus.

  $dbname="name";
  $dbhost="localhost";
  $dbuser="user";
  $dbpass="pass";

  $sql = "SELECT * FROM wp_posts WHERE post_status = 'publish' AND post_type = 'post' ORDER by post_date DESC";

  $db = mysqli_connect($dbhost,$dbuser,$dbpass,$dbname) or die("Konnte keine Verbindung zur Datenbank herstellen");
	$sqlRes = mysqli_query($db, $sql);
  mysqli_close($db);

  $recordCount = mysqli_num_rows($sqlRes);

  for ($i = 0;$i < $recordCount;$i++) {
      $arCur = mysqli_fetch_array($sqlRes);
      echo "<li><a href=\"https://domain.net/?p=" . $arCur["ID"] . "\" title=\"zur Seite\">" . utf8_encode($arCur["post_title"]) . "</a></li>";
  }
?>

Variante für WPML und Mehrsprachigkeit

Für unsere mehrsprachigen Webseiten verwenden wir WPML. Hier müssen wir die Abfrage etwas erweitern und zur ID des Posts noch ermitteln, in welcher Sprache der Post verfasst ist.

<?php
 //Datenbankzugriffsvariablen
  $dbname="ame";
  $dbhost="localhost";
  $dbuser="user";
  $dbpass="pass";

  //SQL Befehl zur Abfrage der Postings
  $sql = "SELECT wp_posts.*, wp_icl_translations.* FROM wp_posts LEFT JOIN wp_icl_translations ON wp_posts.ID = wp_icl_translations.element_id WHERE post_status = 'publish' AND post_type = 'post' and element_type = 'post_post' ORDER by ID DESC";

  //Datenbank öffnen, SQL-Befehl ausführen, Datenbank schließen
  $db = mysqli_connect($dbhost,$dbuser,$dbpass,$dbname) or die("Konnte keine Verbindung zur Datenbank herstellen");
	$sqlRes = mysqli_query($db, $sql);
  mysqli_close($db);

  //Nun die Titel ausgeben
  $recordCount = mysqli_num_rows($sqlRes);

  for ($i = 0;$i < $recordCount;$i++) {
      $arCur = mysqli_fetch_array($sqlRes);
      $lang = $arCur["language_code"];

      $add = "";

      if ($lang === "en") {
        $add = "en/";
      }

      echo "<li><a href=\"https://domain.de/" . $add . "?p=" . $arCur["ID"] . "\" title=\"zur Seite\">" . utf8_encode($arCur["post_title"]) . "</a></li>\n";
  }
?>

Kommentar hinterlassen

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