Wie man in WordPress Beiträge einer bestimmten Art zusammengefügt ausgeben kann

Wie man in WordPress Beiträge einer bestimmten Art zusammengefügt ausgeben kann

Nachdem ich eine Liste mit Beiträgen einer bestimmten Art erzeugt habe, siehe meinen Beitrag Wie man in WordPress eine Liste mit Beiträgen einer bestimmten Art erzeugt, möchte ich den Hauptbericht zusammen mit den dazu gehörenden Folgeberichten auf einer Seite darstellen. Damit habe ich dann alle Informationen der einzelnen Berichte zusammen, und kann diese versenden oder drucken.

Die Folgeberichte sollen auch dann in dieser Seite angezeigt werden, wenn sie noch nicht freigegeben sind.

Und so soll es aussehen :

Was ist zu tun?

Schritt 1

Ein Plugin installieren, damit PHP-Code aus einer Seite oder einem Beitrag exekutiert werden kann. Ich verwende „Insert PHP Code Snippet“.

Schritt 2

Eine Seite anlegen mit dem Titel „Berichte zusammenfügen“.
Eine weitere Seite mit dem Titel „Beratungsprotokoll Berichte zusammengefügt“.

Schritt 3

Ein Formular erstellen, siehe auch meinen Beitrag Wie man in WordPress ein Formular erstellt und die Daten in einem neuen Beitrag speichert, welches ein Selektionsfeld enthält, das die Berichte auflistet.

Dieses Formular wird benötigt, um die ausgewählten Beiträge, besser Beitragsnamen, in der Tabelle „…_formmaker_submits“ zu speichern. Auf diese Tabelle greift dann das anschließende PHP-Script zu und fügt die Beiträge zusammen (ich benutze das Plugin Metabox Form Maker ).

Schritt 4

Einen PHP-Schnipsel in dem PHP-Plugin anlegen und folgenden Code speichern :

 $fm_title = $wpdb->get_col(
 "
 SELECT element_value
 FROM wp_formmaker_submits
 ORDER BY id DESC
 LIMIT 1"
 ,0
 ,'element_value'); 
if ( $fm_title[0] == "" )
{
$postids = $wpdb->get_results( $wpdb->prepare( 
 "
 SELECT ID, RIGHT(post_title,20) AS gkey, post_title, post_status, guid, post_content
 FROM wp_posts
 WHERE post_title LIKE '%%".$fm_title[0]."'
 AND (post_status = 'publish' OR post_status = 'draft')
 ORDER BY gkey, ID"
) ); 
 $gkey = "";
 foreach ( $postids as $id )
 { 
 $post = get_post( $id->ID );
 $output = apply_filters( 'the_content', $post->post_content );
 echo $output;
 echo "<hr>";
 }

Bitte daran denken, dass meine WordPress-Tabellen den Präfix „wp“ haben. Daher dringend den eigenen Präfix, bspw. wp_* benutzen.

Schritt 5

Den PHP-Schnipsel nun in die neue Seite „Beratungsprotokoll Berichte zusammengefügt“ einfügen, ggf. ohne <?php … und …?>, je nach Plugin.

Fertig!

So, nun viel Spaß und Erfolg damit.

Schreibe einen Kommentar

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