benutzerdefiniertes Admin-Thumbnail für Videos, keine Post-ID erhalten?

Auf der Anhangs-Bearbeitungsseite versuche ich, das ausgewählte Thumbnail anstelle des Standardsymbols zu verwenden. 99% des Weges, aber ich kann die ID des Anhangs nicht in die function bekommen.

Fehle ich etwas Offensichtliches? Hilfe geschätzt! 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 ); 

Solutions Collecting From Web of "benutzerdefiniertes Admin-Thumbnail für Videos, keine Post-ID erhalten?"

Zuerst brauchen Sie die apply_filters unten nicht. Dies wird bereits direkt von der function wp_mime_type_icon () aufgerufen.

Das Problem besteht darin, dass Ihr Aufruf add_filter () den Parameter $ accepted_args nicht enthält. Die function add_filter () hat das folgende Konstrukt:

 add_filter($tag, $function_to_add, $priority = 10, $accepted_args = 1) 

Also ist $ accepted_args standardmäßig 1. Aus diesem Grund wird nur das erste Argument von $ icon in Ihre function übernommen. Sie müssen den folgenden Code verwenden, wenn Sie Ihren Filter hinzufügen:

 add_filter('wp_mime_type_icon', 'set_attachments_icon', 10, 3); 

Der Aufruf apply_filters lautet wie folgt:

 apply_filters( 'wp_mime_type_icon', $icon, $mime, $post_id ); // Last arg is 0 if function pass mime type. 

Es sieht so aus, als würde die Post-ID direkt und nicht das Post-Objekt übergeben. Das wäre sicher! Probieren Sie diesen Code stattdessen (beachte, dass ich es nicht versucht habe, wir drehen hier nur aus der Hüfte)

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

Für mich wurde dies jedoch in der Kette wegen image_downsize in wp-includes / media.php Zeile 607 nicht getroffen. Sie können abfangen, um das zu tun, was Sie auch tun müssen.

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

Prost ~