Sidebar
ein-/ausblenden

Einschränken der Daten-typen im WordPress Upload

Plugin für WordPress SEO

Anzeige

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.

Screenshot Example for restrive the mime type

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.

Screenshot for Hint about allowed Mime Types


<?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&uuml;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' );
	}
}

9 Kommentare zu „Einschränken der Daten-typen im WordPress Upload“

  1. 1
    Kommentar von Markus

    danke für den snippet

    hier noch eine liste für mögliche mime types:
    http://www.webmaster-toolkit.com/mime-types.shtml

  2. 2
    Kommentar von Lukas

    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.

  3. 3
    Kommentar von tux.

    Wie kann ich die bestehenden Dateitypen erweitern, ohne die komplette Liste neu schreiben zu müssen?

  4. 4
    Kommentar von Frank Bültge

    @Lukas: nein, die bleiben erhalten, wenn du es in einem Plugin hast, diese fast WP in einem Update nicht an.

  5. 5
    Kommentar von Frank Bültge

    @tux.: du kannst das Array einfach um neue Werte erweitern; Beispiel: $mime_types['bue'] = 'people/bueltge'; in fb_restrict_mime_types()

    
    function fb_restrict_mime_types( $mime_types ) {
    
    	$mime_types['bue'] = 'people/bueltge';
    
    	return $mime_types;
    }
    
  6. 6
    Kommentar von Psyno

    Sehr nützlich das mit den Daten-typen

  7. 7
    Kommentar von Rainer

    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?

  8. 8
    Kommentar von Frank Bültge

    @Rainer: ja, wir haben dazu ein Plugin; dass kann ich vermitteln; kostet aber. Alternativ schaue dir die Lösung an.

  9. 9
    Kommentar von Frank Dennerle

    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.

Kommentar schreiben

Kommentarregeln: Bleib cool, kritisch ist in Ordnung, aber wenn du unhöflich bist, dann lösche ich deinen Kommentar. Bitte benutze deinen persönlichen Namen oder Initialen und nicht den Namen eines Unternehmens, dies würde als Spam gewertet und wird gelöscht. Der Zusammenhang zwischen Namen und URL sollte nicht offensichtlich auf Spam hindeuten! ♥ Ansonsten, vielen Dank für den Kommentar und viel Spaß mit meinem Blog.

E-Mail-Benachrichtigung bei weiteren Kommentaren.
Auch möglich: Abo ohne Kommentar.

Kommentar-Hilfe

händischer Spam:
Beachte die Kommentarregeln, jede Form von versuchtem Spam wird gelöscht. Warum und wieso steht in einem meiner Beiträge.

Bezug auf Textstellen:
Du kannst direkt bezug auf Textstellen im Beitrag nehmen. Dazu muss lediglich der Bereich im Artikel markiert werden; daraufhin erscheint ein Button, der den markierten Text in das Kommentarfeld übernimmt und als Zitat auszeichnet. Die Funktion ist nur bei aktivem JavaScript nutzbar.

xHTML:
Du kannst folgende Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <blockquote cite=""> <code> <pre> <em> <strong> <strike> <ul> <ul> <li>

Achte darauf, wenn du Code im Kommentar hinterlegen willst, dann muss der Code maskiert sein. Dann wird er nicht interpretiert. Der Code muss mit Hilfe von HTML-Entities dargestellt werden, d.h. dass man z.B. < als &lt; und > als &gt; einfügt.

E-Mail-Benachrichtigung bei neuen Kommentaren ?
Wenn der Haken in der Checkbox gesetzt ist, dann wirst du über neue Kommentare vie E-Mail informiert. Der Versand erfolgt nur, wenn du die URL in der Bestätigungs-E-Mail genutzt hast oder schon Abonnent hier im Blog bist.

Kommentar erscheint nicht:
Alle Kommentare werden manuell geprüft, freigegeben und nach Möglichkeit beantwortet. Bitte um etwas Geduld und Nachsicht.

Identifikationsbilder (Avatare):
Auf Gravatar.com kann man sich mit seiner E-Mail-Adresse registrieren und ein Bild hochladen, dann erscheint dieses Gravatar hier und in vielen weiteren Blogs.

Spamschutz:
Das Kommentarformular ist mit einem Spamschutz ausgerüstet. Solltest du diesen Artikel ohne JavaScript besuchen und kommentieren wollen, so muss du die Frage beantworten und das jeweilige Wort in das Textfeld eingeben.