Dans la page d'édition des pièces jointes, j'essaie d'utiliser la vignette sélectionnée au lieu de l'icône par défaut. 99% du chemin mais je ne peux pas obtenir l'identifiant de la pièce jointe dans la fonction.
Est-ce que je manque quelque chose d'évident? Aide appréciée! Dc.
function set_attachments_icon($icon, $mime = null, $post_id){
$vars = get_defined_vars();
print_r($vars);
echo " ??".$icon."?? ".$post->id.' '.$post_id.' ?? id not getting picked up?';
$thumb_id = get_post_meta($post->ID,'dsv_thumbnail_id', true);
if($thumb_id!=''){
$image_attributes = wp_get_attachment_image_src( $thumb_id );
$icon = $image_attributes[0];
}
return $icon;
}
add_filter('wp_mime_type_icon', 'set_attachments_icon');
apply_filters( 'wp_mime_type_icon', $icon, $mime, $post_id );
Premièrement, vous n'avez pas besoin des apply_filters ci-dessous. Cela est déjà appelé directement à partir de la fonction wp_mime_type_icon ().
Le problème est que votre appel à add_filter () ne contient pas le paramètre $ supported_args. La fonction add_filter () a la construction suivante:
add_filter($tag, $function_to_add, $priority = 10, $accepted_args = 1)
Donc, $ bien accepté_args est 1 par défaut. De ce fait, seul le premier argument de $ icon est transmis à votre fonction. Vous devez utiliser le code suivant lors de l'ajout de votre filtre:
add_filter('wp_mime_type_icon', 'set_attachments_icon', 10, 3);
L'appel apply_filters est le suivant:
apply_filters( 'wp_mime_type_icon', $icon, $mime, $post_id ); // Last arg is 0 if function pass mime type.
Il semble que ceci passe directement le post_id et non l'objet post. Cela ferait l'affaire! Essayez ce code à la place (notez que je ne l'ai pas essayé, nous tirons ici depuis la hanche)
function set_attachments_icon($icon, $mime, $post_id){
if (!$post_id) return $icon;
$thumb_id = get_post_meta($post_id,'dsv_thumbnail_id', true);
if($thumb_id){
$image_attributes = wp_get_attachment_image_src( $thumb_id );
$icon = $image_attributes[0];
}
return $icon;
}
add_filter('wp_mime_type_icon', 'set_attachments_icon', 10, 3);
Pour moi, cependant, cela n'a pas été touché dans la chaîne à cause de image_downsize
dans la ligne 607 de wp-includes/media.php. Vous pouvez l'intercepter pour faire ce que vous devez faire aussi.
function set_attachments_downsize($return, $attachment_id, $size){
if ( $size == 'thumbnail' && $thumb_id = get_post_meta($attachment_id,'dsv_thumbnail_id', true) ) {
$image_attributes = wp_get_attachment_image_src( $thumb_id );
return $image_attributes[0];
}
return $return;
}
add_filter('image_downsize', 'set_attachments_downsize', 10, 3);
A bientôt ~