Kategorie: WordPress-Snippets

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.

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

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' );

ElasticPress: Nur Suchergebnisse anzeigen, die alle Begriffe der Suchanfrage enthalten

Wie im letzten Artikel geschrieben, habe ich seit Kurzem über das ElasticPress-Plugin den Suchserver Elasticsearch im Einsatz. Hier beschreibe ich, wie ihr die von ElasticPress generierte Such-Query so anpassen könnt, dass bei Suchanfragen mit mehreren Begriffen nur Treffer gezeigt werden, bei denen alle Begriffe vorkommen. ElasticPress: Nur Suchergebnisse anzeigen, die alle Begriffe der Suchanfrage enthalten weiterlesen

Bessere Suche und „Related Posts“-Anzeige in WordPress mit ElasticPress

Bei einem Gespräch im deutschsprachigen WordPress-Slack kam vor einiger Zeit die Sprache auf Elasticsearch, womit Suchen und Analysen durchgeführt werden können. Bernhard Kau hat kurz darauf den Beitrag Einrichtung von Elasticsearch in WordPress mit ElasticPress und Heroku geschrieben und gezeigt, wie Elasticsearch relativ einfach in eine WordPress-Installation integriert werden kann. Heute habe ich mich daran gemacht, die WordPress-Suche und die Anzeige von weiteren Artikeln in der Einzelansicht von Beiträgen auf Elasticsearch umzustellen. Bessere Suche und „Related Posts“-Anzeige in WordPress mit ElasticPress weiterlesen

Eine normale PHP-Seite zum oEmbed-Inhalt für WordPress machen

Für die Meetup-Vorschau auf de.wordpress.org, die automatisch die nächsten sechs Meetups von wpmeetups.de anzeigt, musste eine Lösung gefunden werden, wie eine normale PHP-Seite auf einer WordPress-Website eingebettet werden kann. Dabei wurde sich der neuen oEmbed-Fähigkeit von WordPress bedient, die mit 4.4 eingeführt wurde. Eine normale PHP-Seite zum oEmbed-Inhalt für WordPress machen weiterlesen

Ein Social-Icons-Menü mit SVGs in WordPress umsetzen

Für mein neuestes WordPress-Theme habe ich mich damit auseinandergesetzt, wie ein normales WordPress-Menü, das mit Social-Media-Links gefüllt ist, im Frontend mit SVGs statt Icons eines Icon Font angezeigt werden kann. Wie meine Lösung dazu aussieht, zeige ich euch hier. Ein Social-Icons-Menü mit SVGs in WordPress umsetzen weiterlesen