Coding | PHP

WordPress: Beitragsbilder in Artikelliste im Dashboard anzeigen

picture 846262 1920

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.

thumb column post list
Artikelbilder in Beitragsliste

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

weiter schmökern

Schreibe einen Kommentar

Bitte Kommentarfunktion nicht für Supportanfragen nutzen. Dem kann hier nicht entsprochen werden.

Deine E-Mail-Adresse wird nicht veröffentlicht.