[WordPress] Affichez les miniatures dans l’interface d’administration

 

Je ne sais pas si vous avez remarqué, mais j’utilise souvent les même images miniatures dans la présentation des mes billets. Je le fait pour deux raisons :

  • La première est que ces images sont spécialement taillées aux dimensions nécessaires pour la page d’accueil.
  • La seconde est qu’elles sont optimisé (pas trop quand même) pour être légère.

Ces deux facteurs sont de nature à rendre l’affichage de ma page d’accueil rapide (en tout cas, c’est fait pour)

Par conséquent, je me retrouve souvent à rechercher une miniature dans des anciens billets, car je ne me rappelle plus bien de son nom dans la bibliothèque de médias. Je fais donc une recherche visuelle.

Le petit « hack » qui suit permet d’afficher ces miniatures directement dans la liste des billets rédigés sur le blog.

websourcing fr images in admin 499x324 [Wordpress] Affichez les miniatures dans linterface dadministration

Lorsque j’insère cette image dans un billet, j’utilise un champ « custom » :

champ custom lead image websourcing fr 500x163 [Wordpress] Affichez les miniatures dans linterface dadministration

J’utilise cette technique car j’ai commencé avant que WordPress 2.9 et ses « post-thumbnails » ne sortent.

Pour arriver à ce résultat, il suffit d’insérer le code suivant dans le fichier function.php de votre thème :

if ( !function_exists('fb_AddThumbColumn') && function_exists('add_theme_support') ) {

	// for post and page
	//add_theme_support('post-thumbnails', array( 'post', 'page' ) );

	function fb_AddThumbColumn($cols) {

		$cols['thumbnail'] = __('Thumbnail');

		return $cols;
	}

	function fb_AddThumbValue($column_name, $post_id) {

			$width = (int) 75;
			$height = (int) 75;

			if ( 'thumbnail' == $column_name ) {
				// lead-image thumbnail
				$thumbnail_path = get_post_custom_values("leadimage");
				if ($thumbnail_path[0]){
					$path =  get_option('upload_path');
					echo "<img width='$width' height='$height' src='/$path/$thumbnail_path[0]' />";
					return;
			} else {
				echo __('None');
			}
		}
	}

	// posts
	add_filter( 'manage_posts_columns', 'fb_AddThumbColumn' );
	add_action( 'manage_posts_custom_column', 'fb_AddThumbValue', 10, 2 );

	// pages
	add_filter( 'manage_pages_columns', 'fb_AddThumbColumn' );
	add_action( 'manage_pages_custom_column', 'fb_AddThumbValue', 10, 2 );
}

Si vous utilisez les miniatures supportées par WordPress 2.9 directement, sans passer par un champ custom, alors le code devient :

if ( !function_exists('fb_AddThumbColumn') && function_exists('add_theme_support') ) {

	// for post and page
	add_theme_support('post-thumbnails', array( 'post', 'page' ) );

	function fb_AddThumbColumn($cols) {

		$cols['thumbnail'] = __('Thumbnail');

		return $cols;
	}

	function fb_AddThumbValue($column_name, $post_id) {

			$width = (int) 75;
			$height = (int) 75;

			if ( 'thumbnail' == $column_name ) {
				// thumbnail of WP 2.9
				$thumbnail_id = get_post_meta( $post_id, '_thumbnail_id', true );
				// image from gallery
				$attachments = get_children( array('post_parent' => $post_id, 'post_type' => 'attachment', 'post_mime_type' => 'image') );
				if ($thumbnail_id)
					$thumb = wp_get_attachment_image( $thumbnail_id, array($width, $height), true );
				elseif ($attachments) {
					foreach ( $attachments as $attachment_id => $attachment ) {
						$thumb = wp_get_attachment_image( $attachment_id, array($width, $height), true );
					}
				}
					if ( isset($thumb) && $thumb ) {
						echo $thumb;
					} else {
						echo __('None');
					}
			}
	}

	// for posts
	add_filter( 'manage_posts_columns', 'fb_AddThumbColumn' );
	add_action( 'manage_posts_custom_column', 'fb_AddThumbValue', 10, 2 );

	// for pages
	add_filter( 'manage_pages_columns', 'fb_AddThumbColumn' );
	add_action( 'manage_pages_custom_column', 'fb_AddThumbValue', 10, 2 );

C’est très pratique au quotidien et cela améliore ma productivité.

crédits: wp engineer