Artikelserien leicht gemacht: Shortcode und benutzerdefinierte Felder

Artikelserie, das Tutorial für custom fields und shortcode
Artikelserie mit benutzerdefinierten Felder erstellen und mit einem Shortcode nutzen

Artikelserien sind sicher eine gute Möglichkeit deine Leser und Leserinnen zu einem RSS oder Newsletter ABO zu verführen, denn sie machen neugierig.

Es gibt dazu einige Plugins wie Serien organisieren oder WP Post Series. Doch in der WordPress Gruppe auf G+ wurde nach einer anderen Lösung angefragt.

Mit benutzerdefinierten Feldern kann man auch Artikelserien erstellen. Die Ausgabe erfolgt dann über einen Shortcode und wie das funktioniert erkläre ich hier.

Was soll die Artikelserie alles anbieten?

  • Sie soll die Beiträge, die zur Serie gehören als Link anzeigen.
  • Damit dies auch benutzerfreundlich ist, den aktuellen Beitrag nicht verlinken.
  • Die Beiträge der Serie sollen als Liste ausgegeben werden.

Was soll der Shortcode können?

Vermutlich weißt du nicht, ob du nur eine einzige Artikelserie anbietest oder doch viele.
Daher wäre es gut, wenn der Shortcode auch für mehrere Artikelserien nutzbar ist.

Die benutzerdefinierten Felder zur Artikelserie erstellen

so erstellst du die benutzerdefinierten Felder für deine Artikelserie
die benutzerdefinierten Felder erstellen
Unterhalb des Schreibfeldes findest Du die Möglichkeit benutzerdefinierte Felder zu erstellen oder erstellte zu nutzen.

Siehst du diese Möglichkeit nicht, dann aktiviere sie indem du rechts oben – in der Nähe deines LogIn Namens – auf Optionen klickst und diese Felder anhakst.

Da du irgendwann viele benutzerdefinierte Felder haben wirst, empfehl ich sehr aussagekräftige Namen unter „Name“ zu verwenden. Schreibst du dort zB.: serie-1 hinein, weißt du spätestens bei serie-200 nicht mehr worum es bei den einzelnen Serien geht.

Unter „Wert“ wird die Reihenfolge der Artikel in deiner Artikelserie festgelegt. Daher musst du dort 1 oder 2 oder 3 usw. eintragen.

Shortcode mit Parameter erstellen

So kannst du den Shortcode ntutzen
So kannst du den Shortcode ntutzen

Ich fange mit dem Shortcode an, der zumindest einen Parameter akzeptieren und verstehen sollte, nämlich den Namen der Artikelserie.


function mts_serie($atts) {
// you would like to use this shortcode for more than one article serie
    extract( shortcode_atts( array(
        'seriename' => '',
        ), 
    $atts ) 
  );
 
  $result = '';

XXX replace this with the loop XXX
 

//return the result
    return $result;

  }
add_shortcode('serie', 'mts_serie');

Damit ist der Shortcode [serie seriename=""] erstellt, natürlich ohne die doppelten eckigen Klammern.

Was fehlt ist der Loop.

So holst du Beiträge mit custom_field y – der Loop

Dieser Loop soll alle Beiträge eines bestimmten benutzerdefinierten Feldes in nummerischer Reihenfolge ausgeben.
Außerdem soll der Beitrag – der gerade gelesen wird- nicht verlinkt werden, damit sich die Leser auch auskennen.
Und er soll die Beiträge in der Reihenfolge ausgeben, die du unter „Wert“ angegeben hast und zwar 1,2,3 und nicht 3,2,1.

//we need the id of the current post
$currentpost = get_the_ID();
// WP_Query arguments
$args = array (
'post_type'        => 'post', //or your post type
'pagination'       => false, //show all articles 
'order'            => 'ASC', //return 1,2,3
'meta_query'       => array(
        array(
          'key'     => $seriename,
          'compare' => 'IN',
          'type'    => 'NUMERIC',
        ),
	)


);
$wp_query = new WP_Query( $args );

  $result.= '<ol class="serie">'; //your html 
  while ($wp_query->have_posts()) : $wp_query->the_post(); 
   //do not link the current post
  if($currentpost == get_the_ID()) { 
        $result.= '<li class="serie-current">'
                  .get_the_title().
                  '</li>';
    }else{
        $result.= '<li>
                  <a href="'.get_permalink().'" 
                  title="'.get_the_title().'">'
                  .get_the_title().
                  '</a></li>';
        }
  
  endwhile; 
// you have more than one loop 
  wp_reset_postdata(); 
  $result.= '</ol>';

Achtung: Im Code für den Shortcode findest Du „XXX replace this with the loop XXX“ genau an dieser Stelle gehört der obige Loop hinein.
Bitte ändere das HTML und die CSS Klassen so wie du sie haben magst.

Artikelserie soll auch die zukünftigen Artikel anzeigen

Suche dir hier den Poststatus aus den du haben magst und ergänze den Loop so:

zb

'post_type'   => 'post',
'post_status' => 'future',

Disclaimer: Artikelserie ohne Plugin ist unmöglich

Die Idee zum diesem Artikel stammt von Ramona, die nach einem Codesnippet für Artikelserien ohne Plugins in der G+ WordPress anfragte.
Dies ist unmöglich, denn da WordPress keinen „Shortcode“ für Artikelserien einfach anbietet, ist auch meine Lösung eine „zusätzliche Lösung“ und somit ein WordPress Plugin.

Fügt man nun meinen Code einfach in die functions.php des verwendeten Themes und wechselt irgendwann das Theme, dann wird dieser Shortcode nicht mehr ausgeführt und bleibt funktionslos bei jedem Beitrag einfach stehen.

Daher nutze ich für solche Funktionen das Plugin Toolbox von Sergej und schreibe dafür ein Modul. So kann ich zusätzliches unabhängig vom Theme nutzen und außerdem noch entscheiden, ob ich diese Funktion nur im Backend oder Frontend oder überall brauche.

Hilfreiche Plugins für deine Artikelserie

 Shortcode im Plugin AddQuicktag einfügen
Shortcode im Plugin AddQuicktag einfügen

Edit: Hier hat sich ein Tippfehler eingeschlichen, natürlich heißt der Shortcode „serie“ und nicht „series“ => sorry!

Add Quicktag von Frank Bueltge damit kannst du die Shortcodes ganz einfach im visuellen oder Texteditor nutzen.

Toolbox von Sergej Müller, damit deine Artikelserien auch bei einem Themewechsel noch funktionieren.

Es ist also mehr als ein Codesnippet geworden und sicher nicht die einzige Möglichkeit Artikelserien mit custom_fields und Shortcode zu realisieren.
Aber sie ist mir eingefallen und daher steht sie eben so da :-)

Hast du Fragen dazu oder magst was ergänzen, dann bitte nutze die Kommentare.

Findest du dies interessant oder hats geholfen, dann spendier mir doch ein +1. Danke!
4

4 Beiträge zu “Artikelserien leicht gemacht: Shortcode und benutzerdefinierte Felder

  1. Kommentar Autor
    Michaela Steidl
    Kommentar

    Hallo liebe Monika, ganz herzlichen Dank für diese tolle Anleitung, die mir gerade eine große Hilfe gewesen ist :-)

    Herzliche Grüße
    Michaela

  2. Kommentar Autor
    Monika
    Kommentar

    Freut mich Michaela und ich bin gespannt wo ich welche Serie von Dir lesen kann. :-)

  3. Kommentar Autor
    Monika
    Kommentar

    klar ist das OK Michaela, hab doch danach gefragt :-)
    ich werde mir also mal dieses Theme ansehen, und ich selbst habe mir anläßlich des neuen Designs hier auch die Serien gegönnt. Wer weiß vielleicht mach ich eine, vielleicht nehm ich mir die Zeit..