Neues Theme, 404.php und WordPressplugins

Frühjahr ist immer eine Zeit des Neubeginns. Man fängt mit dem Frühjahrsputz an und ordnet einige Dinge im Leben. Auch in dem Leben eines Vaters, SysAdmins und Bloggers gibt es dieses Aufbegehren.

Für mich ist es der Moment, ein wenig Farbe und etwas neumodisches in das Blog zu bringen. Somit, habe ich nach einiger Suche und des Nichtbloggens ein Theme gefunden, welches ich nicht Groß umschreiben muss, damit es meinem Gusto entspricht.

Das neue Theme

Ich habe mich für das Theme Pinboard von onedesigns entschieden. Es war mir mehr als symptahisch durch seine excerpts und auch auf verschiedenen Mobilgeräten, auf welche ich zum Glück Zugriff im Moment habe, sah es sehr Gut aus. Die Formatvorlagen waren auch ein Grund sich für das Theme zu entscheiden, denn jene hätte ich auch schon gern ein dem anderem Theme gehabt. Bis jetzt habe ich es nur ein wenig in den Farben angepasst, welches durch die Themeoptionen wirklich erleichtert wird. Sprich es gibt kein Childtheme und das Erneuern der Version gibt mir auch nun mehr Ruhe als vorher.

Die 404-Seite

Was mir absolut nicht gefiel, war die Aufmachung der Fehlerseite für den nicht gefundenen Lesespaß ( 404).
Hier musste ich mit eigenem Code Anpassungen vornehmen und vielleicht möchte Jemand diesen auch benutzen, ob nun Pinboard das Theme der Wahl ist, oder nicht.

…wp-content/themes/pinboard/404.php :
<?php
function yst_strip_attachments($where) {
        $where .= ' AND post_type != "attachment"';
        return $where;
}
add_filter('posts_where','yst_strip_attachments');
?>

<?php get_header(); ?>
<div id="container">
<section id="content" <?php pinboard_content_class(); ?>>
<div class="entry">
                <h2 class="entry-title">ERROR 404<br>Ich konnte die Seite leider nicht finden...</h2>

                <p>Lass mich Dir helfen die Seite zu finden:</p>
                <?php 
                        $s = preg_replace("/(.*)-(html|htm|php|asp|aspx)$/","$1",$wp_query->query_vars['name']);
                        $posts = query_posts('post_type=any&name='.$s);
                        $s = str_replace("-"," ",$s);
                        if (count($posts) == 0) {
                                $posts = query_posts('post_type=any&s='.$s);
                        }
                        if (count($posts) > 0) {
                                echo "<ol><li>";
                                echo "<p>Hast Du vielleicht einen <strong>der folgenden</strong> Posts oder Seiten gesucht?</p>";
                                echo "<ul>";
                                foreach ($posts as $post) {
                                        echo '<li><a href="'.get_permalink($post->ID).'">'.$post->post_title.'</a></li>';
                                }
                                echo "</ul>";
                                echo "<p>Wenn nicht, kein Kopfzerbrechen, ich habe noch einige Tips mehr, wie wir sie für Dich finden können:</p></li>";
                        } else {
                                echo "<p><strong>Kein Kopfzerbrechen!</strong> Ich habe einige Tips für Dich, wie Du sie finden kannst:</p>";
                                echo "<ol>";
                        }
                ?>
                        <li>
                                <label for="s"><strong>Suche</strong> danach:</label>
                                <form style="display:inline;" action="<?php bloginfo('siteurl');?>">
                                        <input type="text" value="<?php echo esc_attr($s); ?>" id="s" name="s"/> <input type="submit" value="Search"/>
                                </form>
                        </li>
                        <li>
                                <strong>Wenn Du eine URL eingegeben hast...</strong> stelle sicher, das Sie richtig eingegeben wurde, gRoSsUNDklEinScHrEiBunG, und die Punktation richtig war. Versuche danach die Seite neu zu laden.                                
                        </li>
                        <li>
                                <strong>Besuche einfach</strong> mein <a href="<?php bloginfo('siteurl');?>">Blog</a> (und nehme bitte mit mir Kontakt auf, sodaß ich den Fehler ausmerzen kann).
                        </li>
                </ol>                                                           

        </div>

</div><!-- .entry -->
</section><!-- #content -->
<?php if( ( 'no-sidebars' != pinboard_get_option( 'layout' ) ) && ( 'full-width' != pinboard_get_option( 'layout' ) ) ) : ?>
<?php get_sidebar(); ?>
<?php endif; ?>
</div><!-- #container -->
<?php get_footer(); ?>

Bilderneugenerierung durch ein Plugin

Da eine Neugenerierung der Bildergrößen für das Theme nötig war, entschied ich mich für das Plugin AJAX Thumbnail Rebuild. Das Plugin leistet gute Arbeit und unterliegt vor allem keinen serverseitigen TimeOut. Es bietet die Möglichkeiten alle benötigten Bilder neu zu generieren (thumbnail, medium, large, slider-thumb, blog-thumb ….. teaser-thumb, yarpp-thumbnail), oder sich nur auf die Artikelbilder zu beschränken.

Der nächste Faktor war natürlich die Dateigröße der Bilder.

Verkleinern der Bildgrößen auf der Shell

Ich musste mir in dem Punkt etwas einfallen lassen. Smush.it rühmt sich nur noch mit TimeOut-Fehlern. Die gute Alternative Optimus lässt in der Bezahlversion max 100kb für PNGS und in der freien Version keine PNGs zu. Da mein Blog auf dem Webspace bei All-inkl.com läuft kann ich keine Plugins mit Abhängigkeiten installieren. Also habe ich mit ncftp die letzten Ordner aus dem media-Verzeichnis geholt und per optipng und

for i in *.png; do optipng -o5 -keep -preserve "$i"; done

alle Bilder auf dem Rootserver optimiert und wieder auf das Blog hochgeladen.
Wer keine Backups der Bildateien ($NAME.bak) haben möchte, sollte den Parameter -keep weglassen.

Geschwindigkeit

Performancemessung Got-tty.org am 03032013Laut webpagetest.org hat mir das ganze doch glatt wieder eine Sekunde eingebracht und mein Blog wurde somit in der halbwegs guten Zeit von 5.550s komplett geladen. Das wiederholte Besuchen benötigt eine Zeit von 1.532s und ist für mich noch im Rahmen. Ich muss dazu noch sagen, ich nutze kein Plugin für das Cachen des Blogs, habe aber WordPress 256M zugesprochen. Die First Byte Time sehe ich als Irrelevant und ein CDN brauche ich nicht. Wenn letzteres nötig wäre, zieht das Blog auf einen von mir administrierten Rootserver um.

Populäre Posts/Artikel in der Sidebar

Da ich viele nichtkommentierende Leser habe, sollte bei mir ein Plugin genutzt werden, welches die populären Artikel anhand der Ansicht der Besucher, neudeutsch Views, ausgibt. Ich habe mir sage und schreibe 5 Stück angeschaut und es war mehr als Mist darunter. Ich würde mich sehr freuen, wenn es ein Plugin geben würde, welches per API Piwik einmal die Woche fragt und damit hat es sich. Leider gibt es da keines und alle anderen waren wirklich tolle Showstopper. Eines war so Gut, es hat permanent die Datei admin-ajax.php aus dem Verzeichnis ../wp-admin erfragt und somit eine Passwortabfrage im Browser generiet. Dieses Verzeichnis hat einen Verzeichnisschutz durch den Apachen. Eine Frage in dem Rahmen beantwortete der Entwickler mehr als Laienhaft und ganz Offen, so Jemanden vertraue ich mit seinem Plugin nicht meinen Webspace an.

Vielleicht animiere ich ja auch andere mal ein bisschen den Webspace und daheim das Netzwerk zu säubern, denn nächsten Wochenende ist der Garten dran ツ