WordPress intègre un système de gestion de média, qui est assez intéressant. Toutefois, une fois que vous avez uploadé un média sur une page ou un article, ou que vous avez attaché un média à un article ou une page, il n’est plus possible de modifier cet attachement… Tout ce que vous pouvez faire, c’est supprimé le média, puis l’uploadé à nouveau pour l’attacher à un autre article… C’est assez embêtant.

Pourtant, étant donné que WordPress est bien ficelé, il est tout à fait possible de modifier ce comportement, et d’avoir la possibilité de changer l’attachement d’un média une fois qu’il a été lié à un article ou une page.

Ré-attacher un média à un article ou page WordPress

Tout d’abord, ouvrez votre fichier functions.php qui se trouve à la racine de votre thème et copiez-y ce code :

add_filter( "manage_upload_columns", 'brm_upload_columns' );
add_action( "manage_media_custom_column", 'brm_media_custom_columns', 0, 2 );

function brm_upload_columns( $columns ) {
	unset( $columns['parent'] );
	$columns['better_parent'] = "Parent";
	return $columns;
}
function brm_media_custom_columns( $column_name, $id ) {
	$post = get_post($id);

	if( $column_name != 'better_parent' )
		return;

	if ( $post->post_parent > 0 ) {
		if ( get_post( $post->post_parent ) ) {
			$title =_draft_or_post_title( $post->post_parent );
		}
		?>
		<strong><a href="<?php echo get_edit_post_link( $post->post_parent ); ?>"><?php echo $title ?></a></strong>, <?php echo get_the_time(__('Y/m/d')); ?>
		<br />
		<a class="hide-if-no-js" onclick="findPosts.open('media[]','<?php echo $post->ID ?>');return false;" href="#the-list"><?php _e('Re-Attach'); ?></a></td>
		<?php
	} else {
		?>
		<?php _e('(Unattached)'); ?><br />
		<a class="hide-if-no-js" onclick="findPosts.open('media[]','<?php echo $post->ID ?>');return false;" href="#the-list"><?php _e('Attach'); ?></a>
		<?php
	}
}
Ré-attacher un média à un autre article ou page de WordPress

Le premier add_filter(), associé à la première fonction, permet de modifier le nom de la colonne, relative à l’attachement des médias, qui se trouve dans la page « Médias » de WordPress (celle qui liste tous vos médias).

La seconde fonction va indiquer ce que l’on doit afficher dans cette colonne, pour chacun de vos médias. Si le média à un parent, c’est-à-dire qu’il a déjà été attaché à une page ou un article, alors on va afficher le nom de cet article ainsi que son lien d’édition. De plus, on va afficher en dessous un lien permettant de ré-attacher ce média. Lors d’un clic sur ce lien, une pop-up s’ouvre contenant la liste de vos pages et articles. Ainsi vous pouvez choisir l’un d’entre eux et ré-attacher votre média.