Visualizza l'anteprima solo se esiste la dimensione richiesta


10

Quando utilizzo le funzioni che ottengono e visualizzano l'anteprima del post, visualizzeranno l'anteprima richiesta nella dimensione specificata, ma se questa dimensione non esiste visualizzeranno l'anteprima nella dimensione originale e imporranno al browser di ridimensionarla.

Come posso forzarli a visualizzare un segnaposto come "nessuna immagine" nel caso in cui non esistano le dimensioni richieste?


1
Stai parlando di dimensioni delle miniature registrate o stai cercando di ottenere dimensioni arbitrarie non registrate in pixel? Esempio di codice per favore?
Rarst

sulle dimensioni registrate
Alex

Risposte:


2

Supponendo che la domanda riguardi wp_get_attachment_image_src.
Potrebbe anche trattarsi di wp_get_attachment_link, ma, sebbene correlata, questa analisi non la include.


Conosci questo problema rispondendo a questa domanda: Come posso visualizzare tutte le miniature generate da WP in Media Manager? .
Fare riferimento ad esso per vedere un codice funzionante relativo al problema su questa domanda .

E porta a questo argomento del forum WordPress .


La funzione wp_get_attachment_image_src ($ attachment_id, $ size, $ icona) restituisce un array contenente:

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

Se [3]è falso, originalvengono restituiti i dati dell'immagine.


Entrambi wp_get_attachment_image_src e wp_get_attachment_linkfanno affidamento sulla funzione image_downsize, all'interno /wp-includes/media.php.
Ed è qui che viene restituito questo array di 4 elementi.


1

Non ne sono sicuro, ma so che puoi usare la funzione getimagesize () di php in questo modo:

//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" />';
}

e so che non è una risposta diretta alla domanda, ma puoi usare un plugin chiamato AJAX Thumbnail Rebuild - Questo plugin ti permette di ricostruire le miniature dei post. Utile se aggiungi_image_size () dopo aver già caricato le miniature dei post.


1

Ecco come sono stato in grado di visualizzare una miniatura solo se esiste una dimensione richiesta:

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
    }
}

Per saperne di più wp_get_attachment_image_srcleggi il Codice.



0

Sembra essere un modo migliore. Utilizza la variabile globale $ _wp_additional_image_sizes, memorizza tutte le dimensioni_immagine registrate. Quindi, se si desidera verificare se è definito un nome per la dimensione dell'immagine:

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

0

L'approccio migliore consiste nell'utilizzare la funzione "get_intermediate_image_sizes" incorporata in Wordpress per restituire l'elenco completo delle dimensioni dell'immagine come un array, quindi esaminarlo.

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] ) . '" />';
}

-1

Forse questo aiuterà

<?php 
//This must be in a loop
if(has_post_thumbnail()) {
    the_post_thumbnail();
} else {
    echo '<img src="'.get_bloginfo("template_url").'/images/img-default.png" />';
}
?>

da: http://codex.wordpress.org/Function_Reference/has_post_thumbnail
Uso qualcosa del genere per verificare se la dimensione dell'immagine esiste:

if (function_exists('has_post_thumbnail') && has_post_thumbnail('medium')) {
//// code to display thumbnail goes here
}
else {
/// otherwise do this
}

Spero che ti aiuti ad andare avanti.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.