Das Putzlowitsch Test- und SEO-Blog

Frohes neues Jahr mit Google Top-100

Frohes neues JahrSchnurpsel wünscht allen Lesern
ein frohes neues Jahr.

Die Putzlowitscher Zeitung hat ja schon vorhin ihren Lesern ein frohes neues Jahr 2012 gewünscht, nun will ich das hier auch bei Schnurpsel tun, da vermutlich nicht alle Leser meine beiden Blogs lesen.

Für das aktuelle Google-Doodle funktioniert meine Frohes neues Jahr Top-100 schon recht gut. Als Zusatz habe ich kürzlich noch die automatische Anpassung vom Titel der Seite und der URL hinzugefügt. Das geht ganz gut mit der WordPress-Funktion wp_update_post. Im Seiten-Template prüfe ich ganz am Anfang, ob Titel und Seitenname bereits dem aktuellen Doodle-Titel entsprechen. Falls nicht, werden die Felder post_title und post_name entsprechend angepaßt.

Somit läuft die Top-100 nun praktisch ohne mein Zutun für alle neuen Google-Doodles. Naja, zumindest will ich das mal hoffen.

Wie bei Oceparx zu lesen ist, gibt es wohl ab 0 Uhr noch ein extra Neujahrs-Doodle. Mal sehen, ob das hier dann mit der Top-100 auch so gut klappt.

Ein Kommentar »

Nerdiges Weihnachtsessen – Kartoffelsalat mit Würstchen

Kartoffelsalat mit Würstchen

Weihnachtsessen: Kartoffelsalat mit Würstchen

Das ist doch mal das richtige Weihnachtsessen für einen Computernerd wie Schurpsel. Fertig-Kartoffelsalat aus dem Supermarkt, ein paar Mini-Wiener-Würstchen aus der Packung und Tomatenketchup.

Kurz gesagt, einfach Kartoffelsalat mit Würstchen.

Na immerhin hat es noch zu einer weihnachtlichen Tischdecke gereicht, wie man auf dem Bild sehen kann. :-)

Nachtrag: Wie man Kartoffelsalat ganz einfach selbst machen kann, hatte ich vor einiger Zeit schon mal beschrieben. Ja, das geht auch.

2 Kommentare »

Frohes Fest mit Google Top-100

Frohes Fest
Schnurpsel wünscht allen Lesern
ein frohes Weihnachtsfest.

Die Putzlowitscher Zeitung hat ja schon gestern ihren Lesern ein Frohes Fest gewünscht, heute will ich das hier auch bei Schnurpsel tun, da vermutlich nicht alle Leser meine beiden Blogs lesen.

Das aktuelle Google-Doodle hat auch mal wieder meine Google-Doodle-Top-100 auf eine harte Probe gestellt. Ein paar Automatismen haben nicht funktioniert, weil es seit meiner automatischen Doodle-Erkennung das erste interaktive Doodle ist.

Nun bin ich aber hoffentlich schon mal ganz gut für weitere Doodle gerüstet.

Einen Klops hatte ich mir noch selbst eingebaut. Wenn ich schon als Encoding gzip angebe, muß ich auch damit rechnen, daß der Webserver die Daten tatsächlich GZip-komprimiert sendet. :-)

Nun hat also mein „Frohes Fest“-Diagramm ein paar Lücken. Ist aber nich schlimm, denke ich.

Außerdem habe ich eine neue Website in die Diagramm-Liste aufgenommen, den DeejayBlog von ZweiDotEins. Er hat bereits drei vier Frohes Fest-Artikel geschrieben und da er bei Google-News gelistet ist, auch auf die Top-Position gebracht.

  1. www.deejayblog.de/news/frohes-...haltet-weihnachts-doodle-75385
  2. www.deejayblog.de/news/frohes-fest-48149
  3. www.deejayblog.de/news/frohes-fest-und-einen-guten-rutsch-28795
  4. www.deejayblog.de/news/frohes-fest-mit-einem-google-doodle-15114

Aber auch im normalen Ranking steht bzw. standen die Artikel nicht schlecht da. Na dann, happy Traffic und Frohes Fest. :-)

Da kann ich natürlich nicht mithalten. Zumindest freue ich mich, daß es mein Frohes-Fest-Bild von Putzlowitsch direkt in die Top-10 der Google Bildersuche geschafft hat.:

Google-Bildersuche: Frohes Fest

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 »

Google Webmastertools mit oops

Google-Webmastertools: Oops

Irgendwas schief gehen kann immer mal. Interessant sind dann oft die Fehlermeldungen. Heute wurde mir beim Aufruf der Google-Webmastertools das oben stehende Fensterchen angezeigt. Der Text:

Oops
Hm. Something isn’t right. We’re checking into it now.
[Reload] [Dismiss]

Das Fenster hatte ich bisher noch nie gesehen. Nach zweimal [Reload] war dann alles wieder im Lot.

Weitere Google-Fehlermeldungen:

Keine Kommentare »