WordPress SEO ohne Plugin: Meta-Description mit Benutzerdefinierten Feldern implementieren

Es muss nicht immer ein Plugin sein: Auch ohne umständige Plugins kann für jede Seite eine individuelle Meta-Description ausgegeben werden.
Im nachfolgenden zeige ich die Einbindung der Meta-Descriptions mithilfe von Benutzerdefinierten Feldern.

Was ist die Meta Description?

Die Meta Description ist ein html-Tag, dessen Inhalt von Suchmaschinen meist als Kurzbeschreibung des Inhalts angezeigt wird. Mit einer gut formatierten Meta Description kannst du mehr Besucher über Suchmaschinen anlocken. Ich habe dazu einen Beitrag verfasst, der sich mit der Suchmaschinen-Optimierung für WordPress-Artikel befasst.
Wenn du kein SEO-Plugin zur Pflege der Meta-Tags verwendest, wird ein unformatierter Auszug deines Artikels in den Suchergebnissen angezeigt.

Was sind Benutzerdefinierte Felder?

Benutzerdefinierte Felder sind zusätzliche Eingabemasken, die im Beitragseditor eingeblendet werden können und anschließend mit Funktionen im Frontend geladen werden können.
Zu allererst musst du zum Beitrags-Editor wechseln und Benutzerdefinierte Felder in der oberen Optionsleiste aktivieren:
WordPress Custom Fields aktivieren

Die dazugehörige Funktion: Meta-Description im Frontend laden

Bitte füge die nachfolgende Funktion in die functions.php deines Child – Themes oder als zukunftssicheres Modul ein, damit diese beim Theme-Update oder -Umzug nicht verloren geht.

function add_custom_meta_description() {
global $post; ?>
<meta name="description" content="<?php
    if ( get_post_meta($post->ID, "description", true) !='' )
        echo get_post_meta($post->ID, "description", true);
    ?>"/>
<?php }
add_action('wp_head', 'add_custom_meta_description', 1);

Meta-Description eingeben

wordpress-seo-meta-description-custom-fields
Nun kannst du unter jedem Beitrag bzw. Seite den Namen description eingeben – Der Wert wird dann als meta description eingefügt. Diese Vorgehensweise funktioniert natürlich auch mit Open-Graph Attributen.

WordPress SEO ohne Plugin? Wer machts?

Ich habe bisher nur bei einer kleinen Portfolio-Seite alle SEO-relevanten Attribute über Custom Fields hinzugefügt – für größere Projekte empfehle ich aber immer gern ein passendes SEO-Plugin.
Wie siehts mit dir aus? Verwendest du ein Plugin für die Suchmaschinen-Optimierung deiner WordPress-Site?

Aktualisiert am 17.08.2015

Die Code-Schnipsel verursachten einen Error und eine Notice und funktionierten folglich nicht, da die WordPress-interne Variable $post nicht bekannt war.

Code-Schnipsel vom 12.03.2017

Carsten wollte, dass bevorzugt der Auszug (excerpt) eines Beitrages genommen wird und bei nicht vorhandener description keine meta description ausgegeben wird:
https://gist.github.com/PascaleBeier/4ea657796d34de2d9c763985fbd29959.js


Beitrag veröffentlicht

in

, , , ,

von

Schlagwörter:

Kommentare

42 Antworten zu „WordPress SEO ohne Plugin: Meta-Description mit Benutzerdefinierten Feldern implementieren“

  1. Avatar von Dilek Korkmaz
    Dilek Korkmaz

    Hallo, toller Beitrag. Ich habe es auch direkt versucht umzusetzen, hat aber leider nicht funktioniert. Ich möchte nämlich ohne Seo plugin arbeiten.
    Lg

    1. Avatar von Pascale

      Hallo Dirk,
      das ist mir vor einem Monat bei einer Kundeninstallation auch aufgefallen.
      Ich werde den Beitrag aktualisieren. Währenddessen, schau doch mal bei wpbeginner.com – dort finden sich auch Beiträge dazu!
      Einen schönen Start in die Woche und liebe Grüße,
      Pascale

    2. Avatar von Pascale

      Der Beitrag ist mittlerweile aktualisiert 🙂

  2. Avatar von Dilek Korkmaz
    Dilek Korkmaz

    So, nun habe ich es wieder getestet: es erscheint in benutzerdefinierten feld meta_description, nur ausgelesen wird es nicht wenn ich die Descriptionbeschreibung einfüge 🙁

    1. Avatar von Pascale

      Das Feld muss description heißen – hier ist es getestet 🙂

  3. Avatar von Dilek Korkmaz
    Dilek Korkmaz

    Ich hatte für den Beitrage folgendes in Heder.php eingefügt – liest automatisch aus – simple Lösung – für description und keywords:
    <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 . ‚, ‚;
    }
    }
    ?>“ />
    Möchte für Seiten nicht automatisch auslesen lassen, sondern selbst bearbeiten. Wie könnte ich die Abfrage ändern, das meta_description von der benutzerdefinierte feld auslesen kann.
    Libe Grüße
    Didi

    1. Avatar von Pascale

      Achso!
      Dann füge doch folgendes hinzu:

      function add_custom_meta_description() {
      global $post; ?>
      <meta name="description" content="ID, "description", true) !='' )
              echo get_post_meta($post->ID, "description", true);
          ?>"/>
      <?php }
      if ( is_page() ) {
      add_action('wp_head', 'add_custom_meta_description', 1);
      }
      

      Damit wird das Meta-Description Feld nur auf Seiten ausgelesen.
      Die Spamfilter machen den Code kaputt, ich schicks dir per Mail..

  4. Avatar von Dilek Korkmaz
    Dilek Korkmaz

    Hi,
    eine weitere Frage: wie könnte ich den Schlagwörter Bereich auch für Seiten aktivieren, wie auch bei den Beiträgen?
    Somit bräuchte ich kein Benutzerdefiniertes Feld für Keyword/Schlagwörter und es würde direkt in die Datenbank abspeichern und direkt auslesen mit der Änderung was ich im Header.php eingefügt habe würde es super funktionieren.

  5. Avatar von Hajo

    Danke, Pascal, das klappt gut als ergänzung.
    Yoast SEO hat das nämlich jetzt als kostenpflichtigen Zusatz deklariert und die Description fehlt mir schon.

  6. Avatar von Hajo

    Ich bins noch einmal.
    Bei der Übersicht der Beiträge wird das Descriptionfeld angezeigt, aber der Eintrag in die Description nicht angezeigt. Muss das noch irgendwie aktiviert werden oder wo kann ich kontrollieren, dass die Description angenommen wird?

    1. Avatar von Pascale
      Pascale

      Moin Hajo,
      Ich werde die Code-Schnipsel heute nochmal testen. Nachschauen kannst du das eigentlich, indem du auf der entsprechenden Seite im Frontend den Quelltext anschaust.
      Ich aktualisiere den Beitrag an diesem Wochenende.

  7. Avatar von Hajo

    ok, ich habs gefunden: Im Browser den Text eingeben und er wird gefunden…

    1. Avatar von Pascale
      Pascale

      Super. Kannst du mir einen Link schicken zu deiner Aussage zum WordPress SEO Plugin?

  8. Avatar von stotti
    stotti

    Der link auf „zukunftssicheres Modul“ bringt nen 404er weil der link irgendwie anders heißt, kannst Du noch ändern und danke für die super Anregung 🙂

    1. Avatar von Pascale
      Pascale

      Danke für den Hinweis 🙂

  9. […] kleinen Änderung in WordPress selbst ist das schnell erledigt. Eine gute Beschreibung dazu bietet Pascale Beier. Ich muss gestehen, dass auch ich mich daran gehalten habe. Der Artikel ist war schon 1 1/2 Jahre […]

  10. […] Die meta-description ist die kurze Beschreibung der Seite in den Suchergebnissen. WordPress liefert derzeit keine Eingabemöglichkeit dafür mit, deshalb die Anleitung, wie man diese Funktion ohne Plugin ergänzen kann: pascalebeier.de/wordpress-seo-ohne-plugin-meta-description-mit-benutzerdefinierten-feldern-implement… […]

  11. Avatar von mike Lager

    Moin Moin !
    Da hätte ich noch einmal eine Frage zu !
    Besteht die Möglichkeit in der Description eine Variable zu integrieren ? also kann ich in der description irgendwie php Code eingeben und diesen dann per echo ausgeben ?

    1. Avatar von Pascale
      Pascale

      Moin Mike,
      PHP-Code kannst du in der header.php-Datei in deinem aktiven Theme hinzufügen und anpassen. Wenn du mir genauer sagst, worum es geht, kann ich dir sicher helfen!
      Grüße,
      Pascale

  12. Avatar von mike Lager

    Hi Pascale !
    Daran habe ich auch schon gedacht …. nur leider weis ich nicht wie ich den Code genau an der stelle einfügen kann wo ich ihn brauche …Dsa Problem ist nämlich derzeit das ich Yoast benutze für meine Metatags…..
    Haste nen Plan ob das damit auch gehen würde?
    Derzeit sieht meine Description ungefähr so aus: (Ist nur ein Beispiel)
    „Derzeit sind in meinem Blog viele Beiträge vorhanden.“
    sollte später werden:
    Derzeit sind in meinem Blog 34 Beiträge vorhanden.
    Wie gesagt mit dem kann ich mir vorstellen das es mit deiner Variante möglich ist…. Allerdings habe ich schon extrem viel selber am Template und auch sonst sehr sehr viel selber Programmiert was mich jetzt schon extrem viel Zeit kostet um alles so hin zu bekommen wie ich es benötige …. Daher würde ich ungern auf eine andere Art meine Metatags eingeben…..
    (Habe auch schon versucht in der DB direkt an der Stelle wo die Metatags von Yoast gespeichert sind php Code ein zu fügen …. ging aber leider nicht ….?!

  13. Avatar von mike Lager

    2 Sachen …..
    1. Wenn ich hier auf deiner Seite einen kommentar verfasse …. und auf abschicken klicke wird die Seite nicht neu geladen …..
    2.
    Habe jetzt mal deine Version hier oben getestet … bei mir kommt dann nur :
    leider aber nicht meine description….
    Viel kann ich da doch nicht falsch gemacht haben oder ?!

    1. Avatar von Pascale
      Pascale

      Du solltest für diese Zwecke nicht die im Artikel genannte Methode verwenden.
      Verstehe ich dich richtig – du möchtest auf der Startseite (woanders machts ja wenig Sinn) im -Tag die Anzahl deiner Beiträge ausgeben?

  14. Avatar von mike Lager

    Ne …. also ich habe natürlich für jeden meiner Beiträge eine eigene Meta desctiption erstellt. Aber ich möchte gerne in jeder Description auf diesen wert zugreifen können….
    weiteres Beispiel einer Description
    =“Nasenverkeinerung Dazu gibt es noch 34 weitere Beiträg auf diesem Blog“
    Ist halt nur als Beispiel !
    Auf einer anderen Seite würde dann z.B. stehen
    =“Nasenverlängerung – Wir haben in diesem Forum zu diesem thema nicht nur diesen Beitrag verfasst… Es gibt noch 34 ähnliche“
    Mir geht es halt darum das der Suchende z.B. bei google in der Description schon sehen kann das es noch viele weitere Beiträg zu diesem thema gibt ….

    1. Avatar von Pascale
      Pascale

      Alles klar, so holst du dir den Wert erstmal.. Code anzeigen is hier bei WordPress nicht so sahnig:
      https://gist.github.com/PascaleBeier/440be44730c4f1ac7d85d2c444dd0efc
      Dann solltest du einfach mal nach WordPress SEO Filtern googlen – dann kannst du über die functions.php den verlinkten Code sicher an bestehende meta descriptions anhängen.
      Schau mal in der Dokumentation von denen nach Filtern, vielleicht WordPress SEO Meta Description filters oder so googeln.

  15. Avatar von mike Lager

    mmmhhh… naja wird wohl doch nicht so ganz passen …. Ich möchte ja gerne für jeden Beitrag die Variable frei verwenden können… Also nicht nur für die Startseite…. Es wäre also eigentlich nur dann möglich, wenn ich im Description text php werwenden könnte …..

  16. Avatar von Pascale
    Pascale

    Du kannst doch einfach die Beiträge der Kategorien zählen jeweils und dann so filtern. Aber da solltest du dich einfach mal bei Yoast umschauen, die haben sicherlich an sowas gedacht.
    Du musst dann über den Filter den du da sicher findest diese Funktion nutzen:
    https://codex.wordpress.org/Function_Reference/wp_count_posts

  17. Avatar von mike Lager

    hey hey hey …. Da geht was …… Glaube habe gerade das passende direkt im plugin gefunden ! GEIL ! muss jezt aber leider los ! (es ist 22:45 Uhr …. machste nie feierabend ? )

    1. Avatar von Pascale
      Pascale

      Moin,
      ja geil! 😀 Manchmal isses dann doch so einfach. Lass auf jeden Fall mal einen Link zu deinem Blog da! 🙂

  18. Avatar von mike Lager

    Zu früh gefreut … Leider gibt es nur Standard Variablen die man nutzen kann…. ich selber brauche aber eine für mich angepasste ( Nur Anzahl an Beiträgen aus ganz bestimmten Kategorien) Aber warten wir mal ab ob ich es nicht doch noch schaffe yoast das bei zu bringen…..
    (Mein Blog ist derzeit noch etwas unbeholfen …. will warten bis er zumindest meine grundanforderungen erfüllt …

    1. Avatar von Pascale
      Pascale

      Das ist schade.
      Allerdings auch nebensächlich. Das sind doch Details, die du auch später noch feinjustieren kannst (und solltest). Frag doch mal im Yoast Forum nach – Ich kann und möchte dir auch nicht mehr an die Hand geben als der Hinweis mit der Suche nach einem entsprechenden Filter und die Methode, die Anzahl der Blog-Artikel auszulesen.
      Nicht böse gemeint 🙂 Aber an deiner Stelle würde mich das weniger interessieren.

  19. Avatar von mike Lager

    Hast recht ….. Allerdings glaube ich das ich für das Ranking somit eine bessere Chance hätte.
    Aber trotzdem bitte noch eine Frage zu o.g. Code bzw. wie man diese Benutzerdefinierten Felder erstellt.
    Ich habe ja bei jeder Seite bzw. Beitrag die Möglichkeit ein Feld zu erstellen. Kann ich irgendwo auch angeben das für jede Seite bzw. Beitrag direkt das Feld vorhanden ist ohne das ich es jedes mal für eine Seite oder einen Beitrag extra erstellen muss ?

    1. Avatar von Pascale
      Pascale

      Öhm.
      Dachte immer ACF macht sowas – https://wordpress.org/plugins/advanced-custom-fields/
      Allerdings musst du halt echt nur den Namen und den Inhalt eintragen, find das jetzt nicht so krass.

  20. Avatar von mike Lager

    Naja ich habe extrem viel selber gebastelt an WordPress und vieles muss ich jetzt schon in meinen Beiträgen in verschiedene Datenbanken und Tabellen händisch eintragen …. Aber dafür ist es dann ganz genau so wie ich es möchte … Aber für jeden Beitrag brauche ich jetzt schon mind. 10 Minuten extra …. Alleine dafür …. Und ich möchte halt so viel wie möglich automatisch machen lassen … und wenn das Feld dann einmal da ist, dann kann ich es auch nicht so schnell vergessen das Feld auszufüllen ….

  21. Avatar von mike Lager

    YEHA ! ALLES LÄUFT ! LOL weis auch nicht warum es mir anfangs nicht in der liste gezeigt wurde !
    ABER JETZT IST ES DA ! JUHU ! vielen Dank noch einmal (melde mich wenn alles steht ! )

    1. Avatar von Pascale
      Pascale

      Niiice! Freu mich von dir zu hören! Schönes Wochenende!

  22. Avatar von mike Lager

    vielen Dank noch einmal ….. Ebenso ….

  23. Avatar von Carsten
    Carsten

    Ein toller Tipp, genau was ich gesucht habe. 🙂 Es geht eben auch ohne Plugins.
    Aber ich frage mich, ob folgendes machbar ist und wenn ja, wie ich den Code in functions.php anpassen müsste:
    Ich habe für alle Beiträge eigene manuelle excerpts erstellt (das bot sich an, weil die automatische Generierung auch Überschriften mit verwendet – das sah manchmal recht verhunzt aus).
    Gibt es einen einfachen Weg ohne zusätzliches Feld (wobei ich dieses neue Feature gerne beibehalten würde, v.a. für die Titelseite), also automatisch, den Inhalt der manuellen excerpts zu übernehmen und diese als Meta-Tag „Description“ einzustellen?
    Sozusagen: Falls ein manuelles excerpt vorhanden ist, verwende dieses, ansonsten den Inhalt des zusätzlichen Felds „description“.
    Würde mich echt freuen wenn Du mir helfen könntest!
    Carsten

  24. Avatar von Carsten
    Carsten

    Ich nochmal. Habe gerade gesehen, daß in den Listings für Kategorien oder Schlüsselbegriffe (WP nennt das glaube ich Taxonomy), das Metatag „description“ zwar erscheint, aber nicht geändert werden kann.
    Ist es möglich, den Code irgendwie abzuändern, nach dem Motto: Wenn kein Feld „description“ (oder kein Inhalt dafür), dann füge kein Meta-Tag „description“ ein?

  25. Avatar von Funda

    Hallo, vielen Dank für Deine Tipps! TOP!!

  26. Avatar von Björn

    Vielen Dank für dieses Beispiel, klappt wunderbar.
    Hast Du eine Idee, wie ich das für Kategorie-Seiten erweitern kann? Hier steht ein Feld für eine Kurzbeschreibung zur Verfügung, die nicht in jedem Theme angezeigt wird. Die Bezeichnung ist „term-description“.
    In der Konsole wird mir zwar “ angezeigt, aber ohne Wert. Umschreiben Deines snippets hat leider auch nichts gebracht, außer einem zweiten leeren Feld. 🙂
    Für Hilfe wäre ich äußerst dankbar! Lieben Gruß,
    -Björn

      1. Avatar von Pascale Beier

        Danke für den Link 🙂

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert