it-swarm.com.de

Miniaturansicht nur anzeigen, wenn die gewünschte Größe vorhanden ist

Wenn ich die Funktionen zum Abrufen und Ausgeben des Post-Thumbnails verwende, wird das angeforderte Thumbnail in der von Ihnen angegebenen Größe angezeigt. Wenn diese Größe jedoch nicht vorhanden ist, wird das Thumbnail in der Originalgröße angezeigt und die Größe des Browsers wird geändert.

Wie kann ich sie zwingen, einen Platzhalter wie "kein Bild" anzuzeigen, falls die angeforderte Größe nicht existiert?

10
Alex

Angenommen die Frage handelt von wp_get_attachment_image_src.
Es könnte sich auch um wp_get_attachment_link handeln, aber obwohl dies in Zusammenhang steht, wird es in dieser Analyse nicht berücksichtigt.


Kenntnis erlangt von diesem Problem bei der Beantwortung dieser Frage: Wie kann ich alle WP generierten Miniaturansichten in Media Manager anzeigen? .
Hier finden Sie einen Arbeitscode zum Problem in dieser Frage.

Und es führte zu diesem Thema WordPress Forum .


Die Funktion wp_get_attachment_image_src ($ attachment_id, $ size, $ icon) gibt ein Array zurück, das Folgendes enthält:

[0] => url  
[1] => width  
[2] => height  
[3] => is intermediate

Wenn [3] false ist, werden die Bilddaten für original zurückgegeben.


Beide wp_get_attachment_image_src und wp_get_attachment_link basieren auf der Funktion image_downsize innerhalb von /wp-includes/media.php.
Und hier wird dieses 4-Elemente-Array zurückgegeben.

2
brasofilo

So konnte ich ein Vorschaubild nur dann anzeigen, wenn eine gewünschte Größe vorhanden war:

if ( has_post_thumbnail() )  {
    $imgdata = wp_get_attachment_image_src( get_post_thumbnail_id(), 'thumbnail' ); //change thumbnail to whatever size you are using
    $imgwidth = $imgdata[1]; // thumbnail's width                   
    $wanted_width = 300; //change this to your liking
    if ( ($imgwidth < $wanted_width ) ) {
        the_post_thumbnail();
    } else { 
        //do whatever you want
    }
}

Um mehr über wp_get_attachment_image_src zu erfahren, lesen Sie den Codex.

1
trewknowledge

Ich bin mir nicht sicher, aber ich weiß, dass Sie die Funktion getimagesize () von PHP verwenden können:

//This must be in one loop

if(has_post_thumbnail()) {
    $wanted_width = 300;
    $wanted_height = 150;
    $id = get_post_thumbnail_id()
    $image = wp_get_attachment_image_src($id);
    if ($image){
        list($width, $height) = getimagesize($image[0]);
        if (($wanted_height = $width) && ($wanted_height = $height)){
            the_post_thumbnail();
        }
        else{
            //default when no image
            echo '<img src="'.get_bloginfo("template_url").'/images/img-default.png" />';
        }
    }
    else{
        //default when no image
        echo '<img src="'.get_bloginfo("template_url").'/images/img-default.png" />';
    }
} else {
    //default when no image
    echo '<img src="'.get_bloginfo("template_url").'/images/img-default.png" />';
}

und ich weiß, es ist keine direkte Antwort auf die Frage, aber Sie können ein Plugin namens AJAX Thumbnail Rebuild - verwenden. Mit diesem Plugin können Sie die Post-Thumbnails neu erstellen. Nützlich, wenn Sie add_image_size () hinzufügen, nachdem Sie bereits Post-Thumbnails hochgeladen haben.

1
Bainternet

Es scheint ein besserer Weg zu sein. Verwenden Sie die globale Variable $ _wp_additional_image_sizes, die alle registrierten image_size speichert. Wenn Sie also überprüfen möchten, ob ein Bildgrößenname definiert ist, gehen Sie wie folgt vor:

  global $_wp_additional_image_sizes;
  if ( array_key_exists( 'desired-image-size' , $_wp_additional_image_sizes) )
  {
    //your code here
  }
  else
  {
    //default code here 
  }
0
Mathias

Am besten verwenden Sie die in Wordpress integrierte Funktion "get_intermediate_image_sizes", um die vollständige Liste der Bildgrößen als Array zurückzugeben, und durchsuchen Sie diese.

show_image_by_size( 10470, 'custom_size' );

function show_image_by_size( $_post_id, $_desired_size ) {
  $_sizes = get_intermediate_image_sizes();
  $_thumbnail_id = get_post_thumbnail_id( $_post_id );
  $_image_size = ( in_array( $_desired_size , $_sizes ) ) ? $_desired_size : 'full';
  $image = wp_get_attachment_image_src( $_thumbnail_id, $_image_size );
  echo '<img src="' . esc_url( $image[0] ) . '" />';
}
0
Charles Jaimet

Es gibt ein Plugin, das die Bildgröße automatisch für Sie erstellt, wenn es nicht existiert. http://austinmatzko.com/wordpress-plugins/filosofo-custom-image-sizes/

Ich habe dieses Plugin noch nicht selbst benötigt. Aber es ist einen Versuch wert. Es wird darüber gesprochen, WP Core ähnliche Funktionen hinzuzufügen, möglicherweise in 3.2 http://core.trac.wordpress.org/ticket/15311

0
Thompson