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

Uma alternativa OO para o The Loop

No curso o professor ensinou como recuperar os posts do banco de dados usando esta estrutura The Loop, que é procedural. Existe uma alternativa orientada a objetos para este processo? algo como:

$posts = Posts::all();
foreach($posts as $post) {
     echo $post->title
}

Outro problema é que quando usamos a função "the_post_thumbnail()", o retorno foi um código html com uma tag img pronta, isso me soou como um limitador. Existe como eu retornar apenas a url de onde a imagem está e usa-la da forma que eu bem entender, por exemplo, como um background-image?

4 respostas
solução!

Oi Gabriel, nativamente essa forma OO não está disponível, criar uma simples classe Post no WordPress soaria bem complexo, por existem questões taxonomicas e entre outra coisas não muito simples de adaptar para a OO ao meu ver. Claro que devemos considerar o tamanho do projeto (não é um código pequeno).

Você tem a classe WP_Post (https://codex.wordpress.org/Class_Reference/WP_Post) mas ela representa um post bem genérico. Lembre-se que, da forma como você escreve Posts::all() envolve questões de padrões de projeto entre outras coisas. Você pode criar essas abstrações, mas considerando a forma como o WordPress funciona, você terá uma tarefa trabalhosa pra lidar.

Para recuperar a URL da thumbnail existe sim uma função que recupera: https://developer.wordpress.org/reference/functions/get_the_post_thumbnail_url/

Mais alguma dúvida? Se tiver manda aqui :)

Oi Wanderson, entendi. A questão de não ser OO não era um problema e sim apenas uma curiosidade mesmo. Tenho apenas mais uma dúvida:

Quando o instrutor usa o loop no index.php, todos os posts são percorridos, entretanto no single.php, automaticamente só é percorrido o post atual.

Se eu quisesse, por exemplo, mostrar uma lista de posts relacionados abaixo do post principal, eu teria que fazer um loop com o mesmo comportamento do index.php. Isso é possível?

Basicamente sim Gabriel, existem até plugins para isso. Desenvolvendo temas do zero, eu prefiro fazer isso no código mesmo do que usar plugins. Plugins as vezes dificultam a adaptação da interface, pra deixar bonitinho. :)

Você só precisa pensar em como vai relacionar os posts. Serão posts da mesma categoria? marcado uma determinada tag? serão posts do mesmo autor? Depois disso decidido, você precisa criar um post customizado com um objeto da classe WP_Query. Caso precise de um exemplo de código, avisa ai!

Entendi. Esta situação de posts relacionados foi apenas para exemplo mesmo.