Rifiuta il caricamento di immagini di dimensioni errate utilizzando Media Uploader


12

Sto lavorando a un'impostazione super rigorosa per l'aggiunta di immagini ai campi personalizzati nella schermata Modifica post. Il mio scenario ottimale sarebbe quello di aggiungere un messaggio di errore personalizzato quando l'utente tenta di caricare un'immagine della dimensione errata per quel valore personalizzato specifico.

Sono consapevole di poterlo fare con qualsiasi uploader personalizzato, ma preferirei davvero farlo con il normale Uploader multimediale. Sono anche a conoscenza del wp_handle_upload_prefilter che utilizzo già per convalidare i nomi dei file e generare messaggi di errore personalizzati basati su requisiti generici. Ciò di cui ho bisogno in questo momento è un modo per utilizzare i requisiti personalizzati per rifiutare i caricamenti in base al campo in cui stiamo caricando.

Sono anche a conoscenza di Differenziare l'immagine in primo piano rispetto a Pubblica immagini al momento del caricamento, ma volevo una soluzione di pre-salvataggio.

Questo sarebbe simile a questo:

inserisci qui la descrizione dell'immagine

Qualche idea su come fare per informare wp_handle_upload_prefilter(o simili) di quale settore stiamo trattando?


Domanda interessante. Sto pensando, in generale, di passare una variabile personalizzata tramite il tuo script modale di uploader multimediale personalizzato che puoi quindi passare per ulteriore differenziazione lungo la strada. Questo potrebbe essere l'unico modo, anche se non ne sono sicuro al 100%. Troverai le informazioni di cui hai bisogno, se vai avanti e le cerchi. Successivamente ritorna e completa la tua domanda con quelle informazioni concrete o, se le risolvi tu stesso, pubblica la tua soluzione come risposta. In bocca al lupo!
Nicolai,

Se dico personalizzato intendo un uso personalizzato di WordPress Media Uploader, come ad esempio discusso qui .
Nicolai,

Sì, ho fatto qualcosa del genere prima, ai tempi di Flash Uploader. Stavo andando per un modo più pulito questa volta, ma potrebbe non essere possibile. Lo esaminerò, grazie!
moraleida,

Ti sento, ma in realtà non penso che sia un brutto modo di farlo. Inoltre, come ho detto, semplicemente non vedo / conosco un altro modo di farlo, ma potrebbe esserci qualcuno con più conoscenza per chiarirlo.
Nicolai,

1
Stai andando avanti con questo? In caso contrario, ma hai del codice su cui stai lavorando, pubblicalo. Sono disposto a impostare una taglia alla domanda se ci sono più fondamenta per esso.
Nicolai,

Risposte:


4

Nel gestore, se si imposta "errore", il messaggio di errore verrà visualizzato e annullerà il caricamento

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;
}

Se il tuo utente tenta di caricare una dimensione diversa, il messaggio sarà:

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

Tieni presente che wp_handle_upload_prefilterarriva molto presto nell'elaborazione del caricamento, quindi potresti voler verificare se il file è stato caricato correttamente (dal punto di vista HTTP) ed è un'immagine prima di testare le dimensioni.

Rif: funtion wp_handle_upload()nel file corewp-admin/includes/file.php


Sì, questo è quello che sto già facendo per convalidare i nomi di file e le proprietà svg. Ciò di cui ho bisogno in questo momento è un modo per passare un altro parametro a quel (o un altro) filtro, indicando quale campo viene popolato da quel caricamento in modo che io possa applicare restrizioni diverse per campi diversi. Questo è in realtà in sospeso in questo momento. In seguito aggiornerò la domanda con i miei risultati.
moraleida,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.