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
wordpress-eingabemaske-benutzerdefinierte-felder

Abb. 2
wordpress-posts-optionen-einstellungen

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.

One Response to “Benutzerdefinierte Felder – Ausgabe von Meta Description & Keywords”
  • Dilek sagt:

    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

Schreibe einen Kommentar

* Pflichtfelder