web-dev-qa-db-fra.com

Lier une vignette à une image en taille réelle

J'utilise une fonction de mon blog (getImage) pour appeler des vignettes dans la boucle (la 1ère image de l'article est appelée), mais au lieu d'un lien vers l'article, je voudrais que la vignette soit liée à son image complète src.

La fonction est celle-ci:

function getImages($num) {
global $more;
$more = 1;
$link = get_permalink(); -> NO IDEA IF HAS ANY SENSE BUT I ALREADY TRIED TO CHANGE THIS ONE TO GET_ATTACHMENT BUT NO LUCK
$content = get_the_content();
$count = substr_count($content, '<img');
$start = 0;
for($i=1;$i<=$count;$i++) {
$imgBeg = strpos($content, '<img', $start);
$post = substr($content, $imgBeg);
$imgEnd = strpos($post, '>');
$postOutput = substr($post, 0, $imgEnd+1);
$postOutput = preg_replace('/width="([0-9]*)" height="([0-9]*)"/', '/width="150"/',$postOutput);
$postOutput = preg_replace('/alignright/', 'aligncenter',$postOutput);
$image[$i] = $postOutput;
}
if(stristr($image[$num],'<img')) { echo '<a href="'.$link.'">'.$image[$num]."</a>"; }
$more = 0;}

Quelqu'un at-il une idée de comment puis-je faire cela? ou une autre fonction pour y parvenir?

Merci

3
nessie

Utilisez simplement wp_get_attachment_url($GLOBALS['post']->ID); au lieu de get_permalink();

1
kaiser

Oh bien sûr, alors voici ce que j'ai fait: j'ai ajouté cette autre fonction

function catch_that_image() {
  global $post, $posts;
  $first_img = '';
  ob_start();
  ob_end_clean();
  $output = preg_match_all('/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', $post->post_content, $matches);
  $first_img = $matches [1] [0];

  if(empty($first_img)){ //Defines a default image
    $first_img = "/images/default.jpg";
  }
  return $first_img;
}

Et je l’appelle à la ligne $ link, dans la fonction getimages.

$link = catch_that_image();

Bien, c'est désordonné, je vais donc essayer vos suggestions et voir si certaines d'entre elles fonctionneront, merci beaucoup.

1
nessie