WordPress 3.5: oEmbed, Editorhöhe — Weitere Einstellungen von der Oberfläche entfernt

Eine der Philospophien von WordPress lautet „Decisions not Options“ — Treffe Entscheidungen, keine Möglichkeiten.

When making decisions these are the users we consider first. A great example of this consideration is software options. Every time you give a user an option, you are asking them to make a decision. When a user doesn’t care or understand the option this ultimately leads to frustration. As developers we sometimes feel that providing options for everything is a good thing, you can never have too many choices, right? Ultimately these choices end up being technical ones, choices that the average end user has no interest in. It’s our duty as developers to make smart design decisions and avoid putting the weight of technical choices on our end users.

WordPress Philosophy

Continue reading WordPress 3.5: oEmbed, Editorhöhe — Weitere Einstellungen von der Oberfläche entfernt

WordPress 3.5: XML-RPC Schnittstelle wird standardmäßig für alle Seiten aktiviert

Die XML-RPC Schnittstelle in WordPress dient dazu, um WordPress mit externen Programmen verwalten zu können. Zum Beispiel um Artikel zu veröffentlichen oder Kommentare zu bearbeiten. Zu den Programmen gehören unter anderem die mobilen Anwendungen für iOS, Android und Co, aber auch der Windows Live Writer.

Schnittstellen sind immer mit Vorsicht zu genießen, denn bei schlechter Umsetzung können sie eine optimale Angriffsfläche für Angriffe mit bösen Absichten bieten.
Vor WordPress 3.5 gab es deshalb die Möglichkeit die Schnittstelle einfach nach Belieben zu aktivieren bzw. deaktivieren. Deaktiviert war sie aber standardmäßig.

Diese Einstellungen wird es in WordPress 3.5 nicht mehr geben.

In Laufe der Zeit wurde die XML-RPC Schnittstelle immer weiter ausgebaut und verbessert. Dies geschah hauptsächlich in WordPress 3.4.
Aus diesem Grund wird die XML-RPC Schnittstelle ab WordPress 3.5 standardmäßig aktiviert sein. Für neue Installationen sowie auch bestehende Seiten.
Gleichzeitig wurde die entsprechende Einstellung im User Interface entfernt.

XML-RPC Schnittstelle in WordPress 3.5 deaktivieren

Wie nun die Schnittstelle ohne UI deaktivieren? Per Filter.
Zum Deaktivieren wurde ein neuer Filter names xmlrpc_enabled angelegt. Daraus ergibt sich folgender Code:

/**
 * Deaktiviert die XML-RPC Schnittstelle ab WordPress 3.5.
 */
add_filter( 'xmlrpc_enabled', '__return_false' );

Am Rande: Atom Publishing Protocol

Neben dem XML-RPC Protokoll gab es in WordPress noch das Atom Publishing Protocol. Diese Schnittstelle wurde in WordPress 3.5 entfernt und in ein Plugin ausgelagert.

Zum Thema

Titelbild von Matt.

WordPress 3.5: Willkommen Backbone.js und Underscore.js; Adios Prototype und script.aculo.us

Während des gestrigen Entwickler Chats waren die JavaScript Bibliotheken in WordPress großes Thema.

Zum einem wurde jQuery 1.8, welches mittlerweile 3 Wochen auf dem Markt ist, für den Core abgesegnet. Zudem wurde auch jQuery UI auf die stabile Version 1.8.23 aktualisiert.

Backbone.js und Underscore.js

Backbone.js ist ein Model-View-Controller (MVC) Framework für JavaScript. Die Bibliotheken bieten eine solide Basis für objektorientierte Programmierung und simulieren etliche Hilfsfunktionen und eine erweiterbare Klassenhierarchie.
Dieser Vorteil ermöglicht das organisieren der Daten und die saubere Trennung zwischen Daten und Logik.
Mit der integrierten Template-Engine kann das HTML-Markup und die Logik sauber voneinander getrennt werden.

With Backbone, you represent your data as Models, which can be created, validated, destroyed, and saved to the server. Whenever a UI action causes an attribute of a model to change, the model triggers a “change” event; all the Views that display the model’s state can be notified of the change, so that they are able to respond accordingly, re-rendering themselves with the new information. In a finished Backbone app, you don’t have to write the glue code that looks into the DOM to find an element with a specific id, and update the HTML manually — when the model changes, the views simply update themselves.

Backbone.js: Introduction

Underscore.js verspricht hingegen die Unterstützung von funktionalen Programmierkonstrukten für den Umgang mit Arrays, Collections und Objekten, wie zum Beispiel each, map, find, filter oder toArray.

Underscore is a utility-belt library for JavaScript that provides a lot of the functional programming support that you would expect in Prototype.js (or Ruby), but without extending any of the built-in JavaScript objects. It’s the tie to go along with jQuery’s tux, and Backbone.js’s suspenders.

Underscore provides 60-odd functions that support both the usual functional suspects as well as more specialized helpers. It delegates to built-in functions, if present, so modern browsers will use the native implementations.

Underscore.js: Introduction

Was will WordPress mit Backbone.js und Underscore.js?

Beide Projekte sind eine optimale Grundlage für sogenannte Single-Page Webanwendungen.
Eine solche Anwendungen findet man auch jetzt schon im WordPress Core.

WordPress Theme Customizer

Es ist der Theme Customizer (Live-Vorschau des Themes), der mit WordPress 3.4 eingeführt wurde.

In WordPress 3.5 wird es weitere Projekte geben, die auf diese Art umgesetzt werden sollen.
Dazu zählt der neue Media-Workflow samt den Dialogfenster, sowie die Umsetzung von Aktionen und Filtern für JavaScript, quasi add_action() bzw. add_filter() für JavaScript.

Den Grafiken folgen Prototype und script.aculo.us

Wie schon berichtet, hat WordPress sich von ungenutzten Grafiken befreit. Jetzt hat es auch die beiden JavaScript Bibliotheken/Frameworks Prototype und script.aculo.us getroffen. Kein großer Verlust, denn sie wurden schon länger nicht mehr genutzt.

Fallback für Plugins/Themes: Falls doch noch ein Plugin/Theme existiert, welches von den beiden Bibliotheken abhängig ist, werden die benötigten Skripte automatisch von der Google API eingebunden. Guter Schachzug meiner Meinung nach.

Ausschnitt aus der Funktion wp_default_scripts():

<?php
	// WordPress no longer uses or bundles Prototype or script.aculo.us. These are now pulled from an external source.
	$scripts->add( 'prototype', '//ajax.googleapis.com/ajax/libs/prototype/1.7.1.0/prototype.js', array(), '1.7.1');
	$scripts->add( 'scriptaculous-root', '//ajax.googleapis.com/ajax/libs/scriptaculous/1.9.0/scriptaculous.js', array('prototype'), '1.9.0');
	$scripts->add( 'scriptaculous-builder', '//ajax.googleapis.com/ajax/libs/scriptaculous/1.9.0/builder.js', array('scriptaculous-root'), '1.9.0');
	$scripts->add( 'scriptaculous-dragdrop', '//ajax.googleapis.com/ajax/libs/scriptaculous/1.9.0/dragdrop.js', array('scriptaculous-builder', 'scriptaculous-effects'), '1.9.0');
	$scripts->add( 'scriptaculous-effects', '//ajax.googleapis.com/ajax/libs/scriptaculous/1.9.0/effects.js', array('scriptaculous-root'), '1.9.0');
	$scripts->add( 'scriptaculous-slider', '//ajax.googleapis.com/ajax/libs/scriptaculous/1.9.0/slider.js', array('scriptaculous-effects'), '1.9.0');
	$scripts->add( 'scriptaculous-sound', '//ajax.googleapis.com/ajax/libs/scriptaculous/1.9.0/sound.js', array( 'scriptaculous-root' ), '1.9.0' );
	$scripts->add( 'scriptaculous-controls', '//ajax.googleapis.com/ajax/libs/scriptaculous/1.9.0/controls.js', array('scriptaculous-root'), '1.9.0');
	$scripts->add( 'scriptaculous', false, array('scriptaculous-dragdrop', 'scriptaculous-slider', 'scriptaculous-controls') );

Nebenbei: min.css/min.js für komprimierte Stylesheets/Skripte

Bisher wurden die unkomprimierte Stylesheets mit der Endung .dev.css kenntlich gemacht, analog bei den Skripten .dev.js.
WordPress 3.5 geht nun die typische .min Konvention ein, das heißt: Komprimierte Dateien bekommen die Endung .min.css/.min.js und die Unkomprimierten haben keinen Suffix mehr.

Vor WordPress 3.4:
Entwicklerversion: dateiname.dev.css
Komprimierte Version: dateiname.css

Mit WordPress 3.5:
Entwicklerversion: dateiname.css
Komprimierte Version: dateiname.min.css

Zum Thema

WordPress 3.5: Erste Wireframes für die neuen Medien-Dialogfenster

Lange ist es schon geplant und doch wurde es immer vor sich hin geschoben. Mit WordPress 3.5 wird das Thema Medien endlich angefasst. Und das nicht zu knapp:

  • Mehrere Gallerien pro Artikel
  • Medien-Bearbeitung mit der standmäßigen Post UI vereinen (d.h. Taxonomy UIs, Slug Bearbeitung, Extrafelder,…)
  • Medien Thickbox-Dialoge trennen und in einzelne Dialogfenster aufteilen

Continue reading WordPress 3.5: Erste Wireframes für die neuen Medien-Dialogfenster