Ist das private Weblog von Vladimir Simovic mit Berichten zum Thema Webwork und Internet. Ich wohne in Köln und arbeite als freier Webworker, Blogger und Autor.
Na das wurde ja auch Zeit. Damit ich nicht wieder bei Adam und Eva anfange empfehle ich einfach die Lektüre des ursprünglichen Artikels: Optimaler Seitentitel in Wordpress. Dort habe ich erklärt wie ein "guter" Seitentitel ausschaut, warum so ein Seitentitel gut ist und wie man ihn mit Hilfe eines Plugins realisieren könnte.
In der Zwischenzeit verwendete ich folgenden Code anstatt des Plugins "Optimal Title" (siehe auch "WordPress-Themes verstehen 3"):
<?php if (is_home()) { ?> <title><?php bloginfo('name'); ?> - <?php bloginfo('description'); ?></title> <?php } elseif(is_category() or is_archive() or is_page() or is_single()) { ?> <title><?php wp_title(''); ?> » <?php bloginfo('name'); ?></title> <?php } else { ?> <title><?php bloginfo('name'); ?><?php wp_title(); ?> - <?php bloginfo('description'); ?> | <?php bloginfo(); ?></title> <?php } ?>
Der obere Code war deswegen so lang, weil man vor Version 2.5 das Trennzeichen (Standard: ») nur ausblenden, aber nicht positionieren konnte. Seit der Version 2.5 gibt es eine viel einfachere Möglichkeit.
Zuerst die kurze Fassung:
<title><?php wp_title('»', true, 'right'); bloginfo('name'); ?></title>
Die wichtige Stelle habe ich hervorgehoben. Mittlerweile sind hier drei Parameter zulässig. Der erste ist für das Trennzeichen, der zweite Parameter bestimmt ob der Titel ausgegeben wird und mit dem dritten Parameter positioniert man das Trennzeichen.
Und hier dann die ausführlichere Fassung:
<?php if (is_home()) { ?> <title><?php bloginfo('name'); ?> - <?php bloginfo('description'); ?></title> <?php } else { ?> <title><?php wp_title('»', true, 'right'); bloginfo('name'); ?></title> <?php } ?>
Gefunden bei Mark.
Da ich seit ein paar Wochen zunehmend seltsame Registrierungen hier im Weblog verzeichne, habe ich temporär diese Funktion deaktiviert, bis ich nicht eine endgültige Lösung gefunden habe. Die bereits registrierten Leser können sich weiterhin einloggen.
Zudem habe ich die ganzen Accounts ala "Hausarzt:-Müller", "Doktor_Schmitz", "Viki-Malone754!" gelöscht. Das ist mir alles irgendwie nicht koscher, zumal die auch sehr exotische E-Mail-Adressen hatten und sonst keine Angaben getätigt haben (z. B. Vorname oder Nickname). Keine Ahnung ob und was die Herrschaften vor haben.
Will man auf einer Website, die mit WordPress betrieben wird, bestimmte Inhalte auf der Startseite unterbringen, dann nutzt man den conditional Tag is_home. Hier ein Beisipiel:
<?php if(is_home()) { ?>
<p>Hast du nicht gesehen!</p>
<?php } ?>
Der Satz "Hast du nicht gesehen!" kommt nicht in Einzelansicht, nicht auf einer Seite (Page), nicht im Archiv etc. sondern nur auf der Startseite vor. Sehr einfach umzusetzen und sehr nützlich. Allerdings, wenn man den "Weiterblättern"-Links folgt und eigentlich auf der zweiten oder dritten Unterseite ist, dann taucht dieser Satz trotzdem noch auf. Die obere Abfrage spricht halt nicht die Startseite im klassischen Sinn an sondern die Hauptdatei im Template.
Was ist jetzt die Lösung? Ganz einfach:
<?php if(is_home() and !is_paged()) { ?>
<p>Hast du nicht gesehen!</p>
<?php } ?>
Das Ausrufezeichen ist eine Negierung und im Klartext heißt es: Zeige Inhalt xyz auf der Haupt- aber nicht auf den Folgeseiten. Ich hoffe ich habe mich nicht allzu kompliziert ausgedrückt.
Ich habe in den letzte Tagen an mehreren Stellen WordPress 2.2.x und WordPress 2.3-alpha installiert bzw. darauf upgedatet.
Mir ist irgendwann aufgefallen, dass die Autor-Auswahl, die sich in der rechten Seite bei "Beitrag schreiben" bzw. "Seite schreiben" befindet, nicht mehr da ist. Da ich mir nicht vorstellen konnte, dass die Entwickler das entfernt haben habe ich mir gedacht, dass so etwas vorkommt in den Blogs wo es nur einen Nutzer (den Admin) gibt. Also habe ich neue Nutzer hinzugefügt und es hat nicht geholfen und aus Zufall habe ich entdeckt, dass wenn man den Admin noch einmal zu Admin erklärt (ich weiß es ergibt eigentlich kein Sinn), dass dann die Autor-Auswahl wieder da ist.
Mir ist gerade wieder aufgefallen, nach dem ich ein Testupgrade dieses Weblogs erfolgreich durchgezogen habe, dass die Wordpress-Entwickler die Inline-Vorschau in der Version 2.2 entfernt haben.
Die Vorschau war in einem Iframe unterhalb des Beitrages untergebracht und somit hatte man alles auf der gleichen Seite. Jetzt haben Sie diese Vorschau entfernt und oberhalb der Quicktagleiste einen Vorschau-Link untergebracht der eine neue Seite öffnet. Manchmal habe ich das Gefühl, dass die Jungs dort irgendein komisches Zeugs rauchen.
Naja, wie dem auch sei. Wer die alte Vorschau zurück haben will, kann sich an diesen Links orientieren:
Nachtrag: Nun gibt es schon ein Plugin, der die Inline-Vorschau wieder herstellt.
Seit der Wordpress-Version 2.1 wird bei der Ausgabe des Newsfeeds das <!--more--> oder besser bekannt als "weiterlesen…"-Funktion berücksichtigt. Also dort wo man den Beitrag im Weblog "teilt" wird das auch so im RSS-Feed abgebildet. Das finde ich nicht gut, da ich die allermeisten Weblogs in Bloglines verfolge und ich gerne den kompletten Feed lese. Will ich kommentieren, dann gehe ich zu der Website.
Es passiert durchaus häufig, dass man etwas längere Beiträge schreibt und man dann diese in eine Einleitung und den Rest des Beitrages aufteilt u. a. um die Startseite nicht zu überladen und nicht unübersichtlich zu machen. Aber das will man nicht unbedingt im Feed abbilden. Bis Wordpress 2.0.x wurde das <!--more--> im Feed nicht berücksichtigt, ab der Version 2.1 schon. Will man dies ändern dann kann man dies tun in dem man die wp-includes/post-template.php in einem Texteditor aufmacht und folgenden Code in der Zeile 83:
if ( preg_match('/<!--more(.+?)?-->/', $content, $matches) ) {
durch folgenden ersetzt:
if ( preg_match('/<!--more(.+?)?-->/', $content, $matches) && !is_feed() ) {
Abspeichern und natürlich die Datei hochladen. In einem der letzten Streifzüge durch wp-plugins.net habe ich gesehen, dass es auch Plugins für so etwas gibt, aber auch in Supportforum gelesen, dass es Probleme mit ISO-Zeichensatz und einem dieser Plugins gibt. Daher habe ich mich fürs erste für die manuelle Lösung entschieden.
Wenn man für Wordpress Themes entwickelt dann muss man an manchen Stellen die Template-Tags für verschiedene Versionen berücksichtigen. Die Entwickler haben in den Versionsstrang 2.1.x nicht nur neue Template-Tags eingeführt sondern, ganz "schlau", alte unwirksam gemacht. Ganz schlau. Das ist einer der Gründe warum ich die Version 2.1.x noch nicht in mein Herz geschlossen habe … mal davon abgesehen das diese Version auf mich noch nicht den stabilen Eindruck macht wie z.B. die Version 2.0.9.
Wie dem auch sei, an manchen Stellen z.B. wie beim Aufruf der Blogroll oder beim Aufruf der Kategorien muss man die verschiedenen Versionen berücksichtigen. Die einfachste Möglichkeit ist es zwei verschiedene Themes zu machen. Eine für den 2.0.x-Strang und eine für den 2.1.x-Strang. Das ist aber unnötige Arbeit und eine unnötige Fehlerquelle.
Daher habe ich mich auf die Suche nach einer Lösung begeben und ich dachte da an eine Abfrage. Die Fragestellung im Wordpress-Forum ergab kein Ergebnis und daher habe ich mir mal diverse Plugins angeschaut und die Lösung der Probleme ist $wp_version anzusprechen. Hier ein Beispiel, wie man die Kategorien für die Version 2.0.x und 2.1 aufruft:
<?php if (($wp_version < "2.1")) {
wp_list_cats('sort_column=name&optioncount=1');
}
if (($wp_version >= "2.1")) {
wp_list_categories('sort_column=name&show_count=1&title_li');
} ?>
Der erste Teil des Code-Abschnitts (if (($wp_version < "2.1"))) wird in allen Versionen eingebaut, die kleiner als 2.1 sind und der zweite Code-Abschnitt (ab if (($wp_version >= "2.1"))) wird in allen Versionen eingebaut die 2.1 oder größer sind. Ich werde daher in den nächsten Tagen alle Themes so ausrüsten, es ist Kokolores zwei verschiedene Themes-Versionen zu pflegen, wenn man in einem Theme mehrere WP-Versionen berücksichtigen kann.
Nachtrag: eine weitere Möglichkeit (aus dem Support-Forum) wie man ein und das selbe Wordpress-Theme für mehrere Versionen fit machen kann ist die Abfrage ob eine Funktion überhaupt vorhanden ist:
<?php if (function_exists('wp_list_cats')) {
wp_list_cats('sort_column=name&optioncount=1');
}
else {
wp_list_categories('sort_column=name&show_count=1&title_li');
} ?>
Im Prinzip ist das gleiche wie wenn man abfragt ob ein Plugin vorhanden ist. Dies scheint mir sicherer zu sein, da mich Garvin darauf hingewiesen hat, dass die Versions-Abfrage, so wie ich sie oben vorgestellt habe, evtl. bei z.B. Beta-Versionen nicht funktionieren könnte.