Für Menschen · Seien Sie begeistert und Sie werden begeistern !
WordPress hat mit Version 3.3 die Mediathek verändert - verbessert. Die Restriktionen im Bezug auf die Datei-Typen sind geblieben und man kann auf diese via Hook einwirken. So kann man in der Anwendungen die Datei-Typen einschränken und erweitern. Mittels zweier Hooks ist dies schnell getan und dabei ist noch ein Hinweis in der Oberfläche dabei, der die erlaubten Typen bekannt gibt.

Das folgenden kleine Plugin soll als erste Lösung und dem Verständnis dienen. Dies kann selbstredend auf verschiedene Rollen oder Berechtigungsobjekte ausgedehnt werden, so dass man je nach Rolle verschiedene Typen von Dateien im System hoch laden kann - current_user_can().
Wer sich für die aktuell erlaubten Typen interessiert, läßt sich das Array der ersten Funktion zurück geben oder schaut in die function get_allowed_mime_types() in wp-includes/functions.php.
<?php
/**
* Plugin Name: Restrict mime types
* Plugin URI: http://wpengineer.com/?p=2369
* Description: Restrict list of allowed mime types and file extensions.
* Version: 1.0.0
* License: GPLv3
* Author: Frank Bültge
* Author URI: http://bueltge.de/
*/
// This file is not called from WordPress. We don't like that.
! defined( 'ABSPATH' ) and exit;
// If the function exists this file is called as upload_mimes.
// We don't do anything then.
if ( ! function_exists( 'fb_restrict_mime_types' ) ) {
add_filter( 'upload_mimes', 'fb_restrict_mime_types' );
/**
* Retrun allowed mime types
*
* @see function get_allowed_mime_types in wp-includes/functions.php
* @param array Array of mime types
* @return array Array of mime types keyed by the file extension regex corresponding to those types.
*/
function fb_restrict_mime_types( $mime_types ) {
$mime_types = array(
'pdf' => 'application/pdf',
'doc|docx' => 'application/msword',
);
return $mime_types;
}
}
// If the function exists this file is called as post-upload-ui.
// We don't do anything then.
if ( ! function_exists( 'fb_restrict_mime_types_hint' ) ) {
// add to wp
add_action( 'post-upload-ui', 'fb_restrict_mime_types_hint' );
/**
* Get an Hint about the allowed mime types
*
* @return void
*/
function fb_restrict_mime_types_hint() {
echo '<br />';
_e( 'Accepted MIME types: PDF, DOC/DOCX' );
}
}
bueltge.de [by:ltge.de] wird von Frank Bültge geführt, administriert und gestaltet. Alle Inhalte sind persönlich von mir ausgewählt und erstellt, nach bestem Gewissen und Können, was die Möglichkeit von Fehlern nicht ausschließt.
Das Weblog wird angetrieben von WordPress und aktuell gibt es 980 Beiträge, 18722 Kommentare in 14 Kategorien und 464 Tags.
Das Blog wird liebevoll mit xHTML & CSS in Handarbeit gestaltet. Erstellt mit ♥ zum Befüllen und Erhalten.
Design und Code ist unter Copyright
© 2001 - 2012 bueltge.de [by:ltge.de]
15. Dezember 2011 um 16:06
danke für den snippet
hier noch eine liste für mögliche mime types:
http://www.webmaster-toolkit.com/mime-types.shtml15. Dezember 2011 um 16:09
Ich habe diesen Schnippsel bei mir eingebaut. Ich habe gestern auf die neue WP-Version aktualisiert. Wie sieht es aus, wenn ich das nächste mal automatisch aktualisiere? Überschreibt er die Datei dann wieder, sodass dieser Hack weg ist?
Bei 10 Blogs, wäre das schon ein wenig nervig.
15. Dezember 2011 um 18:03
Wie kann ich die bestehenden Dateitypen erweitern, ohne die komplette Liste neu schreiben zu müssen?
19. Dezember 2011 um 09:11
@Lukas: nein, die bleiben erhalten, wenn du es in einem Plugin hast, diese fast WP in einem Update nicht an.
19. Dezember 2011 um 11:30
@tux.: du kannst das Array einfach um neue Werte erweitern; Beispiel:
$mime_types['bue'] = 'people/bueltge';infb_restrict_mime_types()22. Dezember 2011 um 08:58
Sehr nützlich das mit den Daten-typen
3. Januar 2012 um 21:13
Gibt es eine Möglichkeit, die Dateien im Upload Verzeichnis vor unbefugten Zugriff (sprich externen) zu schützen?
Du hast ja dieses WP-Plugin geschrieben, mit dem man sich einen privaten Blog kreieren kann und nur User mit Account das Blog sehen können. Wenn ich aber die Bilder URL im Upload-Verzeichnis kenne, bspw.
http://example.com/media/2012/01/test.png, dann kann ich das Bild doch trotzdem sehen, obwohl ich keinen Zugriff auf die Blogeinträge habe.Geht das über .htaccess, dass man nur Referern von example.com Zugriff auf die Bilddatei gestattet oder kann man da nix machen?
4. Januar 2012 um 11:42
@Rainer: ja, wir haben dazu ein Plugin; dass kann ich vermitteln; kostet aber. Alternativ schaue dir die Lösung an.
24. Januar 2012 um 22:58
Klasse - endlich wird mit dem Hook kein Mist mehr in WordPress von den Autoren hochgeladen. Die neue Mediathek ist bei WordPress ja wirklich sehr bequem. Allerdings birgt dies leider auch Risiken. Besten Dank dafür.
27. Februar 2012 um 21:06
@Frank: Wieso birgt die neue Mediathek deiner Meinung nach neue Risiken? Die Mediathek wird doch von Version zu Version verbessert und immer wieder Lücken geschlossen.
2. März 2012 um 12:14
@Jonas: es geht nicht um die Mediathek; es geht um Möglichkeiten die Upload-Typen einzuschränken; so dass man nichts hochladen kann, was eine Tür für Hacker o.ä. öffnet.