web-dev-qa-db-fra.com

vignette d’administration personnalisée pour les vidéos, ne pas obtenir l’identifiant du message?

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 );
1
v3nt

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);
2
prettyboymp

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 ~

0
Matthew Boynes