J'utilise le code suivant pour ajouter de nouvelles options de tri à ma médiathèque:
function modify_post_mime_types( $post_mime_types ) {
$post_mime_types['application/pdf'] = array( __( 'PDFs' ), __( 'Manage PDFs' ), _n_noop( 'PDF <span class="count">(%s)</span>', 'PDFs <span class="count">(%s)</span>' ) );
$post_mime_types['application/vnd.openxmlformats-officedocument.presentationml.presentation'] = array( __( 'Powerpoints' ), __( 'Manage Powerpoints' ), _n_noop( 'Powerpoints <span class="count">(%s)</span>', 'Powerpoints <span class="count">(%s)</span>' ) );
$post_mime_types['application/msword, application/vnd.openxmlformats-officedocument.wordprocessingml.document'] = array( __( 'Documents' ), __( 'Manage Documents' ), _n_noop( 'Documents <span class="count">(%s)</span>', 'Documents <span class="count">(%s)</span>' ) );
return $post_mime_types;
}
add_filter( 'post_mime_types', 'modify_post_mime_types' );
Ce qui semble bien fonctionner pour le mode "Grille" activé par JavaScript:
Cependant, en mode "Liste", cliquer sur les entrées affiche toutes les extensions/fichiers (même s’ils les comptent correctement) comme indiqué:
Voici l'URL vers laquelle sont redirigés les fichiers PDF:
wp-admin/upload.php? mode = liste et pièce jointe-filter = post_mime_type% 3Application% 252Fpdf & m = 0 & filtre_action = Filtre & s & action = -1 & paginé = 1 & action2 = -1 & affecté & _ajax_nonce = 093720f202 & ps
Si j'essaie avec le filtre standard "Images" de Wordpress, cela fonctionne. Voici l'URL qu'il donne pour ça:
wp-admin/upload.php? mode = liste & attachment-filter = post_mime_type% 3Aimage & m = 0 & filter_action = Filtre & s & action = -1 & paginé = 1 & action2 = -1 & affecté & _ajax_nonce = 093720f202 & ps
Je pense que c'est peut-être un bug de Wordpress, mais assurez-vous que quelqu'un sait quelque chose ici.
Le problème réside dans le paramètre URL attachment-filter=
. La barre oblique entre application/pdf
(ou autre) est échappée deux fois. Lorsque vous remplacez le %252F
par une barre oblique ou %2F
, le filtre fonctionnera.
Le premier caractère d'échappement (/
devient %2F
) se produit lorsque WP est en train de créer la boîte de sélection contenant les types MIME. La seconde (%2F
devient %252F
) est effectuée par le navigateur.
La solution la plus simple serait d’urldecoder manuellement le paramètre URL quelque part en PHP:
if ( isset( $_GET['attachment-filter'] ) )
$_GET['attachment-filter'] = urldecode($_GET['attachment-filter']);
Mise à jour: Il existe un ticket de base WP sur ce problème: https://core.trac.wordpress.org/ticket/30123
Une fois que cela est corrigé, la réponse ci-dessus sera obsolète.