Das Putzlowitsch Test- und SEO-Blog

Die gute, alte Blogrolle

Wordpress: Link bearbeiten

Lebt sie noch, oder ist sie schon verstorben, die gute, alte Blogrolle?

Die WordPress Linkliste

Ja, bei mir gibt es noch die Blogrolle und sie heißt sogar so. Eigentlich ist es eine von WordPress verwaltete, kategorisierbare Linkliste. Bei jeder neuen WordPress-Installation gibt es genau eine Link-Kategorie bereits vorinstalliert, eben die berühmte Blogroll. Sie ist auch schon mit ein paar Einträgen belegt, es sei denn, man machte eine leere WP-Installation.

In älteren Versionen von WordPress bis einschließlich 3.0.x hatten diese WordPress-Bookmarks noch eine nicht unwichtige technische Funktion. Wenn man bei den Kommentar-Einstellungen die Option

[x] Der Autor muss bereits einen genehmigten Kommentar geschrieben haben.

aktiviert hatte, wurden Trackbacks und Pingbacks von Blogs, die in der Linkliste stehen, automatisch freigeschaltet. Das fand ich sehr gut, mußte ich doch so nicht immer die vielen Pings und Trackbacks von befreundeten Blogs freischalten. Aber leider ist das irgendwie ab WP 3.1 unter den Tisch gefallen.

Deshalb habe ich diese praktische Funktion wieder zum Leben erweckt. Keine große Sache, alles in allem etwa 20 Zeilen PHP-Skript. Hier die Datei:

Download: 123 Comment Approve Blogroll (Version 0.10)

Die Verwendung ist in WordPress als Plugin, als MU-Plugin, in der my-hacks.php oder in der funcions.php des Themes möglich.

Webmasterfriday

Gut, das paßte jetzt vielleicht nicht 100%ig zum aktuellen Thema „Die Blogroll – wichtig oder weglassen?“ des Webmaster-Fridays. Aber egal, es hat mit der Blogrolle zu tun und ich nähere mich dem Thema halt aus einem technischen Blickwinkel.

Allein meiner Faulheit geschuldet, nicht immer alle Ping- und Trackbacks freischalten zu müssen, werde ich die Blogroll behalten und sogar erweitern. Die Funktionalität ist übrigens selbst dann gegeben, wenn ein Link auf

[x] Diesen Link als Privat markieren

steht, also unsichtbar ist. Man kann also einen Link auch nur intern als Trackback-Freischalter verwenden, ohne ihn öffentlich sichtbar zu machen. :-)

Webmasterfriday - WMF

Keine Kommentare »

Die WordPress-Gallery (Galerie) ohne Links, so gehts

Erklärungen überspringen – direkt zur Lösung :-)

Die WordPress-Bildergalerie

Seit WordPress Version 2.5 gibt es eine eingebaute Bilder-Galerie, die mit dem Shortcode [gallery] in einen Beitrag integriert werden kann.

Der ersten Version fehlten ein paar sinnvolle Optionen wie Include und Exclude und auch die Art des Links, mit dem ein Galerie-Bild unterlegt ist, konnte nicht beeinflußt werden. Das Bild verlinkte immer auf die Anhang-Seite.

Da ich aber lieber direkt auf die Bilddatei verlinke, habe ich das Plugin „123 Extended Gallery“ geschrieben, welches die WordPress-eigene Gallery-Funktion ersetzt und erweitert.

Mittlerweile kennt WordPress für die Galerie auch die Parameter exclude und include, um Bilder von der Anzeige auszuschließen oder beliebige Bilder hinzuzzfügen. Mit dem Parameter [gallery link=“file“] kann nun auch auf das Bild direkt verlinkt werden.

Was aber immer noch fehlt ist die Möglichkeit, überhaupt keine Links zu verwenden. Das scheint für den einen oder anderen aber durchaus eine erwünschte Option zu sein.

Mein Plugin hat gewissermaßen ausgedient, denn WordPress kann nun praktisch alles selber, was meine „Extended Gallery“ bisher umgesetzt hat, außer eben keine Links zu verwenden.

Deshalb stelle ich im Folgenden eine eigenständige Lösung dafür vor, die z.B. in die Datei functions.php des Themes intergriert werden kann.

In den Tiefen der WordPress Action- und Filter-Hooks

Erweiterungen und Änderungen für WordPress sollten immer über die definierte Plugin-Schnittstelle erfolgen, direktes Manipulieren der WP-Dateien ist unsauber, fehleranfällig und daher zu vermeiden.

In der Gallery

Die Implementierung der Shortcode-Funktion gallery_shortcode in der Datei media.php hat am Anfang einen Filter-Einstiegspunkt (Hook), mehr aber nicht:

// Allow plugins/themes to override the default gallery template.
$output = apply_filters('post_gallery', '', $attr);
if ( $output != '' )
  return $output;

An der Stelle kann man die gesamte Funktion ersetzen, indem man den selbst erzeugten Gallery-HTML-Code zurück gibt. Genau an der Stelle setzt auch mein altes Gallery-Plugin an, aber ich will ja jetzt nur die Links entfernen.

Die Bilder mit den Links werden weiter unten erzeugt:

foreach ( $attachments as $id => $attachment ) {
  $link = ... ? wp_get_attachment_link($id, $size, false, false) ...

Die Funktion wp_get_attachment_link bietet auch einen Filter-Hook, aber ein dort eingehängtes Filter soll ja nur innerhalb der Galerie-Erzeugung aktiv sein.

Nun kann man zwar mit einer Filterfunktion für ‚post_gallery‘ am Anfang eine passende Funktion bei wp_get_attachment_link einklinken, bekommt sie aber am Ende nicht mehr weg. Dann wirkt sie aber auf alle noch folgenden Attachment-Links auch außerhalb der Galerie, was natürlich nicht erwünscht ist.

Wenn man die Anzahl der Bilder kennen würde, könnte man diese in einer globalen Variable vermerken und im eigenen Attachment-Link-Filter runterzählen. Wenn der letzte Link bearbeitet ist, kann man die Filterfunktion wieder ausklinken.

Die anzuzeigenden Bilder werden in der WP-Gallery mit den WordPress-Funktionen get_posts bzw. get_children ermittelt. Diese Funktionen bieten leider keine Filter- oder Action-Hooks. Sie erzeugen ein neues WP_Query-Objekt und holen sich das Ergebnis mit der Objekt-Funktion query ab.

Im WP_Query-Objekt

In der Funktion query gibt es erfreulicherweise mehrere Action- und Filterhooks. Am besten geeignet erscheint der Filteraufruf für ‚the_posts‘ fast am Ende, da hier alle Daten vorliegen und damit die Anzahl der gefundenen Bilder bekannt ist. Leider wird dieser Hook nur bedingt aufgerufen:

if ( !$q['suppress_filters'] )
  $this->posts = apply_filters_ref_array('the_posts', array( $this->posts, &$this ) );

Man ahnt es schon, genau die Variable suppress_filters wird von get_posts und damit auch get_children gesetzt, um die Ausführugn der meisten Filter zu unterdrücken. Das ist auch wichtig und richtig, denn diese Filter sind oft nur in der WordPress-Loop sinnvoll einsetzbar und würden bei der Abfrage einer kompletten Liste der Bilder möglicherweise unerwünschte Ergebnisse liefern.

Und nun? Der Rettungsanker ist der Action-Hook ganz am Anfang der Funktion query:

do_action_ref_array('pre_get_posts', array(&$this));

Meine erste Idee war es nun, die Variable suppress_filters einfach zu löschen, so daß die Filter aufgerufen werden. Das führt aber wie schon gesagt möglicherweise zu unerwarteten Ergbnissen, weil die Filter für die WordPress-Loop gedacht sind. Keine Gute Idee!

Mein nächster Ansatz war nun, daß ich mir zunächst in der Action-Funktion für pre_get_posts das WP_Query-Objekt global speichere um später wieder darauf zugreifen zu können.

Wenn es eine Funktion nach der eigentlichen Abfrage der Datenbank gibt, die ihrerseits einen Filter- oder Action-Hook enthält, könnte ich diese „mißbrauchen“, um über das gespeicherte Objekt schließlich die Anzahl der Bilder zu ermitteln.

Seit WordPress 2.7 gibt es die Sticky-Posts, also Beiträge, die ganz oben auf der Artikelseite fest getackert werden können. Um diese Sticky-Posts vor allen anderen in die Liste einzufügen, wird in der Funktion query die Option ’sticky_posts‘ abgefragt:

$sticky_posts = get_option('sticky_posts');

Die Funktion get_option enthält netterweise ganz am Anfang den Filterhook für ‚pre_option_‘ . $option. Damit kann ich nun meine Abfrage der Anzahl über das zuvor gespeicherte WP_Query-Objekt „triggern“, die Anzahl der Bilder global speichern und letztendlich das eigentliche Filter für wp_get_attachment_link installieren.

Die Filter- und Action-Kette zusammengefaßt

Ist doch eigentlich alles ganz einfach, oder? :-)
Hier nochmal eine kurze, grafische Zusammenfassung aller Schritte:
Gallery-No-Link PAP
Erstellt mit yEd

Nachtrag 13.02.2012: Es geht auch viel einfacher, wie man hier sehen kann: Gallery with No Image Links-Plugin :-)

Die Zip-Datei gallery_no_link.zip runter laden und auf dem heimischen Rechner entpacken.

Download: 123 Gallery No Link

In der enthaltenen Datei plw123_gallery_no_link.php kann eine Option konfiguriert werden.

define( 'PLW123GOL_NO_LINK', false );

Mögliche Werte:
false: die Links werden durch den Link-Parameter ’none‘ im gallery-shorcode unterdrückt:

[gallery link="none"]

true: die Links werden immer in allen Galerien unterdrückt

Das Modul 123 Gallery No Link kann auf drei unterschiedlichen Arten in WordPress installiert werden.

1. in der functions.php des Themes

Dazu ist die Datei plw123_gallery_no_link.php in das WordPress-Theme-Verzeichnis des aktiven Themes zu kopieren und in der functions.php am Ende folgendes einzufügen:

@include( 'plw123_gallery_no_link.php'

2. als Plugin

Dazu ist die Datei plw123_gallery_no_link.php in das WordPress-Plugin-Verzeichnis (/wp-content/plugins/) zu kopieren und im Backend bei den Plugins zu aktivieren.

3. als MU-Plugin (ab WordPress 2.8)

Dazu ist die Datei plw123_gallery_no_link.php in das MU-Plugin-Verzeichnis (/wp-content/mu-plugins/) zu kopieren. Falls dieses Verzeichnis nicht existiert, muß es neu angelegt werden. Eine Aktivierung des Plugins ist nicht erforderlich, PHP-Dateien in diesem speziellen Verzeichnis werden immer geladen.

Keine Kommentare »

OMCap 2011 Berlin – ein kurzer Rückblick

OMCap 2011 BerlinAm 13. Oktober machte ich mich um 5.45 Uhr auf den Weg zur OMCap nach Berlin. Mein Zug (ICE Hamburg-Berlin) wurde ab Wittenberge über Stendal umgeleitet, so daß ich mit einer Stunde Verspätung kurz nach 9 Uhr beim Kosmos ankam.

Dadurch hatte ich zwar Begrüßung und Keynote verpaßt, war aber rechtzeitig zum ersten Vortrag im Track bing bei „Black Hat: Marketing & Traffic jenseits von Gut & Artig“ mit Fabian Rossbacher und Fabian Brüssel.
Es war interessant zu sehen, was abseits des Pfades der SEO-Tugend so möglich ist, für mich kommen diese Dinge aber nicht in Frage.

Weiter ging es für mich im Track searchmetrics bei „KMUs: Chancen und Risiken bei SEO und SEM für KMUs“ mit Marco Janck und Daniel Wette. Ich war zwar nur als Privatperson auf der OMCap, arbeite ansonsten aber in einer mit einem mittleren Unternehmen vergleichbaren Einrichtung. Insofern war ich dort gut aufgehoben. :-)

OMCap Berlin 2011Zum nächsten Programmpunkt bin ich gleich sitzen geblieben. Es folgte im selben Raum „Universal Search: Was kommt noch alles in die SERPs und wie kann man partizipieren?“ mit Niels Dörje und Martin Mißfeldt.

Klar, bei Universal Search geht es zwar nicht nur, aber auch um Bilder. Genau da fühle ich mich zu Hause.

Nach der Mittagspause ging es für mich bei „SEO: Planung, Umsetzung und Steuerung interner Linkstrukturen“ mit Jens Fauldrath, Jonas Weber und Astrid Staats weiter. Hier habe ich einige Anregungen zur internen Verlinkung mitgenommen.

Nach der Kaffeepause war ich wieder im Track bing, jetzt bei „Kostenlose vs. kostenpflichtige Tools: Was leisten Tools und wo sind die Grenzen?“ mit Christian Sauer und Sören Bendig. Für mich als Hobby-SEO müssen kostenlose Tools reichen. Ich sollte aber mal meinen kürzlich gewonnen SEOLytics 12 Monate Starter-Account einlösen. Nicht das der ungenutzt Code verfällt.

Zum Schluß war ich bei „Linkaufbau: Blackhat vs. Whitehat“ mit Dominik Wojcik und Maik Metzen. So schließt sich der Kreis, mit Blackhat begonnen und geendet, auch wenn ich damit nix am Hut habe. :-)

Nach Drinks, Networking & Dinner mußte ich bereits gegen 19.30 Uhr wieder los und habe so die OMCap-Party verpaßt. Das kommt davon, wenn man nicht in einer Großstadt wohnt. Der letzte Zug fuhr um 20:30 Uhr.

Lobenswert fand ich auch, daß es zum Mittag- und Abendessen ein vegetarisches Gericht gab, sehr gut! Insgesamt war die OMCap eine sehr gelungen Veranstaltung, vielen Dank an Andre Alpar und das OMCap-Team.

Ein Kommentar »

Firefox 4.0 gewöhnungsbedürftig

Diesmal habe ich schnell zugeschlagen, bereits einen Tag nach Veröffentlichung des Firefox 4.0 habe ich ihn installiert. Er soll ja schneller, schöner und besser als der alte 3.xer sein.

Nach dem ersten Start mußte ich mich erstmal kurz orientieren, denn die Anordnung der Bedien- und Eingabeelemente hat sich geändert. So findet man die Tabs jetzt über der URL-Zeile und die Buttons für Neuladen und Abbrechen sind nach rechts in das URL-Eingabefeld gewandert. Diese kann man aber wieder nach links neben die Navigations-Buttons verschieben.

Größere Umgewöhnungsprobleme habe ich aber mit der geänderten Reihenfolge zweier wichtiger Menüpunkte:

Firefox 3.x 4.0 - Menü Fenster und Tab

Ich öffne meist einen Link mit einem Rechtsklick über das Kontextmenü entweder in einem neuen Fenster oder in einem neuen Tab. Beim Firefox 3.x war der Menüpunkt für „Link in neuem Fenster öffnen“ ganz oben, darunter dann der Menüpunkt „Link in neuem Tab öffnen“. Beim Firefox 4.0 ist es nun genau umgekehrt. Im Haupmenü wurden die Punkte auch umgedreht.

Da ich nun seit Jahren schon die alte Reihenfolge verinnerlicht habe und gar nicht mehr bewußt den Menütext wahrnehme, also quasi blind den Menüpunkt klicke, passiert nun natürlich immer genau das Falsche. Will ich den Link in einem neuen Fenster öffnen, landet die Seite in einem Tab. Soll der Link in ein Tab, geht ein neues Fenster auf. *grgrgr*

Es wird wohl eine Weile dauern, bis ich mich umgewöhnt habe. Erschwerend kommt hinzu, daß ich teilweise auf anderen Rechner auch noch Firefox 3.6 im Einsatz habe. Ich frage mich, warum das überhaupt geändert wurde.

Ein paar Addons haben auch erstmal den Dienst quittiert, weil sie nicht mit Fx 4.0 kompatibel sind. Aber da kommen bestimmt in nächster Zeit Updates, hoffe ich zumindest.

Ansonsten sind mir ein paar nette Sachen aufgefallen. So gibt es eine Web-Konsole, die gerade bei der Entwicklung hilfreich ist. Zudem kann man mehrzeilige Eingabefelder beliebig in der Größe ändern. Der Speicherverbrauch ist zwar immer noch recht hoch, aber selbst bei 15 geöffneten Fenstern mit je 5 bis 10 Tabs gab es bisher noch keinen Absturz.

9 Kommentare »

SEO-Camping am Müggelsee :-)

Wieso, weshalb, warum

BrötchenEin paar allgemeine Sätze zur SEO-Campixx 2011 habe ich schon bei putzlowitsch.de geschrieben. Hier gibt es nun einen kleinen inhaltlichen Überblick.

Da mich viele Sachen wie Conversion, AdSense-Optimierung, Facebook, SEO-Tools, Kunden-Optimierung, Verkaufen, Abrechnen und so weiter nicht wirklich interessieren, war die Auswahl meiner Workshops schnell erledigt. Ich stürzte mich deshalb eher auf technische, inhaltliche Themen und die gute Unterhaltung.

Links liegen lassen

Links sollte man immer länger liegen lassen, damit sie reifen können. Kürzlich hatte ich zum ersten Mal etwas über Linkwheels gelesen und so war mein erster Workshop „Linkwheels, Aufbau und Betrieb“ von Khalil Agheli Zadeh. Bei Linkwheels wird vereinfacht gesagt eine Anzahl von Seiten aufgebaut, die sich zunächst untereinander kreisförmig verlinken. Damit das Rad ins rollen kommt, linken dann diese Seiten auf eine zentrale Zielseite.

In meinen zweiten Workshop bin ich nur versehentlich reingestolpert, ich hatte mich im Raum geirrt. Aber wenn ich schon mal da bin, kann ich mir ja anhören, was Felix Meyer zur „Linksucht“ zu erzählen hat. Es war durchaus interessant, die „andere Seite“ kennenzulernen. Auch wenn ich nicht vorhabe, Links zu tauschen, so habe ich doch schon die eine oder andere diesbezügliche Anfrage erhalten. Diese genügten aber kaum den von Felix propagierten Qualitätsansprüchen. Solche zweifelhaften Angebote habe und werde ich auch weiterhin immer links liegen lassen.

Technik, die begeistert

Grafikkarte für dem PC (AGP)Für mich als Techniker und Softwareentwickler war der Workshop „RegS?ex unendliche Weiten…“ von Johan v. Hülsen natürlich gesetzt. Reguläre Ausdrücke sind für viele Sachen wunderbar zu gebrauchen, für andere aber auch nicht. Für meine Trackings parse ich zwar immer noch die SERPs (HTML) mit preg_match, aber erfreulicherweise braucht man da seit ein paar Monaten z.B. bei der Google-Bildersuche gar nicht mehr. Die Daten werden nun auch maschinenlesbar ausgeliefert (wenn man will :-).

Seit vielen Jahren wird bereits an HTML5 gebastelt, fertig ist es immer noch nicht. Weil ich wissen wollte, was HTML5 ist, was es bewirkt und welche Möglichkeiten es gibt, war ich in „Diving into the HTML5 Jungle“ von Sebastian Cario und Johan v. Hülsen. Es ist schon cool, was mit HTML5 alles möglich ist. Ich habe zumindest große Lust bekommen, mich damit zu beschäftigen.

Ein Bild sagt mehr als 1000 Worte

Allerdings sind Suchmaschinen blind, bilderblind. Leider gibt es auch viele Menschen mit einer Behinderung, die ihnen das Leben auch im Internet (unnötig) schwer macht. Deshalb ist barrierefreies Webdesign eine wichtige Sache. Insofern ist es schade, das der Workshop „Klare Sicht im Website Urwald – Barrierefreies Webdesign“ von Susanne Warlich und Friederike Hartwig nicht gut besucht war. Vielen ist einfach nicht klar, das benutzerfreudliches auch suchmaschinenfreudliches Webdesign ist und für die Bildersuche ist es ohnehin essenziell notwendig. Ich habe einige Anregungen mitgenommen, die ich jetzt hier aber nicht lange beschreiben will.

Was der Bilder-Bot nicht sieht, muß man ihm dann doch mit 1000 Worten erklären. Wie man das richtig macht, habe ich bei Eric Kubitz und Elisabeth Matejka in „Kleine Stilkunde für SEO-Texter“ erfahren. Aber ich merke gerade, ich halte mich schon wieder nicht an das dort gelernte, baue Schachtelsätze, schreibe langweilige Überschriften, benutze unnötige Füllwörter, rede um den heißen Brei herum, spicke den Text mit Rechtschreibfehlern und komme nicht zum Punkt. Beim nächsten Artikel mach ich alles besser, versprochen. :-)

Lustig ist das SEO-Völkchen

SEO - Rum und zwei ZigarrenGünter Jauch kann einpacken, nach „Wer wird SEOnär“ mit Florian Stelzner und Gero Wenderholm schau ich mir dessen „Wer wird Millionär“ nicht mehr an. Auch wenn ich von den vielen gewonnen Kästen Bier nichts hatte, war die Show unterhaltsam, lustig und ein perfekter Abschluß für den ersten Arbeitstag.

Da ich am Sonntag früh rechtzeitig aufgestanden war, habe ich „SEO Mortale“ mit Gerald Steffens nicht verpaßt. Und das frühe Aufstehen hat sich in doppelter Hinsicht gelohnt. Zum einen gab es lustige Geschichten rund um SEO zu hören, zum anderen hat Gerald mit vollen Händen die gedruckte Ausgabe (zweite, stark erweiterte Auflage!) des Kultwerkes „Das umfassendste SEO Book aller Zeiten“ unters zahlreich anwesende Volk gebracht.

Ende im Gelände

Am Sonntag Nachmittag wurden dann die SEO-Zelte am Müggelsee abgebaut. Bereits auf der Heimreise im Zug hat mich die Lektüre des spannenden SEO-Books in ihren Bann gezogen, ich hätte fast das Aussteigen verpaßt.

Was bleibt, sind schöne Erinnerungen, frisches Wissen, neue Anregungen, ein Tasse, ein Kugelschreiber und ein rotes T-Shirt (warum ausgerechnet rot???). Ich sage Danke und vielleicht bis zum nächsten Mal!

Nachtrag:
Eine derzeit etwa 60 Einträge umfassende Liste mit weiteren SEO-Campixx-Berichten gibt es bei SEO-Trainee.

2 Kommentare »