WP – WordPress Titel ändern

Mit dem Titel meines Blogs war ich bisher nicht ganz zufrieden.
Besonders störte es, wenn man mehrere Seiten oder Beiträge als Favoriten abgelegt hat.
Dann sah es in der Favoritenliste nämlich immer so aus -

  • bueltge.de [by:ltge.de] » Beitrag 1...
  • bueltge.de [by:ltge.de] » Seite 2...
  • bueltge.de [by:ltge.de] » Kategorie 3...

... ziemlich unübersichtlich.
Also habe ich mich an die header.php meines Themes gemacht und meinen Titel wunschgemäß angepasst, ohne die Nutzung eines Plugins. Wer das ganze nachvollziehen will, findet auf den folgenden Zeilen einige kleine Tipps zum wunschgemäßen Titel.

Ich verwende ein abgewandeltes Theme vom Kubrick-Theme. Dort sieht der Code zur Ausgabe des Titel folgendermaßen aus.


<?php bloginfo('name'); ?> 
 <?php if ( is_single() ) { ?> » Blog Archive <?php } ?> 
  <?php wp_title(); ?>

Mit Hilfe der If-Abfrage habe ich den Titel in die nötige Form gebracht.



<?php if ( is_archive() ) { ?> Kategorie <?php } ?>
<?php wp_title(''); ?><?php if ( is_archive() ) { ?> auf <?php } ?>
<?php if ( is_single() ) { ?> auf <?php } ?> <?php bloginfo('name'); ?>

In der ersten Zeile frage ich ab, ob es sich um die Auflistung aller Beiträge in einer Kategorie handelt, wenn ja - dann schreibe vor den Titel der Kategorie das Wort "Kategorie" und nach dem Titel das Wort " auf ".
Der Titel wird ohne ein Zeichen ausgegeben. Standardmäßig (

wp_title();) ist vor dem Titel ein Doppelpfeil ».
Im weiteren frage ich dann ab, ob es sich um die Darstellung eines Beitrags handelt, also ob das post-Template genutz wird. Wenn ja, dann schreibe auch hier vor den Titel das Wort " auf ".
Nun sieht es folgendermaßen aus - siehe Titel in eurem Browser.

  • Beitrag 1 auf bueltge.de [by:ltge.de]
  • Seite 2 auf bueltge.de [by:ltge.de]
  • Kategorie Sowieso 3 auf bueltge.de [by:ltge.de]

Danach ist die Ausgabe wesentlich benutzerfreundlicher, und auch die Ablage in den Favoriten des Browsers ist übersichtlicher.

Info:
Achtet auf die Verwendung des Bindestriches, da der sehr relevant für die Indizierung durch Suchmaschinen ist.
Bindestriche haben bei Google in der URL die eindeutige Aufgabe der Keyword-Trennung. Sie beeinflussen die Ergebnisse der Suchanfragen, da jedes einzeln und die Kombination der Einzelwörter Gewicht bekommt.
einfach-persönlich.de

Ausgewählte Möglichkeiten für die IF-Abfrage ...

  • is_single - wenn ein Beitrage (post Template) geladen wird
  • is_archive - wenn eine Archiv-Seite geladen wird
  • is_category - wenn eine Kategorie-Seite (Übersicht) geladen wird
  • is_page - wenn eine Seite (page Template) geladen wird
  • is_home - die Abfrage der Startseite
  • is_author - wenn eine Seite gealden wird, eines Autors
  • is_search - wenn die Suchseite (search Template) geladen wird

... mehr Infos zu möglichen Abfragen gibt es auf der Codex-Seite von WP.

43 Kommentare

  1. Hallo, dein Beitrag hat mir sehr weitergeholfen. Nun habe ich aber noch ein kleine Problem. Ich möchte auf dem Beitragsseiten nur den Beitragstitel haben ohne den Haupttitel als anhang hinten dran. Ich bekomme das aber nicht recht verändert. Wie kann ich das erledigen?

  2. Hallo Danny,
    danke, schön, dass die der Beitrag gefallen hat.

    Du musst die Abfrage so gestallten, dass der folgenden Code nicht ausgegeben wird, wenn es ein Beitrag (is_single) ist.

    <?php bloginfo('name'); ?>
    

    LG Frank

  3. Habe mich nochmal damit beschäftigt und schlage folgende Lösung vor. Versuche es mal und bitte eine Rückmeldung.

    
    	<?php if ( is_archive() ) { ?> Kategorie <?php } ?>
    	<?php wp_title(''); ?>
    	<?php if ( is_archive() ) { ?> auf <?php bloginfo('name'); ?><?php } ?>
    	<?php if ( is_single() ) { ?> auf <?php bloginfo('name'); ?><?php } ?>
    	<?php if ( is_page() ) { ?><?php bloginfo('name'); ?><?php } ?>
    	<?php if ( is_home() ) { ?><?php bloginfo('name'); ?><?php } ?>
    
    

    is_home ist für den Verweis auf die Startseite.

    LG Frank

  4. Vielen Dank !!!!!!!!!!!!! Alles super jetzt. Ich knie nieder vor deiner Weisheit 🙂

    Danke und weiterhin so gute Ideen.

  5. Bin gerade über's WP-Forum hier darauf aufmerksam geworden.
    Genau danach habe ich gesucht.
    Zitat:"Standardmäßig ( wp_title();) ist vor dem Titel ein Doppelpfeil »."
    Wo steht der Code ( wp_title();) genau? Das andere steht ja im Header. LG

  6. Die Funktion wp_title ist in der template-functions-general.php in wp-includes hinterlegt. Dort wird auch das Minus (-) vergeben, ab Zeile 130 in WP 1.5*. Schau da mal näher, ob du findest, was du suchst.

    function wp_title($sep = '»', $display = true) {
        global $wpdb;
        global $m, $year, $monthnum, $day, $category_name, $month, $posts;
    
    		$cat = get_query_var('cat');
    		$p = get_query_var('p');
    		$name = get_query_var('name');
    		$category_name = get_query_var('category_name');
    
        // If there's a category
        if(!empty($cat)) {
            if (!stristr($cat,'-')) { // category excluded
                $title = get_the_category_by_ID($cat);
            }
        }
        if (!empty($category_name)) {
            if (stristr($category_name,'/')) {
                $category_name = explode('/',$category_name);
                if ($category_name[count($category_name)-1]) {
                    $category_name = $category_name[count(
    $category_name)-1]; // no trailing slash
                } else {
                    $category_name = $category_name[count(
    $category_name)-2]; // there was a trailling slash
                }
            }
            $title = $wpdb->get_var("SELECT cat_name FROM 
    $wpdb->categories WHERE category_nicename = '$category_name'");
        }
    
        // If there's a month
        if(!empty($m)) {
            $my_year = substr($m, 0, 4);
            $my_month = $month[substr($m, 4, 2)];
            $title = "$my_year $sep $my_month";
    
        }
        if (!empty($year)) {
            $title = $year;
            if (!empty($monthnum)) {
                $title .= " $sep ".$month[zeroise($monthnum, 2)];
            }
            if (!empty($day)) {
                $title .= " $sep ".zeroise($day, 2);
            }
        }
    
        // If there's a post
        if (is_single() || is_page()) {
            $title = strip_tags($posts[0]->post_title);
            $title = apply_filters('single_post_title', $title);
        }
    
        // Send it out
        if ($display && isset($title)) {
            echo " $sep $title";
        } elseif (!$display && isset($title)) {
            return " $sep $title";
        }
    }
    

    Aber Achtung, ich muss darauf hinweisen, du veränderst damit deine Core-Dateien und ein Update wird somit erschwert.

    LG Frank

  7. Nun scheint allerdings der Pingbackfunktion etwas zu fehlen, die Beiträge werden als "Anonymous" gepingt. (Kann man bei mir rechts in der Sidebar sehen.)

  8. Mir ging der Standard-Titel auch gegen den Strich, habe mich deshalb ein wenig umgeschaut und bin über den Artikel hier gestolpert. Ich gebe jetzt nur noch den puren Titel des Artikels + zugehörige Kategorie(n) aus und auf der Startseite wie auch bereits zuvor den Blognamen. Ich denke, dass ist so eine recht gute Einstellung. Um auch noch die lästigen >> loszuwerden, habe ich in der template-functions-general.php den Inhalt der Variable $sep noch gelöscht. So gefällt's mir dann auch 🙂

  9. hallo, erstmal wirklich ein super artikel!
    ich habe folgendes problem. ich benutze das beliebte tagging, wenn ich aber auf einen tag klicke, erscheint die ergebnis liste ohne titel im headbereich. auf deiner seite habe ich gesehen, das du es geschafft hast, den tag als titel einzubauen. vielleicht kannst du mir erklären wie du das machst?
    freundliche grüße
    stefan

  10. Hy Stefan: Ich nutze Jeromeys Keywords um tags zu vergeben und diese habe ich auch im Header. Daz uhabe ich folgenden Code eingebunden:

    < ?php if (function_exists('the_search_keytag')) : the_search_keytag('Tag ', ' - '); endif; ?>
    Mein title-Tag sind dann so aus:
    
    < ?php if (function_exists('the_search_keytag')) : the_search_keytag('Tag ', ' - '); endif; ?> < ?php if ( is_archive() ) { ?> Kategorie < ?php } ?>< ?php wp_title(''); ?>< ?php if ( is_archive() ) { ?> - < ?php } ?>< ?php if ( is_single() ) { ?> - < ?php } ?>< ?php if ( is_page() ) { ?> - < ?php } ?> < ?php bloginfo('name'); ?>

    LG Frank

  11. Hallo,

    ich versuche seit Tagen meinen Title Tag anzupassen aber bekomme es einfach nicht hin.

    Bei meiner Suche bin ich auf Deine Seite hier gestossen und Dein Title Code klappt wunderbar bei mir.

    Nur benötige ich noch eine weitere Anpassung, also hab ich mir Deinen Code vorgenommen und versucht, da er ja alle benötigten Variablen enthält, zu zerlegen und auf meine Bedürfnisse anzupassen.

    Nur bekomme ich es beim besten Willen nicht hin. 🙂

    Ich möchte es so haben, das im Title eines Single Posts jeweils der Name der Category angezeigt wird, in der sich dieser Post befindet.

    Also so sieht beispielsweise meine URL zu einem Post aus:

    hundeblog.bz/terrier/welpe-gefunden.html

    wobei: /terrier/ der Name der Category ist.

    Nun soll der Title dieses Posts folgendermassen aussehen:

    hundeblog.bz - terrier - welpe gefunden

    Wie bekomme ich das denn nur gelöst..?

    Grüsse
    Sveni

  12. Um die Kategorie des Single-Posts im Title zu hinterlegen, muss du mit dem Tag the_category() arbeiten.
    In deinem Wunsch-Fall könnte das so aussehen:

    < ?php bloginfo('name'); ?> - < ?php the_category(' '); ?> - < ?php the_title(); ?>
    Mehr zu den Tags findest du in hier und hier.
    LG Frank
  13. Hi,

    das Problem ist nun das die Category als Link ausgegeben wird, im Title:

    Hunde - Terrier - Welpe gefunden

    Was läuft da noch schief? Es sollte ausschliesslich der Name der Kategorie im Title stehen, nicht der link dorthin.

    Thanks,
    Sveni

  14. Hallo Frank,
    vielen Dank nochmal für die Hilfestellung. Ich habe wohl beim Editieren meines Headers meinen -Eintrag komplett rausgeschmissen, umso geschickter war jetzt deine Lösung.

  15. Ich habe das SEO Title Tag Plugin benutzt und es liefert auch die erwünschten Ergebnisse. Ist zwar nicht weniger Codegeschnipsel, aber danach hat man unter "Einstellungen" ein klickbares Menü für weitere Anpassungen. Danke für den Tip, Frank! Keep up the good work!

  16. Hallo Franke!

    Sehr interessanter Artikel! 🙂
    Nur wie bekomme zwischen und einen Bindestrich?!

    Ich würde es gerne so hinbekommen wie in deinem Blog.
    Wie sieht denn jetzt Header aus?

    Grüße

  17. Hallo Frank,

    Erst einmal entschuldige bitte, die von mir hinterfragten „Tags“ wurde in dem Kommentar nicht angezeigt.

    Ich verstehe deinen Bericht eigentlich voll und ganz und auch der Verweis auf die andere Seite ist mir wohl bekannt.

    Ich habe den Vorschlagscode 1 zu 1 übernommen. Jedoch das „auf“ mit einen „–„ ergänzt. Dies funktioniert auch ganz gut. Legendlich bei der Seitenanzeige nicht.

    Bsp. Seite 2 - bueltge.de [by:ltge.de]

    Hier rauf beruhte sich meine Frage. Wie bekomme ich dort einen Bindestrich hin, in Berücksichtigung des oberen Codes (If-Abfrage).

    Ich hoffe du verstehst jetzt meine Anfrage!

  18. ratloser » ich mache es aktuell so:

    <?php if ( is_archive() ) { ?> Kategorie <?php } ?><?php wp_title(''); ?><?php if ( is_archive() ) { ?> - <?php } ?><?php if ( is_single() ) { ?> - <?php } ?><?php if ( is_page() ) { ?> - <?php } ?> <?php bloginfo('name'); ?>
    

Kommentare sind geschlossen.