Schlagwort-Archive: the_excerpt

The_Excerpt in Twenty Twelve mit Child-Theme

Dieser Artikel beschreibt die Anpassung des Standartthemes “Twenty Twelve”. Es wird ein sogenanntes “Child Theme” erzeugt und so angepasst, dass auf der Startseite und den Kategorieseiten nur Auszüge der Artikel angezeigt werden und nicht der komplette Artikel.

Child Theme

Ein WordPress Child Theme ist ein Theme, welches die Funktionalität eines anderen Themes, des sogenannten Parent Themes übernimmt und um eigene Anpassungen ergänzt. Die Verwendung eines Child Themes bietet sich an wenn man ein Theme anpassen/verändern möchte. Diese Anpassungen sollten nicht, im Standardtheme vorgenommen werden, da sie bei einem Update des Themes überschrieben werden und verloren gehen. Lagert man die Änderungen in ein Child Theme aus bleiben sie bei einem Update des Parent Themes erhalten.

Die Themes liegen im Pfad /wp-content/themes eurer WordPress Installation. In diesem Verzeichnis kann man nun ein neues Unterverzeichnis für das Child Theme anlegen. Ein Child Theme benötigt mindestens eine style.css.  In der style.css des Child werden die Einstellungen des Parent Theme importiert und um die eigenen Änderungen ergänzt. Wird das Child Theme aktiviert ersetzt die style.css des Child die style.css des Parent.

Hier ist ein Beispiel für eine entsprechende style.css:

/*
Theme Name: Twentytwelve Child
Description: Child theme for the twentytwelve theme 
Author: Your name here
Template: twentytwelve
*/

@import url("../twentytwelve/style.css");

Hier folgt die Erklärung was der obige Code macht:

  1. /* öffnet den Header des Child Theme.
  2. Theme Name: definiert den Namen des Child Theme.
  3. Description: Eine Beschreibung des Themes. Diese ist optional und kann entfallen.
  4. Author: Name des Autors. Angabe ist optional und kann entfallen.
  5. Template: Definiert das Parent Theme.
  6. */ schließt den Header des Child Theme.
  7. Die Regel @import importiert die Einstellungen aus der style.css des Parent Theme

Damit haben wir alles was wir für das Child Theme brauchen und können dieses im WordPress Backend unter Design -> Themes aktivieren. Noch sehen wir keine Veränderung, da wir ja bisher nur die Einstellungen des Parent Themes importiert haben. Nun passen wir das Theme weiter an.

The_Excerpt

Auf der Startseite des Blogs, den Kategorie Seiten und den Suchergebnisseiten sollen nicht die vollständigen Artikel angezeigt werden, sondern nur Auszüge.

Dazu kopieren wir die Datei content.php aus dem Parent Verzeichnis in das Child Verzeichnis. Diese öffnet man mit einem Editor und geht zur Zeile 33, welche wie folgt aussehen sollte.

<?php if ( is_search() ) : // Display Excerpts only for Search ?>

Diese Anweisung bewirkt, dass die Artikelauszüge nur auf den Suchergebnisseiten angezeigt werden. Um sie auf den Kategorieseiten und der Startseite ebenfalls anzuzeigen ändern wir die Zeile wie folgt ab.

<?php if ( is_search() || is_home() || is_category() ) : // Display Excerpts for Search, Category and Home ?>

Nachdem die Datei gespeichert wurde aktualisiert man die Browseransicht und die Artikel werden nicht mehr komplett sondern nur noch auszugsweise dargestellt. Aber wir können noch mehr tun.

Normalerweise endet ein Auszug mit […]. Wir können statt dessen jedoch auch einen Link mit
einem Benutzerdefinierten Text anzeigen lassen.

“Weiterlesen…” Link hinzufügen

Um die benötigten Änderungen vornehmen zu können erstellen wir im Verzeichnis des Child eine leere functions.php und fügen folgenden Code ein.

 <?php
/**
 * Twenty Twelve functions and definitions.
 *
 * Sets up the theme and provides some helper functions, which are used
 * in the theme as custom template tags. Others are attached to action and
 * filter hooks in WordPress to change core functionality.
 *
 * When using a child theme (see http://codex.wordpress.org/Theme_Development and
 * http://codex.wordpress.org/Child_Themes), you can override certain functions
 * (those wrapped in a function_exists() call) by defining them first in your child theme's
 * functions.php file. The child theme's functions.php file is included before the parent
 * theme's file, so the child theme functions would be used.
 *
 * Functions that are not pluggable (not wrapped in function_exists()) are instead attached
 * to a filter or action hook.
 *
 * For more information on hooks, actions, and filters, see http://codex.wordpress.org/Plugin_API.
 *
 * @package WordPress
 * @subpackage Twenty_Twelve
 * @since Twenty Twelve 1.0
 */

// Remove ... from excerpt and change the text
function change_excerpt_more()
{
  function new_excerpt_more($more)
    {
    // Use .read-more to style the link
     return '<span> <a href="' . get_permalink($post->ID) . '">[Weiterlesen...]</a></span>';
    }
  add_filter('excerpt_more', 'new_excerpt_more');

}
add_action('after_setup_theme', 'change_excerpt_more');

Damit werden die […] hinter dem Auszug entfernt und durch unseren eigenen
Text ersetzt. Das Ergebnis kann man hier auf meinem Blog betrachten.

The_Excerpt() – Auszug aus Artikel anzeigen

Wie bereits unzählige WP-Nutzer vor mir habe auch ich mich gefragt was ich anstellen muss um auf der WP-Startseite nicht die vollständigen Artikel, sondern nur Auszüge aus diesen, anzeigen zu lassen.

Um mir die Suche beim nächsten Mal zu ersparen und Leidensgenossen da draußen im Web zu unterstützen kommt hier ein kurzes Tutorial was man anstellen muss.

Ich verwende das Standard-Theme Twenty Eleven und habe das Tutorial auch nur mit diesem Theme getestet. Um die hier beschriebenen Änderungen vorzunehmen wird eine Konfigurationsdatei (content.php) mit einem Editor bearbeitet. Wir nicht sicher ist was er da tut sollte sich diese Datei unbedingt vorher sichern, bevor er irgendwelche Änderungen daran vornimmt. Nach diesem kurzen Warnhinweis legen wir mal los.

  1. Meldet euch im Backend eurer WP-Installation an und navgiert über das Menü auf der linken Seite zum Menüpunkt Design und wählt dort den Editor aus.
  2. Um die gewünschten Änderungen vorzunehmen ist die Datei content.php zu bearbeiten. Diese findet ihr wenn ihr auf der rechten Seite eures Fensters ein wenig nach unten scrollt.
  3. Im Editorfenster sucht ihr nun mittels STRG+F nach dem String the_content. Dabei solltet ihr folgende Zeile
    <?php the_content( __( 'Continue reading <span>&rarr;</span>', 'twentyeleven' ) ); ?>

    finden. Dies ersetzt ihr durch die Zeile

     <?php the_excerpt(); ?>
  4. Ich möchte das auch auf den Archivseiten nur ein Auszug der Artikel angezeigt wird. Dazu suche ich noch nach der Zeile
    <?php if ( is_search() ) : // Only display Excerpts for Search ?> 

    und ändere sie wie folgt

    <?php if ( is_archive || is_search() ) : // Only display Excerpts for Search ?>
  5. Mit einem Klick auf den Button „Datei aktualisieren“ werden die Änderungen in die aktive Konfiguration übernommen.

Zur Kontrolle hier noch ein Screenshot wie der entsprechende Abschnitt in der content.php aussehen sollte.

Der geänderte Code