Probleme beim Erstellen einer benutzerdefinierten Bereinigungsfunktion beim Hochladen von Videodateien

Ich versuche ein Theme Customizer-Steuerelement in WordPress zu erstellen, das es dem Benutzer ermöglicht, ein MP4- und WEBM-Video hochzuladen, und dabei muss ich eine Bereinigungsoption erstellen, um den Dateityp zu überprüfen. Ich habe Probleme und kann immer noch jede Art von Datei hochladen …

Hier ist was ich mache:

function customizer_header_image( $wp_customize ) { // Header Background Video (MP4) $wp_customize->add_setting( 'header_video_mp4', array( 'default' => '', 'sanitize_callback' => 'check_header_video' ) ); $wp_customize->add_control( new WP_Customize_Upload_Control( $wp_customize, 'header_video_mp4_control', array( 'label' => __( 'Header Video (MP4)', 'rainier' ), 'section' => 'header_image', 'settings' => 'header_video_mp4', ) ) ); } // Register the customize functions add_action( 'customize_register', 'customizer_header_image' ); // Custom sanitize function for header video uploads function check_header_video($file){ return validate_file($file, array('webm', 'mp4')); } 

Wie Sie sehen können, übergebe ich den Parameter 'sanitize_callback' check_header_video 'sanitize_callback' des Steuerelements an mein check_header_video , und dort können Sie in dieser function sehen, dass es die Datei gegen eine native WordPress-function validate_file mit akzeptierten Dateitypen ausführt.

Ich habe nicht viel Glück. Weiß jemand was ich hier falsch mache?

Solutions Collecting From Web of "Probleme beim Erstellen einer benutzerdefinierten Bereinigungsfunktion beim Hochladen von Videodateien"

validate_file funktioniert nicht ganz so, wie Sie es erwarten – es prüft, ob sich $file im Array erlaubter Dateien befindet, nicht nur seine Erweiterung / MIME-Typ.

Sie suchen nach wp_check_filetype . Letztendlich wird jedoch nur die Erweiterung überprüft (dh die Header der Datei werden nicht gelesen / der Mime-Typ wird nicht ermittelt).

Sofern Sie nicht Ihre eigene PHP-Bibliothek für die MIME-Prüfung implementieren, wäre es einfacher und schneller, eine einfache Regex-Prüfung für den Dateinamen durchzuführen:

 return preg_match( '/\.(mpe?g4?|webm)$/', $file ); // Or similar