WordPress: Beitragsbilder in Artikelliste im Dashboard anzeigen

Beitragsbilder sind längst nicht mehr nur Zierde, sondern spielen eine immer größere Rolle in bestimmten Schemata (strukturierte Daten, zum Beispiel Rich Snippets für Artikel), zu denen sie mithin sogar zwingend gehören. Umso wichtiger ist es, sich schnell einen Überblick darüber verschaffen zu können ob Beiträge bereits ein Artikelbild haben, oder nicht. Hierbei helfen zwei Funktionen in der functions.php
des Themes.

Die erste Funktion fügt eine neue Spalte ('thumbs' => esc_html__( 'Thumbnails')
) in der Beitragsliste im Dashboard ein. Vorher entfernt sie die Beitragsauswahl mit array_shift
aus dem Spalten-Array, und setzt sie anschließend zusammen mit dem neuen Element wieder ein. Die Auswahl-Checkboxen für Beiträge sollen ja ganz am Anfang bleiben.
function my_plugin_posts_columns( $defaults ) {
array_shift( $defaults );
$add = array( 'cb' => '<input type="checkbox" />', 'thumbnail' => esc_html__( 'Thumbnails') );
return array_merge( $add, $defaults );
}
add_filter( 'manage_posts_columns', 'my_plugin_posts_columns' );
Die zweite Funktion überprüft, ob ein Artikel ein Beitragsbild hat und gibt es zurück.
function my_plugin_get_featured_image( $post_id ) {
$post_thumbnail_id = get_post_thumbnail_id( $post_id );
if ( $post_thumbnail_id ) {
$post_thumbnail_img = wp_get_attachment_image_src( $post_thumbnail_id, array( 100, 100 ) );
return $post_thumbnail_img[0];
}
}
Die dritte Funktion holt verfügbare Beitragsbilder in die dafür angelegte Spalte.
function my_plugin_posts_custom_columns( $column, $post_id ) {
if ( $column_name == 'thumbnail' ) {
$post_featured_image = my_plugin_get_featured_image( $post_id );
if ( $post_featured_image ) {
echo '<img width="100" height="auto" src="' . $post_featured_image . '" />';
}
}
}
add_action( 'manage_posts_custom_column', 'my_plugin_posts_custom_columns', 12, 3 );
Der Hook manage_posts_custom_column
bezieht sich auf alle Inhaltstypen. Soll die Spalte nur einen bestimmten Inhaltstype betreffen, zum Beispiel Beiträge, den Hook entsprechend spezifizieren (Schema: manage_{post_type}_custom_column
.
manage_post_posts_custom_column
Ggf. muss noch die Spaltenbreite via CSS angepasst werden.
function my_plugin_custom_css() {
$css = '.column-thumbnail {width:100px;}';
printf( '<style id="my-plugin-css">%1$s</style>', $css );
}
add_action( 'admin_head', $plugin_admin, 'my_plugin_custom_css' );