Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Retornar imagens do conteudo do Post

Bom dia to com um problema para retornar as imagens do corpo do post alguém sabe como fazer ?

4 respostas

Oi Leonardo, quando precisei fazer isso uma vez a única forma que encontrei era pegar todo o conteúdo do post com o get_post() e depois fazer uma expressão regular bem chatinha para capturar as imagens e transformar o resultado em um array.

Pegou a ideia?

Aqui tem um exemplo de como fazer isso:

https://bavotasan.com/2009/retrieve-the-first-image-from-a-wordpress-post/
solução!

Opa galera muito obrigado pela ajuda mas consegui solucionar essa parte do problema ultilizando uma função que me retorna pedaços de string

Segue ela

Function RetornaArrayStringsDelimitadas($strTexto, $strInicio, $strFim){

        $strAuxTexto = $strTexto;
        $iCount = 0;
        $aryDados =  array();
        while (strpos($strAuxTexto, $strInicio, $iCount) != false && strpos($strAuxTexto, $strFim, $iCount) != false) {


            $intPosicaoOcoInicial = strpos($strAuxTexto, $strInicio, $iCount) + strlen($strInicio);

            $intPosicaoOcoFinal = strpos($strAuxTexto, $strFim, $intPosicaoOcoInicial);
            if ($intPosicaoOcoInicial > $intPosicaoOcoFinal){
                exit;
            }else{              
                $strTextoRetorno = substr($strAuxTexto, $intPosicaoOcoInicial, ($intPosicaoOcoFinal - $intPosicaoOcoInicial));
            }



            if (!empty($strTextoRetorno)){
                $aryDados[] = $strTextoRetorno; 
            }


            //==> Recebe a posicao final
            $iCount = $intPosicaoOcoFinal;          
        }

        return $aryDados;       
    }

e aqui um exemplo usando

 $aryTeste = RetornaArrayStringsDelimitadas($post1->post_content, '<img', '>');
    var_dump($aryTeste);

    foreach ($aryTeste as $imagem) {
        $width = RetornaArrayStringsDelimitadas($imagem, 'width="', '"');
        $height = RetornaArrayStringsDelimitadas($imagem, 'height="', '"');
        $caminho = RetornaArrayStringsDelimitadas($imagem, 'xxxx', '"');

        $image = WideImage::load(".." . $caminho[0]);
        var_dump($image);
        $resized = $image->resize($width[0], $height[0]);
        $resized->saveToFile(".." . $caminho[0]);
        //exit();

        echo "<img src='http://localhost/xxxx" . $caminho[0] . "'>";
    }

Me parece complicado, mas caso o problema tenha sido resolvido, marca o tópico como solucionado, por favor? Ou posta aqui se precisar de ajuda ainda nesse assunto.