Sidebar
ein-/ausblenden

Post-Thumbnails in der Artikelansicht

Plugin für WordPress SEO

Anzeige

Mit WordPress Version 2.9 wurde die Funktion der Post Thumbnail eingeführt. Über diese Funktion und dessen Randthemen wurde bereits hier und in anderen Blogs viel geschrieben. Von Vorteil empfinde ich es aber, wenn man direkt in der Übersicht der Artikel und Seiten das zugeordnete Thumbnail sieht, so dass man leicht die Verwendung zuordnen kann. Daher möchte ich einen kleinen Codeschnippsel vorstellen, der genau das macht.

Die Funktion habe ich noch ein wenig ausgebaut, so dass nicht nur das Post Thumbnail gezogen wird, sondern wenn dieses nicht vergeben wurde, aber Bilder über die Upload-Funktion zum Post zugeordnet wurden, dann wird das erste Bild dieser Bilder gezogen. Dies ist vor allem dann interessant, wenn man vor WordPress 2.9 mit den Bildern aus der Mediathek das gleiche Ziel erreicht hat, wie mit der neuen Funktion des Post Thumbnail.

Pos Thumbnail in der Übersicht der Beiträge

Der obige Screenshot sollte verdeutlichen, was die kleine Erweiterung macht. Der folgende Code muss lediglich in ein Plugin ausgelagert oder in die functions.php des Themes kopiert werden.


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) 35;
			$height = (int) 35;

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

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

33 Kommentare zu „Post-Thumbnails in der Artikelansicht“

  1. 1
    Kommentar von Markus

    super dank dir

  2. 2
    Kommentar von René

    Genauso etwas suche ich, allerdings für die User-Übersicht. Da ist mir bisher der richtige add_action Befehl noch nicht für untergekommen.

  3. 3
    Kommentar von Heiko

    Unnütz aber schön. Danke.

    Mal schauen ob ich es länger eingebaut lasse, da bei den ersten Aufrufen die Ladezeit der Artikelliste merklich erhöht war. Das könnte in der täglichen Arbeit mit WP stören...

  4. 4
    Kommentar von Kinger

    Super! Wieder was dazu gelernt. Danke.
    Wenn man folgenden Code nach der add_filter und add_action Methode ranhängt kann man auch unter der Seiten-Übersicht die Miniatur-Bilder bestaunen!
    add_filter( 'manage_pages_columns', 'fb_AddThumbColumn' );
    add_action( 'manage_pages_custom_column', 'fb_AddThumbValue', 10, 2 );

    Gruß

  5. 5
    Kommentar von Frank Bültge

    @René: sollte eigentlich gleich gehen:
    add_filter( 'manage_users_columns', 'fb_AddThumbColumn' );
    add_action( 'manage_users_custom_column', 'fb_AddThumbValue', 10, 2 );

  6. 6
    Kommentar von Frank Bültge

    @Kinger: sollte man davon abhängig machen, wo das Thumbnail zugelassen ist, daher auch der kleine Kommentar im Code.

    @Heiko: ja, sollte man auch nicht unterschätzen, denn pro Beitrag ein Datenbankquery ist nötig. Aber dies kann man wieder durch die Anzahl der Beiträge im Edit-Bereich in Grenzen halten. Dies kann ja jeder Nutzer selbst setzen.

  7. 7
    Kommentar von René

    @Frank

    Danke, das war das Puzzleteilchen was mir gefehlt hat, wen es interessiert, hier der Code für die Benutzertabelle:

    function add_user_column($defaults) {
    $defaults['nl'] = __('Niederlassung', 'user-column');
    return $defaults;
    }

    function add_custom_user_column($value, $column_name, $id) {
    if( $column_name == 'nl' ) {
    return get_usermeta($id, 'Niederlassung');
    }
    }

    add_action('manage_users_custom_column', 'add_custom_user_column', 15, 3);
    add_filter('manage_users_columns', 'add_user_column', 15, 2);

  8. 8
    Kommentar von Patrick Schwarz

    Super cool das werd ich gleich mal bei mir versuchen!

  9. 9
    Kommentar von Hoffmann aus Stuttgart

    Sehr nice, vielen Dank!

  10. 10
    Kommentar von Manuela

    Dankeschön! Funktioniert wunderbar.

  11. 11
    Kommentar von Manu

    Super! Hat wunderbar geklappt bei meinem Blog.

  12. 12
    Kommentar von Base Stricker

    super, jetzt brauchen wir nur mehr jemanden der diesen Code uns armen Kulturmagazin redakteueren einbaut ...lg grüsse aus graz

  13. 13
    Kommentar von Frank Bültge

    @Base: da kann ich helfen bzw. vermitteln, wenn ihr Hilfe braucht.

  14. 14
    Kommentar von Base Stricker

    das wäre super Frank, wir haben da so einige kleinigkeiten ... bildupload funktion für beiträge und kommentare funkt nicht, und in diesem angewandten News Magazine Theme 640 1.7 von antisocialmediallc.com lassen sich die kategorien zwar erstellen jedoch für den besucher nicht wirklich sichtbar unterbringen, da ist auch das kategorie Feld zu klein ? ... so mussten wir so viele seiten erstellen und damit sind unsere freiwilligen redakteure nicht erfreut ... bitte schreibe mir wie eine hilfe stattfinden könnte ? meine mail siehst du ja .... lg hjg

  15. 15
    Kommentar von Holger

    Die Thumbs in der Artikelübersicht find ich echt toll! Klasse Anleitung. Mal sehen ob ich es hinbekomme.

  16. 16
    Kommentar von Melanie

    Feine Sache. So hat man noch schneller einen Überblick. Danke für den Tipp und den Code.

  17. 17
    Kommentar von Mandy

    Vielen Dank für den Code!! Genau was ich gesucht habe. Ich bin gerade dabei einen Fotoblog zu aktualisieren und diese Funktion wird dem User super helfen.

  18. 18
    Kommentar von Steve

    Herzlichen Dank für den tollen Code! Wir könnten probieren! Habe lange nach sowas gesucht!

  19. 19
    Kommentar von Serge

    Hallo Frank

    Ich definiere die Bilder mit einem benutzerdefiniertem Feld (image).
    Ist es möglich, den Code so anzupassen, dass die Thumbnails in der Liste gezeigt werden, auch wenn die Bilder per benutzerdefiniertem Feld zugeteilt sind?

    Vielen Dank für deine Hilfe.

  20. 20
    Kommentar von Frank Bültge

    @Serge: ja, im Grunde wird das ja schon getan; du musst beim Holen des Feldes nur den Namen deines Feldes eintragen, im Code hole ich jetzt das WP-Standard-Feld: _thumbnail_id
    $thumbnail_id = get_post_meta( $post_id, 'DEIN_FELD', true );

  21. 21
    Kommentar von Serge

    Hallo Frank, ich sehe zwar jetzt einen Rahmen, das Bild selber aber nicht. Schicke dir gerne ein Print Screen. . Das Feld heisst übrigens "image". In der Datenbank ist folgender Wert abgelegt: http://www.photofrontal.com/wp-content/uploads/2010/07/064297-01-TRUI.jpg
    Könnte es ein Problem wegen der Filegrösse sein?

  22. 22
    Kommentar von Frank Bültge

    @Serge: nein, die Größe ist egal, sie hat natürlich Folgen auf die Ladezeit.

  23. 23
    Kommentar von Frank Bültge

    @Serge: Sorry, gerade über den Code geschaut, geht so natürlich nicht. Die Zeile holt zwar den Wert aus deinem Custom Field, nutzt dann aber die WP Attachment Funktion für die Anpassung. Die braucht man nicht, denn du willst ja nur die URL aus dem Custom Field übernehmen und dort darstellen. Insofern musst du also nur den Wert des Custom Field in ein img-Element übernehmen, fertig.

  24. 24
    Kommentar von Serge

    Sorry Frank, ich habe keine Ahnung von PHP. Könntest du mir den Code entsprechend durchgeben? Vielen Dank!

  25. 25
    Kommentar von Frank Bültge

    Via Custom Field "image" - berücksichtigt kein Thumbnail, da müsste man ggf. etwas anpassen.

    
    if ( !function_exists('fb_AddThumbColumn') && function_exists('add_theme_support') ) {
    
    	function fb_AddThumbColumn($cols) {
    
    		$cols['thumbnail'] = __('Thumbnail');
    
    		return $cols;
    	}
    
    	function fb_AddThumbValue($column_name, $post_id) {
    
    			$width = (int) 80;
    			$height = (int) 50;
    
    			if ( 'thumbnail' == $column_name ) {
    				$imgurl = get_post_meta( $post_id, 'image', true );
    
    					if ( isset($imgurl) && $imgurl ) {
    						echo '<img src="' . $imgurl . '" alt="" width="100" />';
    					} else {
    						echo __('None');
    					}
    			}
    	}
    
    	if ( is_admin() ) {
    		add_filter( 'manage_posts_columns', 'fb_AddThumbColumn' );
    		add_action( 'manage_posts_custom_column', 'fb_AddThumbValue', 10, 2 );
    	}
    }
    
  26. 26
    Kommentar von Nina

    Hallo Frank. Super, genau das habe ich gesucht. Allerdings habe ich teilweise die Artikelbilder aus der Nextgen Gallery angezeigt und bei diesen Artikeln wird dann nicht das Bild, sondern ein default-image angezeigt. Hast du eine Lösung, wie ich den Code ändern kann, um auch die ngg-Bilder anzuzeigen?

    Viele Grüße,
    Nina

  27. 27
    Kommentar von Frank Bültge

    @Nina: nein, habe Nextgen noch nie verwendet und kenne daher die Funktionen nicht; aber ich erinnere mich an einen Kommentar auf meinem englischen Pandon, der dies tut.

  28. 28
    Kommentar von Mad

    "@Nina: nein, habe Nextgen noch nie verwendet und kenne daher die Funktionen nicht; aber ich erinnere mich an einen Kommentar auf meinem englischen Pandon, der dies tut."

    Hi!

    Ich habe exakt das gleiche Prob und finde keine Lösung! Wenn du, lieber Frank, einen Link zu deinem englischen Pandon hast, bitte her damit! DANKE! ;-)

  29. 29
    Kommentar von Frank Bültge

    @Mad: via Google ;) hier der Komment

  30. 30
    Kommentar von Mad

    @Mad: via Google ;) hier der Komment

    Lieber Frank - vielen Dank! Sehr nett von dir! Aber irgendwie blicke ich nicht ganz durch, wie ich timthumb.php da einbinden soll. Ich verstehe die Vorzüge von timthumb.php - aber ich frage mich wie ich es da einbinde, denn einen resizeordner habe ich so nicht..

    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) 35;
    $height = (int) 35;

    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){
    $xx=get_post_thumbnail_id($post_id);
    if ( is_string($xx) && substr($xx, 0, 4) == 'ngg-') {
    $thumbnailID = substr($xx, 4);
    $image = nggdb::find_image($thumbnailID);
    if ($image) { // Safety check for null pointer.
    $temp=get_bloginfo('template_directory')."/resize/timthumb.php?src=".$image->thumbURL."&h=35&w=35";
    $thumb="";
    }
    }else $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');
    }
    }
    }

  31. 31
    Kommentar von Frank Bültge

    @Mad: das ist der PFad: $temp = get_bloginfo('template_directory')."/resize/timthumb.php, wobei et_bloginfo('template_directory') den Ordner des Themes zurück gibt.

  32. 32
    Kommentar von resume

    Von Vorteil empfinde ich es aber, wenn man direkt in der Übersicht der Artikel und Seiten das zugeordnete Thumbnail sieht, so dass man leicht die Verwendung zuordnen kann.

  33. 33
    Kommentar von Mad

    Danke für die Antworten!

Kommentar schreiben

Kommentarregeln: Bleib cool, kritisch ist in Ordnung, aber wenn du unhöflich bist, dann lösche ich deinen Kommentar. Bitte benutze deinen persönlichen Namen oder Initialen und nicht den Namen eines Unternehmens, dies würde als Spam gewertet und wird gelöscht. Der Zusammenhang zwischen Namen und URL sollte nicht offensichtlich auf Spam hindeuten! ♥ Ansonsten, vielen Dank für den Kommentar und viel Spaß mit meinem Blog.

E-Mail-Benachrichtigung bei weiteren Kommentaren.
Auch möglich: Abo ohne Kommentar.

Kommentar-Hilfe

händischer Spam:
Beachte die Kommentarregeln, jede Form von versuchtem Spam wird gelöscht. Warum und wieso steht in einem meiner Beiträge.

Bezug auf Textstellen:
Du kannst direkt bezug auf Textstellen im Beitrag nehmen. Dazu muss lediglich der Bereich im Artikel markiert werden; daraufhin erscheint ein Button, der den markierten Text in das Kommentarfeld übernimmt und als Zitat auszeichnet. Die Funktion ist nur bei aktivem JavaScript nutzbar.

xHTML:
Du kannst folgende Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <blockquote cite=""> <code> <pre> <em> <strong> <strike> <ul> <ul> <li>

Achte darauf, wenn du Code im Kommentar hinterlegen willst, dann muss der Code maskiert sein. Dann wird er nicht interpretiert. Der Code muss mit Hilfe von HTML-Entities dargestellt werden, d.h. dass man z.B. < als &lt; und > als &gt; einfügt.

E-Mail-Benachrichtigung bei neuen Kommentaren ?
Wenn der Haken in der Checkbox gesetzt ist, dann wirst du über neue Kommentare vie E-Mail informiert. Der Versand erfolgt nur, wenn du die URL in der Bestätigungs-E-Mail genutzt hast oder schon Abonnent hier im Blog bist.

Kommentar erscheint nicht:
Alle Kommentare werden manuell geprüft, freigegeben und nach Möglichkeit beantwortet. Bitte um etwas Geduld und Nachsicht.

Identifikationsbilder (Avatare):
Auf Gravatar.com kann man sich mit seiner E-Mail-Adresse registrieren und ein Bild hochladen, dann erscheint dieses Gravatar hier und in vielen weiteren Blogs.

Spamschutz:
Das Kommentarformular ist mit einem Spamschutz ausgerüstet. Solltest du diesen Artikel ohne JavaScript besuchen und kommentieren wollen, so muss du die Frage beantworten und das jeweilige Wort in das Textfeld eingeben.