Archiv der Kategorie: Webentwicklung

Veröffentlichungsdatum in Nibbleblog nachträglich ändern

Wie kann man das Veröffentlichungsdatum eines Artikels im Blogsystem Nibbleblog nachträglich ändern? Diese Frage ist bei einem meiner Leser aufgetreten. Der Grund, warum das Datum überhaupt geändert werden soll, soll uns hier nicht interessieren, sondern allein die Frage, wie so eine Änderung zu bewerkstelligen ist.

Nibbleblog zeigt ja im Frontend das Veröffentlichungsdatum der Blogbeiträge an. Auch im Backend sieht man dieses Datum. Nur – wie kann man dieses nachträglich ändern? Denn eine Einstellungsmöglichkeit ist zunächst nicht vorhanden, das heißt, standardmäßig nicht voreingestellt (die mir vorliegende Version ist Nibbleblog 4.0.5 vom September 2015).

Nun, man muss dazu eine bestimmte Einstellung ändern. Man setzt ein Häkchen unter Dashboard > Einstellungen > Erweiterte Blogoptionen > Erweiterte Optionen für Posts. Fertig, das war’s. Jetzt erscheinen im Bearbeitungsmodus eines Blogartikels zusätzliche Optionslisten für das einzustellende Jahr, den Monat usw.

Nibbleblog: Erweiterte Otionen für Posts (1)

Nibbleblog: Erweiterte Otionen für Posts (2)

Kann man also auch Artikel vorfertigen, sodass sie erst zu einem späteren Zeitpunkt veröffentlicht werden? Die Antwort lautet: Nein. Denn erstens werden die Optionen zum Einstellen des Veröffentlichungszeitpunkts erst dann angezeigt, wenn ein als Entwurf gespeicherter oder bereits veröffentlichter Artikel erneut zum Bearbeiten geöffnet wird. Und zweitens nützt es auch gar nichts, das Datum vorzuverlegen, da der Artikel trotzdem gleich dann veröffentlicht wird, wenn man auf Veröffentlichen klickt. Das empfinde ich als Manko, weil ich es zum Beispiel von WordPress her gewohnt bin, mehrere Artikel auch schon mal an einem Stück zu schreiben, aber erst zeitversetzt veröffentlichen zu lassen.

Einbruchsversuche in WordPress-Blogs

In letzter Zeit (September 2015) bemerke ich wieder verstärkt Einbruchsversuche (Brute-Force-Attacken) in eigene oder von mir betreute WordPress-Blogs von unzähligen IP-Adressbereichen weltweit.

Die Benachrichtigungen bekam ich über das installierte Plugin Login Security Solution. Das Seltsame ist nur, dass ich per .htaccess-Datei den Zugriff auf die Datei wp-login.php auf den von meinem Internet-Service-Provider vergebenen IP-Adressbereich beschränkt habe (im Beispiel durch x symbolisiert):

# --- Adminbereich absichern ---
<Files wp-login.php>
Order Deny,Allow
Deny from all
Allow from xx.xxx.
</Files>

Also sollte doch ein Bot, der von einem anderen IP-Bereich aus angreift, gar nicht bis zur Login-Datei gelangt sein dürfen. Falls jemand eine Idee oder einen Hinweis hat, wäre es nett, dies in den Kommentarbereich zu schreiben.

Ich habe jetzt eine zusätzliche Sicherheit in die .htaccess-Datei geschrieben (wobei für domainname natürlich der richtige, eigene Domainname einzutragen ist):

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_METHOD} POST
RewriteCond %{HTTP_REFERER} !^http://(.*)?domainname\.de [NC]
RewriteCond %{REQUEST_URI} ^(.*)?wp-login\.php(.*)$ [OR]
RewriteCond %{REQUEST_URI} ^(.*)?wp-admin$
RewriteRule ^(.*)$ - [F]
</IfModule>

Hoffen wir mal, dass dies bewirkt, dass nun kein Bot mehr von entfernten Domains aus die Blogs angreifen kann.

Eine weitere Möglichkeit wäre folgender Code (die vielen x stehen auch hier für die eigene IP-Adresse, von der aus man sich in sein Blog einloggt):

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_URI} ^(.*)?wp-login\.php(.*)$ [OR]
RewriteCond %{REQUEST_URI} ^(.*)?wp-admin$
RewriteCond %{REMOTE_ADDR} !^xxx\.xxx\.xxx\.xxx$
RewriteRule ^(.*)$ - [R=403,L]
</IfModule>

Und was man noch darüber hinaus tun könnte, wäre, den Adminbereich durch eine weitere Authentifizierung abzusichern.

PHP 7 in der Beta-Phase

Eine PHP-Version 6 war mal geplant, ist aber nie erschienen. Nun geht es nach den Fünfer-Versionen mit Zweig 7 weiter. PHP 7 befindet sich seit 2014 in der Entwicklung und liegt nun bereits als Beta 2 vor (Stand: Ende Juli 2015). Es soll eine drastisch erhöhte Ausführungs-Geschwindigkeit gegenüber 5.6 bringen, nämlich eine bis zu doppelt so hohe. Außerdem wurde alter Müll rausgeschmissen, es gibt neue Operatoren und einige andere Verbesserungen. Zum Testen kann man sich PHP 7.0.0 Beta 2 herunterladen, sogar schon als Windows-Binary, aber man sollte es auf keinen Fall schon in einer Produktivumgebung einsetzen.

EverEdit, ein Texteditor für Programmierer und Webautoren

EverEdit ist ein Texteditor für das Windows-Betriebssystem, der sich an Programmierer und Webautoren richtet. Er bietet Syntax-Hervorhebung und eine Codebibliothek bzw. Codeschnippsel für HTML, CSS und verschiedene Programmiersprachen, zum Beispiel C/C++, Perl, PHP, Java, JavaScript, Python und Rails.

EverEdit
Bild: © everedit.net

Die Oberfläche lässt sich über Vorlagen an den eigenen Geschmack anpassen, und natürlich kann man Schriftart, Schriftgröße und anzuzeigende Leisten und Werkzeuge einstellen.

Was mir persönlich immer wichtig ist:

  • Klickt man auf ein öffnendes HTML-Tag, wird es zusammen mit dem schließenden markiert, ebenfalls werden Klammerpaare markiert.
  • Codeblöcke lassen sich zusammenfalten, sodass man bei längeren Quelltexten den Überblick behält.
  • Mit Hilfe von Snippets lassen sich längere Codepassagen, die öfters benötigt werden, abspeichern und wiederverwenden.

Das können viele andere Texteditoren auch, aber EverEdit bietet einige Besonderheiten:

  • Durch sehr lange Quellcodes lässt sich über eine verkleinerte Ansicht rechts oben im Fenster schnell scrollen.
  • Es lassen sich zwei Dateien miteinander vergleichen und so zum Beispiel Unterschiede einer älteren und einer neueren Version leicht ermitteln.
  • Die Statusleiste bietet neben verschiedenen Informationen auch die Möglichkeit, direkt zu einer bestimmten Zeile zu springen, die Syntax-Hervorhebung zu ändern, die Tabulator-Weite zu ändern und anderes.
  • In einer vertikalen Leiste im rechten Fensterbereich kann man, unabhängig von der generellen Einstellung, die Textgröße vergrößern oder verkleinern.

Gelungen ist auch die Vorschau von HTML-Dateien im internen Browser. Und für Markdown gibt es ebenfalls eine eingebaute Vorschau.

EverEdit: Markdown-Vorschau
Bild: Screenshot von EverEdit

Dies sind nur einige Features, und das Programm ist damit noch längst nicht vollständig beschrieben. Es kann sich aber jeder Windows-Benutzer selbst ein Urteil über die Software bilden, denn man kann sie zum Testen für 30 Tage herunterladen. Das Programm ist erhältlich in 32 und 64 Bit, außerdem jeweils zum Installieren oder als portable Version. Leider ist die Programmoberfläche nicht in deutscher Sprache, sondern wahlweise in Englisch, Französisch, Japanisch und Chinesisch.

Der Preis liegt bei 35 $. Das ist für eine lebenslange Lizenz nicht viel, und es sollen bei neuen Programmversionen keinerlei Upgrade-Gebühren fällig werden.

Ein solcher universeller Editor ist eine feine Sache, wenn man oft in vielen verschiedenen Sprachen programmiert. Wenn man aber vorwiegend in nur einer Sprache entwickelt, zum Beispiel in PHP, empfiehlt sich eher ein spezialisierter Editor.

Witziges Promo-Video für den Texteditor Atom

Atom 1.0 ist ein konfigurierbarer und erweiterbarer Texteditor zum Programmieren für OS X, Windows 7 und 8, RedHat Linux und Ubuntu Linux, der auf JavaScript basiert. Er ist quelloffen und steht unter der MIT-Lizenz. Ich habe mir die Windows-Version heruntergeladen, bin aber noch nicht zum Testen gekommen.

Atom-Editor
Illustration von der Website https://atom.io

Witzig finde ich jedenfalls ein Promotion-Video, das den Editor vorstellt. Dieser wird zwar in den Texten als besonders modern bezeichnet – das Video allerdings ist extra auf Retro gemacht. Es spielt in den sechziger Jahren des letzten Jahrhunderts. Die Farben, die Hintergrundmusik, der Sprecher – alles ist stimmig. Gut gemacht!

Man findet das Video auf der Atom-Website, kann es sich aber auch auf YouTube ansehen.

Atom-Editor
Screenshot aus dem Video Introducing Atom 1.0! auf https://atom.io

Das fehlende zweite Argument für wpdb::prepare()

Für eine Kunden-Website mit WordPress-Unterbau hatte ich einmal eine kleine Daten­bank­anwendung gebaut: Die Pfade zu den Logos der angeschlossenen Mitgliedsunternehmen wurden automatisch aus den Datensätzen einer Datenbanktabelle ausgelesen und an eine JavaScript-Slideshow weitergereicht. Bei einer Änderung eines Firmenlogos oder bei neu hinzugekommenen oder ausgeschiedenen Unternehmen wird ja sowieso die Datenbank geändert, und nun muss man nicht auch noch von Hand die Diaschau pflegen.

Das klappte auch lange Zeit sehr gut, aber vor einiger Zeit erschien eine Fehlermeldung über der Diaschau: Warning: Missing argument 2 for wpdb::prepare(), called in […]. In WordPress-Versionen ab 3.5 benötigt das $wpdb-Objekt zwei Argumente, vorher hatte eines genügt. Genauer gesagt: im Fall, dass eine WHERE-Klausel gesetzt wurde, werden zwei Argumente benötigt; aber offensichtlich auch, wenn man ORDER BY verwendet. Da es in diesem Fall kein sinnvolles zweites Argument geben kann, setzte ich NULL dahinter, und das Problem war erledigt.

global $wpdb;
$wpdb->show_errors();
$mitglieder = $wpdb->get_results (
    $wpdb->prepare (
        "SELECT logoundinfo
        FROM [Tabelle]
        ORDER BY firmenname ASC", NULL
    )
);

Genauere Angaben zur Verwendung der wpdb-Klasse findet man im sogenannten WordPress-Codex, also der Code-Referenz.

WordPress: Emojis loswerden

Als ich kürzlich in den WordPress-Quelltext einer Kunden-Website schaute, wunderte ich mich über den aufgeblähten Kopfbereich der untersuchten HTML-Datei. Da war ein JavaScript-Code, den ich nicht kannte und der ursprünglich nicht dort gewesen war, und zusätzlich gab es noch ein paar CSS-Angaben. Der Begriff wpemojiSettings fiel mir auf, und ich forschte erst mal nach, was ein Emoji ist. Nun, es ist ein Ideogramm, ähnlich wie ein Smiley oder Emoticon – der Begriff Emoji ist aber weiter gefasst und nicht auf Emotionen beschränkt.

Da ich den Quellcode gern schlank halte, aus Geschwindigkeitsgründen auf alles Überflüssige verzichten möchte und nicht zuletzt der Meinung bin, dass man im geschäftlichen Bereich ganz gut ohne alberne Bildschriftzeichen auskommen kann, stand die zweiteilige große Frage im Raum: »Wie ist der Mist da hinein gekommen und wie werde ich ihn wieder los?«

Die Antwort fand ich auf ehtio.de: Die Emojis kamen mit dem WordPress-Update 4.2, und loswerden kann man sie durch ein wenig Code in der Datei functions.php. Danke an Tim Ehling für seinen Blogartikel und die elegante Lösung!

Markdown-Parser für PHP

PHP Markdown von Michel Fortin ist eine Bibliothek für Entwickler. Sie enthält einen PHP-Markdown-Parser, der auch mit Markdown Extra umzugehen weiß. Im Ursprung war das Programm eine Portierung des Markdown-Tools von John Gruber, und zwar von Perl nach PHP.

Die aktuelle Version (Stand: März 2015) setzt mindestens PHP 5.3 voraus. Ich habe diese Bibliothek bzw. diesen Parser ausprobiert und muss sagen: läuft! Sowohl auf dem Windows-PC als auch auf dem Linux-Webserver. Eine Installation ist nicht erforderlich, man entpackt einfach die ZIP-Datei. Die Verwendung ist einfach, ich bin auf Anhieb gut zurecht gekommen.

CSS-Klassen des WordPress-Menüs abspecken

Ich versuche immer, meine HTML- und CSS-Quellcodes schlank zu halten. Erstens, weil man dann bei späteren Bearbeitungen besser durchblickt, und zweitens, weil Suchmaschinen es lieben, wenn Webseiten so beschaffen sind, dass sie deutlich mehr echten Inhalt als Layout-Angaben beinhalten.

Zum Beispiel trägt das benutzerdefinierte Menü von WordPress zu viel Ballast mit sich. CSS-Klassen, die zwar im Quelltext aufgeführt sind, aber gar nicht benötigt werden, blähen Webseiten unnötig auf und sollten entfernt werden. Was kann man tun?

Wie so oft liegt die Lösung darin, Code in die Datei functions.php, die man im Theme-Ordner findet, einzufügen. Aber wie? Das erfährt man von Monika in ihrem Blog texto.de. Da es in deutscher Sprache ist, schlage ich vor, bei Interesse ihren sehr gut erklärten Artikel HTML output von wp_nav_menu verringern zu lesen.

WordPress: Fehlender Home-Link in Navigation

In aller Regel wird man, wenn man ein WordPress-Blog erstellt, keinen Link zur Startseite im Navigationsmenü vorfinden. Man kann aber einen dorthin bekommen.

In dieser Kurzanleitung fangen wir mal ganz bei Null an und basteln uns eine Navigation selbst. Falls sie in dieser Form schon im Theme vorhanden ist, können die Punkte 1 bis 3 übersprungen werden.

Davon ausgegangen, dass es sich sich um ein selbst gehostetes WordPress handelt (also nicht um ein bei WordPress.com eingerichtetes) und dass wir natürlich FTP-Zugriff zum Webserver haben, dann sind folgende Schritte zu unternehmen:

  1. Menü-Funktion hinzufügen

    Um ein benutzerdefiniertes Menü zu ermöglichen, das dann übers Dashboard konfiguriert werden kann, folgenden Code der Datei functions.php im Theme-Ordner hinzufügen:

    add_action( 'init', 'my_custom_menus' );
     
    function my_custom_menus() {
        register_nav_menus(
            array(
                'primary-menu' => __( 'Primary Menu' ),
                'secondary-menu' => __( 'Secondary Menu' )
            )
        );
    }

    In diesem Fall wollen wir zwei Navigationsmenüs haben, eine Hauptnavigation und eine untergeordnete.

  2. Template-Datei modifizieren

    Unser Theme müssen wir jetzt mit den Navigationsmenüs ausstatten; dafür fügen wir folgenden Code ein, im Fall des Hauptmenüs wohl am ehesten in die Template-Datei header.php:
    <?php wp_nav_menu( array( 'theme_location' => 'primary-menu', 'menu_class' => 'primary', 'fallback_cb' => '') ); ?>.
    Mit dem Submenü verfahren wir ähnlich. – In unsere CSS-Datei können wir jetzt die Klasse primary-menu einfügen, um das Navigationsmenü zu gestalten. Die Fallback-Möglichkeit ist für den Fall gedacht, dass es überhaupt kein Menü gibt (weil zum Beispiel gar keine Subnavigation benötigt wird), dann wird nichts angezeigt.

  3. Menü im Dashboard erstellen

    Im Admin-Dashboard der WordPress-Installation klickt man jetzt auf Design > Menüs, wo man jetzt den Menübaukasten sieht. Dort kann man seine Navigationsmenüs auf einfache Weise konfigurieren.

  4. Homepage-Link im Navigationsmenü anzeigen

    Dumm ist nur, dass die Homepage (die Startseite) dennoch nicht in unserer Navigationsleiste angezeigt wird bzw. nicht im Menübaukasten als Menüpunkt erscheint. Auch hier liegt die Lösung darin, dass man die Datei functions.php im Theme-Ordner um etwas Code erweitern muss:

    function home_page_menu_args( $args ) {
        $args['show_home'] = true;
        return $args;
    }
    add_filter( 'wp_page_menu_args', 'home_page_menu_args' );

    Sobald dieser Code eingefügt worden ist, sollte das dazu führen, dass »Home« als Option unter dem »Seiten«-Widget auf der Menü-Verwaltungs-Seite erscheint, sodass man jetzt per Klick entscheiden kann, ob die Startseiten in der Navigation angezeigt werden soll oder nicht.

Quellen:
Box Model Junkie
WPBeginner