web-dev-qa-db-fra.com

Comment obtenir une taille d'image personnalisée pour une image téléchargée dans le Customizer

J'utilise le personnalisateur pour télécharger une image. Le code que j'ai ci-dessous affiche l'image en taille réelle ok mais je voudrais plutôt afficher une taille personnalisée de cette image que j'ai créée en dessous.

Ceci est le code dans mon fichier de modèle:

<img src="<?php echo get_theme_mod( 'image-1' , get_template_directory_uri().'/images/default.jpg' ); ?>">

C'est le code dans mon fichier functions.php pour ajouter la taille personnalisée:

add_image_size( 'image-thumbnail', 525, 350, true ); 
1
Troy Templeman

Apparemment, votre mod stocke le chemin complet de l’image sous forme de chaîne. Cela vous laisse peu d'alternative que de faire une recherche et de remplacer sur la chaîne:

$img = get_theme_mod('image-1');
if (!empty ($img)) {
  $img = preg_replace ('.(jpg|jpeg|png|gif)$','-525x350$0');
  if (!file_exists($img)) $img = get_template_directory_uri().'/images/default.jpg';
    }
  else if (!file_exists($img)) $img = get_template_directory_uri().'/images/default.jpg';

Dans les mots. Obtenez le mod. S'il existe, recherchez $img pour l'occurrence de jpg|jpeg|png|gif à la fin de la chaîne, puis ajoutez-y la taille de l'image, par exemple ...image-525x350.jpg. Si ce fichier n'existe pas, utilisez la valeur par défaut. S'il n'y a pas de mod, utilisez également la valeur par défaut.

4
cjbj

A partir de la réponse de cjbj, vous devrez peut-être ajouter des délimiteurs pour que votre preg_replace fonctionne correctement:

$img = get_theme_mod('image-1');
if (!empty ($img)) {
  $img = preg_replace ('/.(jpg|jpeg|png|gif)$/','-525x350$0');
  if (!file_exists($img)) $img = get_template_directory_uri().'/images/default.jpg';
  }
else if (!file_exists($img)) $img = get_template_directory_uri().'/images/default.jpg';
0
Coll