WordPress: Como recuperar a primeira imagem de um post?
Olá a todos, recentemente passei por isso quando estava dando manutenção em um tema, o problema maior é que quando a imagem utilizada já existia na biblioteca ou seja, não tinha sido “subida” ao criar o post ela simplesmente não aparecia…
Estava utilizando um método padrão para recuperar anexos vinculados a postagem, mas neste caso esse método não funcionava. Então utilizei de outra forma para recuperar a imagem da forma que ela está no post.
Como fazer?
Para fazer isso, criei o seguinte método no arquivo functions.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
<?php function catch_that_image() { global $post, $posts; $first_img = ''; $imgFinal = ''; 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)) { $first_img = "/images/default.jpg"; } $output = preg_match_all('/<img.+width=[\'"]([^\'"]+)[\'"].*>/i', $post->post_content, $matches); $width = $matches[1][0]; $output = preg_match_all('/<img.+height=[\'"]([^\'"]+)[\'"].*>/i', $post->post_content, $matches); $height = $matches[1][0]; $output = preg_match_all('/<img.+class=[\'"]([^\'"]+)[\'"].*>/i', $post->post_content, $matches); $class = $matches[1][0]; $output = preg_match_all('/<img.+style=[\'"]([^\'"]+)[\'"].*>/i', $post->post_content, $matches); $style = $matches[1][0]; $imgFinal = '<img src="' . $first_img . '" width="' . $width . '" heigh="' . $height . '" class="' . $class . '" style="' . $style . '" />'; return $imgFinal; } |
E depois?
Para utilizar o código basta inserir aonde quiser que a imagem seja exibida.
É isso ai pessoal espere que ajude quem estiver passando por este problema.