Verbesserte Bilder-Navigation

Ein großartiges Stück Code, welches ich gerade in  Automattic’s _s Theme gefunden habe:

/**
 * Filter in a link to a content ID attribute for the next/previous image links on image attachment pages
 *
 * @since _s 1.0
 */
function _s_enhanced_image_navigation( $url, $id ) {
    if ( ! is_attachment() && ! wp_attachment_is_image( $id ) )
        return $url;

    $image = get_post( $id );
    if ( ! empty( $image->post_parent ) && $image->post_parent != $id )
        $url .= '#main';

    return $url;
}
add_filter( 'attachment_link', '_s_enhanced_image_navigation', 10, 2 );

Es fügt Links zu Bildanhängen das #main Attribut hinzu, sodass der Besucher sofort den Anhang sieht und nicht runterscollen muss. Besonders nützlich, wenn man sich durch Galerien klicken möchte!

WordPress Child Theme: @import

Es gilt als Best Practice für schnelle Webseiten auf @import Anweisungen in Stylesheets zu verzichten, weil sie zu Ladeverzögerungen in Internet Explorer führen können. Besser sind in diesem Zusammenhang <link> Elemente.

Um das in Child Themes umzusetzen dupliziere ich gerne die header.php Datei des Elternthemes und „räume auf“. Bei TwentyEleven beispielsweise missfällt mir wirklich wie es das <title> Element zusammenbaut und JavaScript Dateien im Template anhängt.

Fehlermeldungen mit WordPress Settings API

WordPress‘ Settings API macht es einem recht einfach, im Adminbereich Fehlermeldungen und/oder Hinweise anzuzeigen.

Um WordPress wissen zu lassen, dass du eine Nachricht anzeigen willst, rufe die add_settings_error() Funktion auf:

add_settings_error( $setting, $code, $message, $type );

Fehlermeldung im WordPress Admin
Diese Funktion fügt die Nachricht zu einer Schlange hinzu, die mit dem Slug in Verbindung steht, welcher mit dem ersten Parameter übergeben wird. Man kann mehrere Nachrichten einem Slug zuordnen, die dann untereinander angezeigt werden. Der zweite Parameter spezifiziert einen eindeutigen Fehlercode, welcher dem id Attribut im <div>-Kontainer hinzugefügt wird (also das escapen bitte nicht vergessen). Dann wird die eigentliche Nachricht übergeben. Und mit dem letzten Parameter kann bestimmt werden, ob es sich um eine Fehlermeldung oder einen Hinweis handelt. Der Standard ist 'error'.

Dann lasst uns einen Hinweis hinzufügen:

add_settings_error(
    'unique_identifyer',
    esc_attr('settings_updated'),
    __('Settings saved.'),
    'updated'
);

Bei jedem Laden einer Adminseite wird der admin_notices Hook aufgerufen und gibt Plugin- und Themeautoren die Möglichkeit ihre Nachrichten hinzuzufügen und anzuzeigen. Und so geht’s:

function unique_identifyer_admin_notices() {
    settings_errors( 'unique_identifyer' );
}
add_action( 'admin_notices', 'unique_identifyer_admin_notices' );

Alle Parameter der settings_error() Funktion sind zwar optional, aber nachdem man warscheinlich nur seine registrierten Nachrichten anzeigen lassen möchte, sollte immer der Slug mit übergeben werden, welcher beim Hinzufügen der Nachricht angegeben wurde.

Und das ist auch schon alles! Zwei einfache Funktionen um Fehlermeldungen und Hinweise im Adminbereich hinzuzufügen und anzuzeigen. Probiere es doch mal aus und lass mich wissen was du denkst!

Hochgeladene WordPress Kopfzeile speichern

Die Twenty Ten Header Auswahl
Die Twenty Ten Header Auswahl
Die neue Möglichkeit der Headerverwaltung im WordPress Adminbereich bietet eine recht komfortable Lösung, dieses Seitenelement zu ändern, ohne im Code aktiv werden zu müssen. Das neue Default Theme Twenty Ten zum Beispiel, arbeitet schon damit. Es hat eine Reihe von vorinstallierten Headern aus denen man sich ein geeignetes auswählen kann und bietet darüberhinaus noch die Möglichkeit eigene Header hochzuladen und ins richtige Format zu setzen. Allerdings ist das hochgeladen Bild nur solange verwendbar wie noch kein neuer Header wieder hochgeladen ist. Wer also über Ostern einen Hasen im Header haben moöhte, muss zu Pfingsten wieder seinen alten Header hochladen. Um das zu Umgehen und die Freiheit zu haben aus allen hochgeladenen Headern auswählen zu können, habe ich das folgende Script geschrieben.