Custom Fields – Ausgabe von Meta Description & Keywords

In meinem Beitrag vom 28.04.2014 „Benutzerdefinierte Felder – Ausgabe von Meta Description & Keywords“ habe ich bereits eine Möglichkeit vorgestellt, wie man mit Hilfe von benutzerdefinierten Feldern die Meta Angaben Description und Keywords für Posts im Head ausgeben kann.
Nachteil dieser Anpassung ist, dass man für jeden Post immer wieder die jeweiligen Felder samt Wert (value) anlegen muss.
Um zumindest für die Description einen Standardwert festzulegen, bietet sich der Titel des Beitrags bzw. der Seite an, da dieser in der Regel den Content reflektiert.
Und das geht so.
Folgender Code wird in die functions.php des eigenen Themes eingebunden:

<?php
function themename_meta_data() {
// Variablen für die Meta Description
$metaDescription = get_post_meta(get_the_ID(), 'meta_description', true);
$metaDescription = htmlspecialchars($metaDescription);
$metaDescriptionReplace = htmlspecialchars(get_the_title(get_the_ID()));
// Variablen für die Meta Keywords
$metaKeywords = get_post_meta(get_the_ID(), 'meta_keywords', true);
$metaKeywords = htmlspecialchars($metaKeywords);
if(is_single() || is_page()) {
if($metaDescription!=''):
echo '<meta name="description" content="'.$metaDescription.'" />'."\n";
else:
echo '<meta name="description" content="'.$metaDescriptionReplace.'" />'."\n";
endif;
if($metaKeywords!='') {
echo '<meta name="keywords" content="'.$metaKeywords.'" />'."\n";
}
}
}
add_action( 'wp_head', 'themename_meta_data', 5);
?>

Die Funktion – Schritt für Schritt

Nehmen wir die Funktion auseinander.
Im ersten Schritt wird der Rahmen der Funktion erstellt.

function themename_meta_data() {
[...]
}

Damit die Funktion im Head ausgeführt wird, muss noch folgende Zeile eingebunden werden:

add_action( 'wp_head', 'themename_meta_data', 5);

Dann werden die Variablen für die benutzerdefinierten Felder und den Titel festgelegt.

// Variablen für die Meta Description
$metaDescription = get_post_meta(get_the_ID(), 'meta_description', true);
$metaDescription = htmlspecialchars($metaDescription);
$metaDescriptionReplace = htmlspecialchars(get_the_title(get_the_ID()));
// Variablen für die Meta Keywords
$metaKeywords = get_post_meta(get_the_ID(), 'meta_keywords', true);
$metaKeywords = htmlspecialchars($metaKeywords);

Da die Ausgabe nur für Beiträge und Seiten gelten soll, wird noch eine entsprechende Abfrage eingebunden.

if(is_single() || is_page()) {
[...]
}

Innerhalb dieser Abfrage wird dann der Code für die finale Ausgabe eingebunden. Im ersten Teil wird die Ausgabe für die Meta Description generiert.

if($metaDescription!=''):
echo '<meta name="description" content="'.$metaDescription.'" />'."\n";
else:
echo '<meta name="description" content="'.$metaDescriptionReplace.'" />'."\n";
endif;

Der zweite Teil ist für die Meta Keywords zuständig.

if($metaKeywords!='') {
echo '<meta name="keywords" content="'.$metaKeywords.'" />'."\n";
}

Meta Description & Keywords mit Hilfe von Custom Fields via functions.php – Alternativen?!

Bei der oben beschriebenen Anpassung handelt es sich um eine schnelle Lösung, um Beiträge und Seiten mit den entsprechenden Meta Angaben zu bestücken.
Der größte Nachteil ist allerdings, dass diese Anpassung an das Theme gebunden ist.
Sofern also ein Themewechsel durchgeführt wird, werden auch die entsprechenden Ausgaben nicht mehr generiert. Da die benutzerdefinierten Felder an den jeweiligen Post gebunden sind, könnte man auch einfach die Funktion in die functions.php des neuen Themes einbauen bzw. einbinden. Somit wäre das „Problem“ gelöst.
Allerdings ist das nicht die benutzerfreundlichste Art & Weise;) Würde man diese Funktion mit Hilfe eines Plugins einbinden, müsste solch eine Anpassung nach einem Themewechsel nicht mehr durchgeführt werden.
Um die Usability zu steigern, möchte ich in einem meiner nächsten Beiträge die Funktion add_meta_box() benutzen, um so Beschreibung und Schlüsselwörter in den Head einzubinden.

Schreibe einen Kommentar

* Pflichtfelder