Kategorie: WordPress-Snippets

Kommentare und Pings im WordPress-Theme getrennt zählen und anzeigen

Statt alle Reaktionen auf einen Beitrag – also Kommentare, Trackbacks und Pingbacks – gemeinsam in einer Liste anzuzeigen, trenne ich der Übersichtlichkeit halber gerne Kommentare und Pings (Pingbacks und Trackbacks) voneinander. An sich ist das auch nicht sonderlich schwer, es gibt aber ein paar Dinge zu beachten. Kommentare und Pings im WordPress-Theme getrennt zählen und anzeigen weiterlesen

Selective Refresh im Customizer nutzen

Seit WordPress 4.5 gibt es die Möglichkeit, bei einer Änderung im Customizer nur Teile der Vorschau neu zu laden. Damit wird dem Nutzer mindestens das Gefühl gegeben, schneller eine Änderung zu sehen – und in den meisten Fällen wird das nicht nur gefühlt der Fall sein (und außerdem könnte mit dieser Funktion die Customizer-Seite unnötig werden und durch Inline-Bearbeitungsfunktionen ersetzt werden, wie Weston Ruter in seinem Beitrag »Selective Refresh in the Customizer« schreibt). Hier zeige ich euch kurz, wie diese Funktion umgesetzt werden kann. Selective Refresh im Customizer nutzen weiterlesen

Bedingtes Anzeigen und Verstecken von Customizer-Controls via JavaScript

Bei Nutzung des Partial Refresh im Customizer, wodurch nach einer Änderung nur ein Teil der Vorschau nachgeladen wird, funktioniert für diese Einstellungen die Angabe von active_callback nicht mehr – darüber kann per PHP zum Beispiel angegeben werden, dass eine Customizer-Control nur angezeigt wird, wenn eine andere einen bestimmten Wert hat. In diesem Fall muss die bedingte Anzeige über JavaScript gesteuert werden. Bedingtes Anzeigen und Verstecken von Customizer-Controls via JavaScript weiterlesen

Eigenschaften einer bestehenden Customizer-Control ändern

Hier zeige ich euch kurz, wie ihr die Eigenschaften von bestehenden Customizer-Controls ändern könnt – hilfreich für einen kleinen Denkanstoß war dabei ein Gist von Marcio Duarte.

In meinem konkreten Fall wollte ich der vom Core erzeugten Header-Image-Control einen active_callback mitgeben, um sie nur anzuzeigen, wenn der Nutzer auf einer statischen Startseite ist. Um das zu erreichen, braucht es nur eine Zeile Code:

/**
 * Set active callback for the header image control.
 */
$wp_customize->get_control( 'header_image' )->active_callback = 'slug_is_static_front_page';

Entsprechend lassen sich auch die anderen Eigenschaften anpassen – ein paar Beispiele gibt es im oben verlinkten Gist. Der Vollständigkeit halber hier noch die Callback-Funktion:

/**
 * Check if we are on a static front page.
 *
 * @param WP_Customize_Control $control Control object.
 *
 * @return bool
 */
function slug_is_static_front_page( $control ) {
	/**
	 * Return true if is static front page.
	 */
	if ( is_front_page() && is_page() ) {
		return true;
	} else {
		return false;
	}
}

WordPress nachträglich von utf8 auf utf8mb4 umstellen

Beim Update auf WordPress 4.2 wurde der Zeichensatz der Datenbank von utf8 auf utf8mb4 umgestellt (zum Beispiel notwendig für die volle Unterstützung von Emojis), sofern ein paar Voraussetzungen erfüllt waren. Hier zeige ich, wie ihr diese Umstellung manuell vornehmen könnt, wenn ihr bei dem 4.2-Update die Anforderungen noch nicht erfüllt habt. WordPress nachträglich von utf8 auf utf8mb4 umstellen weiterlesen

WordPress-Multisite mit einer Mischung aus Subdomains und Unterverzeichnissen

Bei einer Multisite entscheidet ihr euch ganz am Anfang dafür, ob ihr sie mit Subdomains oder Unterverzeichnissen betreiben möchtet – ein Mix aus beiden Varianten ist nicht ohne Anpassungen möglich. Hier stelle ich euch vor, wie ihr vorgehen müsst, um eine Multisite mit Subdomain- und Unterverzeichnis-Sites zu betreiben. WordPress-Multisite mit einer Mischung aus Subdomains und Unterverzeichnissen weiterlesen

Admin-Notice bei verfügbarem Update von bestimmtem Plugin anzeigen

Für die durch das Plugin German Market erstellten Rechnungen meines Shops nutze ich einen Font den ich nach jedem Plugin-Update erneut integrieren muss, da er nicht standardmäßig in dem Plugin eingebunden ist. Damit ich das nicht (mehr) vergesse, lasse ich mir eine Admin-Notice anzeigen, sobald ein Update für das Plugin verfügbar ist. Das ist nicht besonders schwer und schnell umgesetzt, der komplette Code sieht so aus:

/**
 * Display admin notice so I remember uploading the Clavo font after updating German Market
 */
function fbn_german_market_typography_notice() {
    $update_plugins_transient = get_site_transient( 'update_plugins' );
    if ( $update_plugins_transient->response['woocommerce-german-market/WooCommerce-German-Market.php'] ) {
        add_action( 'all_admin_notices', function () { ?>
            <div class="notice notice-warning">
                <p><strong>Nach dem »German Market«-Update den Clavo-Font für Rechnungen wieder hochladen!</strong></p>
            </div>
        <?php } );
    }
}

add_action( 'admin_init', 'fbn_german_market_typography_notice' );

Ich übergebe an den admin_init-Hook die Funktion fbn_german_market_typography_notice(). Darin wird zunächst der Wert des Site-Transients update_plugins in einer Variable gespeichert – in diesem Transient sind Infos zu Plugin-Updates gespeichert. Wenn nun $update_plugins_transient->response['woocommerce-german-market/WooCommerce-German-Market.php'] vorhanden ist, dann ist ein Update für das Plugin verfügbar.

In diesem Fall wird eine Admin-Notice ausgegeben (ich nutze hier all_admin_notices, damit es in einer Multisite nicht nur im Netzwerk-Admin angezeigt wird) die mich hoffentlich zukünftig daran erinnert, den Font für die Rechnungs-PDF wieder hochzuladen … 🙂

Für andere Plugins ist der Array-Schlüssel natürlich ein anderer. Ihr könnt euch einfach per var_dump( $update_plugins_transient ); den Inhalt des Transients ausgeben lassen, um den richtigen Schlüssel zu finden.

PS: Mehr zu Admin-Notices gibt es im Beitrag »Admin Notices in Plugin UIs« von Caspar Hübinger.