EnglishFrenchItalianPortuguese

Criando página de listagem e exibição para custom post type no WordPress

HI,

vou descrever a solução que utilizei para exibir os cursos aqui no site. Criei um cadastro de cursos utilizando o plugin PODs. Estava prestes a utilizar plugins para o Elementor para listar os posts em uma página para essa finalidade. Mas eu desistir, pois iria ficar com o layout diferente do Blog. Então o jeito foi por a mão na massa, criar templates (no tema filho) e escolher no momento de criar a página e posts ou copiar os arquivos para o tema filho e realizar as modificações. Utilizei a segunda opção. Como não lembrava quais arquivos eu iria precisar, instalei um plugin (Show Current Template) para exibir o nome do arquivos php utilizados em cada página.

Criando o arquivo para listar os cursos

wordpress-file-list-posts-blog

Descobrindo qual o arquivo utilizado (index.php), copiei para a pasta do tema filho e alterei o nome para page-curso.php (o arquivo será utilizado na página que tem o slug curso). Também alterei a query que obtém os posts para listar os do tipo curso.

Trecho do código para listar os posts do tipo curso

Também precisei modificar o arquivo para implementar a paginação. Estou utilizando o tema OceanWP e a rotina (oceanwp_blog_pagination) não funciona com custom post type.

A função myoceanwp_pagejump é um dos estilo de paginação do tema. Copiei o código para o functions.php e alterei o nome. O código peguei no github do tema OceanWP

Criando o arquivo para exibir o conteúdo do post do tipo curso

template-custom-post-type-single-next-previus-related-posts-01

No OceanWP o arquivo para exibir o conteúdo do post é o singular.php, mas para funcionar com o custom post type tive que renomear para single-cursos.php (cursos é o nome do custom post type). Quando testei percebi que não estava exibindo os posts relacionados e nem o post anterior e o próximo post.

arquivos-utilizados-no-tema-exibir-post-wordpress

Copiei os arquivos para o tema filho (criando as mesmas pastas) e fiz as modificações necessárias. Foi preciso alterar o nome do arquivo de layout no arquivo do post curso e renomear os arquivos next-prev.php e related-posts.php para que não fossem utilizados no post do blog.

Arquivos para as opções de posts relacionados e anterior/próximo.

template-custom-post-type-single-next-previus-related-posts-files-child-02

Listagem dos arquivos do tema filho

template-custom-post-type-single-next-previus-related-posts-files-child-01

Alteração no arquivo single-cursos.php para trabalhar com os arquivos da pasta partials.

template-custom-post-type-single-next-previus-related-posts-02-layout-singular

e o arquivo layout-cursos.php foi modificado para reconhecer o novo nome dos arquivos

template-custom-post-type-single-next-previus-related-posts-02-layout

Alterações no arquivo para exibir os cursos relacionados

desabilitei o trecho que só deixava prosseguir se o registro fosse do tipo post

e acrescentei um parâmetro nos argumentos da consulta para retornar os registros do curso

no trecho que testa a categoria e tag deixei como tava. Quando alterei para os tipos do curso parou de funcionar

Alterações no arquivo para listar o curso anterior e o próximo curso

também desabilitei o trecho que retorna se não for do tipo post e peguei o código html e fiz as adaptações. O código do tema chama uma função que monta essa paginação.

Espero não ter esquecido nada, mas se tiverem alguma dúvida é só dizer. Passei a noite de hoje modificando o meu site e depois escrevi esse posts. Talvez surja algum bug.

Lembrei de um erro 404 que aconteceu quando estava criando a paginação do custom post type. O motivo era o nome da página ser o mesmo nome do custom post type. Alterei o nome da página para curso e passou a funcionar. O link ficou “/curso/page/2/”.

Links que utilizei nessa empreitada

https://github.com/oceanwp/oceanwp/blob/master/partials/single/next-prev.php

https://codex.wordpress.org/Function_Reference/get_previous_post

https://github.com/oceanwp/oceanwp/blob/master/inc/helpers.php

https://www.denverdata.com/news/how-use-wpquery-display-custom-post-type

Intel +, fiquem na Paz!

 

Deixe uma resposta

Fechar Menu

Modelo de site no estilo Landing Page, utilizando o tema OceanWP + o construtor visual de páginas Elementor.

Todos os itens utilizados para construir esse modelo são free. Não existe nenhum item pirateado.

Acompanha documento para ajudar a entender como o modelo foi produzido.