web-dev-qa-db-de.com

Das Hochladen von Bildern mit falscher Größe mit dem Media Uploader ablehnen

Ich arbeite an einer sehr strengen Einstellung zum Hinzufügen von Bildern zu benutzerdefinierten Feldern im Bildschirm "Nachbearbeitung". Mein optimales Szenario wäre das Hinzufügen einer benutzerdefinierten Fehlermeldung, wenn der Benutzer versucht, ein Bild mit der falschen Größe für diesen bestimmten benutzerdefinierten Wert hochzuladen.

Ich bin mir bewusst, dass ich dies mit jedem benutzerdefinierten Uploader tun kann, aber ich würde es wirklich vorziehen, dies mit dem regulären Media Uploader zu tun. Mir ist auch der wp_handle_upload_prefilter bekannt, den ich bereits verwende, um Dateinamen zu validieren und benutzerdefinierte Fehlermeldungen basierend auf allgemeinen Anforderungen zu generieren. Was ich jetzt brauche, ist eine Möglichkeit, benutzerdefinierte Anforderungen zu verwenden, um Uploads basierend auf dem Feld, in das wir hochladen, abzulehnen.

Mir ist auch bewusst, dass ich Featured Image beim Hochladen von Post Images unterscheiden aber ich wollte eine Pre-Save-Lösung.

Das würde ungefähr so ​​aussehen:

enter image description here

Irgendwelche Ideen, wie man wp_handle_upload_prefilter (oder ein ähnliches Feld) darüber informiert, mit welchem ​​Bereich wir es zu tun haben?

12
moraleida

Wenn Sie in Ihrem Handler 'error' einstellen, wird die Fehlermeldung angezeigt und der Upload abgebrochen

add_filter( 'wp_handle_upload_prefilter', 'custom_upload_filter' );

function custom_upload_filter( $file ) {
    $image_info   = getimagesize( $file['tmp_name'] );
    $image_width  = $image_info[0];
    $image_height = $image_info[1];

    if ( $image_with !== 800 || $image_height !== 600 ) {
        $file['error'] = __( 'Images must be sized exactly 800 * 600', 'your_textdomain' );
    }
    return $file;
}

Wenn Ihr Benutzer versucht, eine andere Größe hochzuladen, lautet die Nachricht:

“thefile.png” has failed to upload due to an error  
Size must be exactly 800 * 600

Beachten Sie, dass wp_handle_upload_prefilter sehr früh in der Upload-Verarbeitung eintritt. Daher möchten Sie möglicherweise testen, ob die Datei ordnungsgemäß hochgeladen wurde (vom HTTP-Standpunkt aus) und ein Bild ist, bevor Sie die Größe testen.

Ref: funtion wp_handle_upload() in der Kerndatei wp-admin/includes/file.php

3
YaFred