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.

Lazy-Loading von Bildern in einem Masonry-Grid

Lazy-Loading wird die Technik genannt, bei der Bilder erst nachträglich geladen werden, wenn sie in den sichtbaren Bereich kommen. So kann die Ladezeit einer Website verringert werden. Wenn diese Technik mit einem Masonry-Grid (Kachel-Layout) zusammentrifft, kann es zu Problemen kommen, da die Bilder bei der Berechnung der Kachelpositionen noch nicht geladen sind. Wie ihr das lösen könnt, zeige ich euch hier. Lazy-Loading von Bildern in einem Masonry-Grid weiterlesen

Automatische Updates für WordPress-Themes, die nicht im Theme-Verzeichnis sind

Für Themes aus dem WordPress.org-Verzeichnis können Updates automatisch installiert werden, wenn eine neue Version verfügbar ist. Hier zeige ich euch, wie ihr dieses Verhalten für Themes umsetzen könnt, die sich nicht in dem Verzeichnis befinden. Automatische Updates für WordPress-Themes, die nicht im Theme-Verzeichnis sind weiterlesen

robots.txt für bestimmte Sites einer Multisite anpassen

Die robots.txt einer WordPress-Site wird normalerweise dynamisch generiert. Um die in einer normalen Einzelinstallation zu überschreiben, kann einfach eine statische robots.txt erstellt und auf den Server geladen werden – in einer Multisite würde diese Datei dann aber für alle Seiten gelten, was nicht unbedingt gewünscht ist. Dieser Artikel zeigt euch, wie ihr die robots.txt für einzelne Sites der Multiste anpassen könnt. robots.txt für bestimmte Sites einer Multisite anpassen weiterlesen

WordPress-Wochenrückblick KW 3: Customization in 2017 und mehr

Das Customization-Team hat sich Gedanken dazu gemacht, welche Probleme in diesem Jahr angegangen werden können – sowohl kleinere Probleme für die ersten paar Monate, als auch größere Projekte für den Rest des Jahres. Außerdem wurden Punkte festgehalten, die Ende 2017 möglich sein sollen. WordPress-Wochenrückblick KW 3: Customization in 2017 und mehr weiterlesen

Unabhängig von Steuern immer denselben Endpreis in WooCommerce

Bei meinem kleinen Online-Shop muss ich im Endpreis für Käufer aus der EU den jeweils in ihrem Land gültigen Mehrwertsteuersatz ausweisen. Bei Käufern aus den USA beispielsweise wird aber keine Mehrwertsteuer ausgewiesen. Wenn ich nun in WooCommerce einen Preis von 15 Euro bestimme und einstelle, dass ich Preise inklusive Steuern angebe, dann ist das Standardverhalten wie folgt:

Kunden aus einem Land, für das ein Steuersatz hinterlegt wurde, zahlen 15 Euro inklusive ihres jeweilgen Mehrwertsteuersatzes. Kunden aus Ländern, für die kein Steuersatz hinterlegt wurde, zahlen weniger. Hier wird der Preis glaube ich um den Steuersatz des Shop-Basislands verringert (da bin ich mir aber nicht ganz sicher). Das gewünschte Verhalten ist aber, dass auch diese Kunden 15 Euro bezahlen, nur halt ohne Mehrwertsteuer.

Im WooCommerce-Wiki auf GitHub gibt es dazu eine ziemlich einfache Lösung. Ihr müsst lediglich folgende Zeile in euer Theme oder ein Plugin schreiben:

add_filter( 'woocommerce_adjust_non_base_location_prices', '__return_false' );