Benutzerdefinierte Felder – Ausgabe von Meta Description & Keywords
Wie kann man mit Hilfe von benutzerdefinierten Feldern die Meta-Angaben „Description“ und „Keywords“ im Head ausgeben? Die Antwort gibt es hier.
Beim Anlegen bzw. Bearbeiten von Posts (Seiten oder Beiträge) können benutzerdefinierte Felder hinzugefügt werden.
Sofern die entsprechende Eingabemaske (vgl. Abb. 1) standardmäßig nicht angezeigt wird, kann man diese unter Optionen (vgl. Abb. 2) hinzufügen.
Abb. 1
Abb. 2
Schritt #1 – Anlegen von benutzerdefnierten Feldern
Als erstes werden zwei benutzerdefinierte Felder (Custom Fields) angelegt.
Das erste Feld nennen wir meta_description, welches später für die Ausgabe der Meta Description zuständig sein soll.
Für die Ausgabe der Meta Keywords wird ein Feld mit dem Namen (key) meta_keywords angelegt.
Natürlich sollten diese Felder mit entsprechenden Werten (values) befüllt werden ;)
Schritt #2 – Erstellen einer Funktion für die Ausgabe der neu angelegten benutzerdefinierten Felder
Die folgende Funktion wird in die functions.php des Themes eingebunden.
<?php function themename_meta_data() { $metaDescription = get_post_meta(get_the_ID(), 'meta_description', true); $metaKeywords = get_post_meta(get_the_ID(), 'meta_keywords', true); if(is_single() || is_page()) { if($metaDescription!='') { echo '<meta name="description" content="'.$metaDescription.'" />'."\n"; } if($metaKeywords!='') { echo '<meta name="keywords" content="'.$metaKeywords.'" />'."\n"; } } } add_action( 'wp_head', 'themename_meta_data', 5); ?>
Schritt #3 – Optimierung der Funktion
Um sicher zu gehen, dass Sonderzeichen und Co korrekt angezeigt werden, sollte man diese entsprechend umwandeln (vgl. QuellCode green).
<?php function themename_meta_data() { $metaDescription = get_post_meta(get_the_ID(), 'meta_description', true); $metaDescription = htmlspecialchars($metaDescription); $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"; } if($metaKeywords!='') { echo '<meta name="keywords" content="'.$metaKeywords.'" />'."\n"; } } } add_action( 'wp_head', 'themename_meta_data', 5); ?>
Schlussbemerkung
Bei dieser Funktion handelt es sich wieder einmal um eine Anpassung des eigenen Themes.
Ein Theme-Wechsel hätte zur Folge, dass diese Erweiterung nicht mehr greift und somit Beiträge sowie Seiten ohne Meta Description bzw. Keywords auskommen müssten ;)
Alternativ könnte man auch ein entsprechendes Plugin erstellen oder installieren. Dieses würde dann unabhängig vom aktivierten Theme greifen bzw. funktionieren.
Hallo toller Beitrag. Habe es auch gleich Versucht umzusetzen, nur habe ich es nicht hinbekommen. Ich möchte nicht immer auf plugin zu greifen, gerade bei Seo plugings greift es zu sehr in den Header Bereich ein und es zeigt meine 404.php Seite nicht an.
Habe bereits in Header.php folgendes eingefügt, funktioniert auch super: <meta name="description" content="post_excerpt; if ($excerpt == “) { $excerpt = $post->post_content;} echo esc_attr(wp_html_excerpt(strip_shortcodes($excerpt), 200)); ?>“ />
<meta name="keywords" content="name . ‚, ‚;
}
}
?>“ />
<meta name="news_keywords" content="name . ‚, ‚;
}
}
?>“ />
Ist eine simple möglichkeit es auslesen zu lassen. Nur möchte ich in Seiten Bereich die Meta- Descriptinon und keywords mit benutzerdefinierten box arbeiten – bekomme es leider nicht hin… wäre toll – wenn ich etas Hilfe bekommen könnte.
Leider wird in vielen Blogs, Plugins Vorgestellt obwohl viele Einstellungen auch selbst lösen könnte… mit einfachen php abfragen.
Liebe Grüße
Didi