Hallo,
ich nutze wp 4.1.1 und das Theme Origami.
Ich möchte den Titel nun verschiedenfarbig gestalten. Das erste Wort soll schwarz, das zweite rot aussehen.
wer hat eine Idee, wie ich das realisieren könnte?
LG
LAMF
Um schreiben oder kommentieren zu können, benötigen Sie ein Benutzerkonto.
Sie haben schon ein Benutzerkonto? Melden Sie sich hier an.
Jetzt anmeldenHier können Sie ein neues Benutzerkonto erstellen.
Neues Benutzerkonto erstellenHallo,
ich nutze wp 4.1.1 und das Theme Origami.
Ich möchte den Titel nun verschiedenfarbig gestalten. Das erste Wort soll schwarz, das zweite rot aussehen.
wer hat eine Idee, wie ich das realisieren könnte?
LG
LAMF
Hallo!
Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.
Hallo LAMF
füge das in deine functions.php ein:
function title_color($title, $id) {
$titel_words = explode(" ", $title);
$new_title = '';
$i = 1;
foreach($titel_words as $word){
$new_title .= "<span class='wort-" . $i . "'>" . $word . " </span>\n";
$i++;
}
return $new_title;
}
add_filter('the_title', 'title_color', 10, 2);
Alles anzeigen
dadurch erhaltet jedes Wort im Titel eine eigene Klasse (wort-1, wort-2, wort-3 etc.).
Damit kannst du die einzelnen Worte des Titels dann ganz nach belieben mittels CSS stylen.
LG, pixselig
Nicht eben elegant, aber einfach meine Lösung ;-) Aber ich nehme mal an, dass Du den Titel Deiner Seite eh nicht öfter ändern möchtest...
Lösche doch einfach in der header.php in Zeile 6 den php-Code raus und trage Deinen Titel nebst Formatierung im Quelltext ein. Sichere aber Deine header.php lokal, denn nach dem nächsten Update des Templates könnte alles wieder futsch sein...
LG
P.S. Sehe eben, die zwischenzeitlich geschriebene Antwort... ist natürlich wesentlich eleganter!
Hallo LAMF
füge das in deine functions.php ein:
PHP Alles anzeigenfunction title_color($title, $id) { $titel_words = explode(" ", $title); $new_title = ''; $i = 1; foreach($titel_words as $word){ $new_title .= "<span class='wort-" . $i . "'>" . $word . " </span>\n"; $i++; } return $new_title; } add_filter('the_title', 'title_color', 10, 2);dadurch erhaltet jedes Wort im Titel eine eigene Klasse (wort-1, wort-2, wort-3 etc.).
Damit kannst du die einzelnen Worte des Titels dann ganz nach belieben mittels CSS stylen.LG, pixselig
Wow,
vielen lieben Dank für die schnelle Antwort! Freue mich sehr.
Kannst Du mir noch einen Tipp geben, wie due das hier meinst:
"Damit kannst du die einzelnen Worte des Titels dann ganz nach belieben mittels CSS stylen."
?
Recht herzliche GRüße
Lamf
Meine Lösung
Das hier in die functions.php
// function for multicolor site title
function multicolor_site_title($colors) {
$site_title_words = explode(' ',get_bloginfo('name'));
$count_words = 0; $output = '';
foreach($site_title_words as $site_title_word) {
if(isset($colors[$count_words])) $output .= '<span style="color:'.$colors[$count_words].'">'.$site_title_word.' </span>';
else $output .= $site_title_word;
$count_words++;
}
echo $output;
};
Alles anzeigen
Und das hier
ersetzt du durch Folgendes in deiner header.php:
Ein Beispiel mit drei unterschiedlich gefärbten Wörtern. Du kannst in dem array die Farben beliebig vergeben (als reservierte Wörter, rgb-Werte, rgba-Werte, hex-Werte...).
Die Lösung von pixselig ist natürlich von der später ausgegebenen Syntax her etwas eleganter.
Viele Grüße
joschi81
Variante meiner Lösung
joschi81
auch eine sehr schöne Lösung!
nur würde ich in der Funktion "return" anstelle von "echo" verwenden ;-)
Ja, daran hatte ich auch schon gedacht, aber da ja bloginfo() den Wert auch gleich ausgibt, anstatt ihn als Variable zurückzugeben, habe ich das so gemacht. Gibt es noch einen anderen Grund, warum man lieber return verwenden sollte?
Übrigens: Du hast natürlich mit deiner Lösung den großen Vorteil, dass du alles mit den einzelnen Wörtern machen kannst, nicht nur Farben ändern.
Deshalb hier eine Variante von meiner Funktion, bei der das auch geht:
[COLOR=#000000][/COLOR]
// function for multistyled site title
function multistyled_site_title($styles) {
$site_title_words = explode(' ',get_bloginfo('name'));
$count_words = 0; $output = '';
foreach($site_title_words as $site_title_word) {
if(isset($styles[$count_words])) $output .= '<span style="'.$styles[$count_words].'">'.$site_title_word.' </span>';
else $output .= $site_title_word;
$count_words++;
}
echo $output;
};
Alles anzeigen
multistyled_site_title(array('color:rgb(255,0,0)','color:black','color:#ff9900;font-style:italic'));
Besten Gruß
joschi81
Du hast recht, in deinem Fall kannst du natürlich auch echo verwenden.
Ich selber habe mir aber angewöhnt, dass ich niemals in der functions.php ein echo verwende.
Warum?
1.) möchte ich in den Templatedateien selber die Kontrolle über den output haben und
2.) beendet ein "return" die aufgerufene Funktion sofort, während "echo" dies nicht tut. Dadurch kann es (in seltenen Fällen und bei unsauberen Funktionen) bei der verwendung von "echo" zu einer Endlosschleife kommen.
LG, pixselig
Danke für die Hinweise! Ich nutze eigentlich in der functions.php auch nur return. Wenn man doch "echo" verwendet, muss man eben _noch_ vorsichtiger programmieren muss. Manchmal spart es halt code in der Template-Datei, weil man kein "echo" vor dem Funktionsnamen braucht. :)
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!