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


12

Ich arbeite an einer extrem strengen Einstellung zum Hinzufügen von Bildern zu benutzerdefinierten Feldern im Bildschirm "Nachbearbeitung". Mein optimales Szenario wäre, eine benutzerdefinierte Fehlermeldung hinzuzufügen, 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.

Ich bin mir auch bewusst, dass beim Hochladen ausgewählte Bilder von Post-Bildern unterschieden werden sollen, aber ich wollte eine vorab gespeicherte Lösung.

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

Bildbeschreibung hier eingeben

Irgendwelche Ideen, wie man darüber informiert wp_handle_upload_prefilter(oder auf ähnliche Weise), mit welchem ​​Gebiet wir es zu tun haben?


Interessante Frage. Im Allgemeinen übergebe ich eine benutzerdefinierte Variable über das modale Skript Ihres benutzerdefinierten Medien-Uploaders, das Sie dann zur weiteren Unterscheidung weitergeben können. Dies könnte der einzige Weg sein, obwohl ich nicht 100% sicher bin. Sie finden die Informationen, die Sie dazu benötigen, wenn Sie weiter suchen. Kommen Sie anschließend zurück und vervollständigen Sie Ihre Frage mit diesen konkreten Informationen, oder stellen Sie Ihre Lösung als Antwort bereit, wenn Sie sie selbst lösen. Viel Glück!
Nicolai

Wenn ich sage , benutzerdefinierte ich meine individuelle Nutzung des Wordpress - Media - Uploader, wie zum Beispiel diskutiert hier .
Nicolai

Ja, ich habe so etwas in den Tagen des Flash Uploader schon einmal gemacht. Dieses Mal war ich auf einem saubereren Weg, aber es könnte einfach nicht möglich sein. Werde das untersuchen, danke!
Moraleida

Ich höre dich, aber ich glaube nicht, dass es so schlecht ist, es zu tun. Außerdem, wie gesagt, sehe / kenne ich einfach keinen anderen Weg, um das zu klären, aber vielleicht kommt jemand mit mehr Wissen dazu.
Nicolai

1
Kommst du damit voran? Wenn nicht, aber Sie haben Code, an dem Sie arbeiten, posten Sie ihn. Ich bin bereit, ein Kopfgeld auf die Frage zu setzen, ob es mehr Fundament dafür gibt.
Nicolai

Antworten:


4

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 die wp_handle_upload_prefilterUpload-Verarbeitung sehr früh beginnt. Sie können daher vor dem Testen der Größe testen, ob die Datei ordnungsgemäß hochgeladen wurde (vom HTTP-Standpunkt aus) und ein Bild ist.

Ref: Funktion wp_handle_upload()in der Core-Dateiwp-admin/includes/file.php


Ja, das ist es, was ich bereits tue, um Dateinamen und SVG-Eigenschaften zu validieren. Was ich jetzt brauche, ist eine Möglichkeit, einen anderen Parameter an diesen (oder einen anderen) Filter zu übergeben, der angibt, welches Feld von diesem Upload ausgefüllt wird, damit ich verschiedene Einschränkungen für verschiedene Felder anwenden kann. Dies ist momentan in der Warteschleife. Ich werde die Frage später mit meinen Erkenntnissen aktualisieren.
Moraleida
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.