Como colocar tipos de postagem personalizados na primeira página

Estou tentando criar um portfólio com o WordPress usando um Custom Post Type para exibir meus projetos. Cada projeto que eu quero exibir na minha página inicial estática com uma imagem em destaque como uma miniatura e clicando em uma miniatura me levaria diretamente ao projeto.

Como posto os Tipos de postagem personalizados na página inicial estática? Quero mostrar apenas as últimas 6 postagens, e então eu teria um link para o resto através da minha navegação.

Solutions Collecting From Web of "Como colocar tipos de postagem personalizados na primeira página"

Então, se você registrou um CPT chamado wpse_242473_custom_post_type você pode usar isso para colocar 6 postagens recentes desse tipo em sua página inicial estática (ou em qualquer lugar). Você pode usar um código curto ou uma tag de modelo e a function deve funcionar para ambos.

É uma modificação de algum código que uso em muitos sites. Coloque-o nas functions.php do seu tema.php. Modifique o HTML que usei para você, é claro.

Eu adicionei um toque que eu queria significar tentar por um tempo, então, se ele chokes em você me avise e eu vou testá-lo corretamente. O que adicionei é um conjunto completo de argumentos opcionais que permitem funcionar a mesma function, espero, tanto para um código curto como para uma tag de modelo. Você pode colocar [recentposts] no editor visual em qualquer página, ou você pode colocar < ?php wpse_242473_recent_posts(); ?> < ?php wpse_242473_recent_posts(); ?> em qualquer modelo do seu tema.

Para colocá-lo no modelo para sua página inicial estática, edite (ou crie) o template front-page.php . Isso será automaticamente selecionado para sua página inicial estática, sem que você tenha que selecioná-lo dentro da canvas de edição da página.

 function wpse_242473_recent_posts( $atts = null, $content = null, $tag = null ) { $out = ''; $args = array( 'numberposts' => '6', 'post_status' => 'publish', 'post_type' => 'wpse_242473_custom_post_type' , ); $recent = wp_get_recent_posts( $args ); if ( $recent ) { $out .= '
'; $out .= '

Recent Projects

'; $out .= '
'; foreach ( $recent as $item ) { $out .= ''; $out .= get_the_post_thumbnail( $item['ID'] ); $out .= ''; } $out .= '
'; } if ( $tag ) { return $out; } else { echo $out; } } add_shortcode( 'recentposts', 'wpse_242473_recent_posts' );

É uma recuperação direta das postagens que você deseja.

O loop foreach constrói o seu HTML e, em seguida, o condicional no final retorna o HTML, se você usou um código curto, ou o faz eco se você chamar a function como uma etiqueta de modelo.

O que muitos artigos na web não mostram é que o terceiro argumento passou a todos os manipuladores de código curto. Quando você usa o shortcode, ele contém o nome do shortcode, de modo que um manipulador, em teoria, pode lidar com múltiplos códigos de curto. Nesse caso, estamos usando isso para saber se a function foi realmente chamada de manipulador de código curto ou não.

Editar: Esta resposta foi escrita antes de eu perceber que o OP possui uma página inicial estática. Eu deixei isso aqui caso seja útil para qualquer outra pessoa e adicionei uma segunda resposta para o caso estático da página inicial.

Isso adicionará seu tipo de publicação personalizado ao loop principal da página inicial:

 add_action( 'pre_get_posts', 'wpse_242473_add_post_type_to_home' ); function wpse_242473_add_post_type_to_home( $query ) { if( $query->is_main_query() && $query->is_home() ) { $query->set( 'post_type', array( 'post', 'your_custom_post_type_here') ); } } 

Verificando is_home garante que estamos na página principal do blog “home” e is_main_query garante que não afetem inadvertidamente qualquer loops secundários.

Se você quiser apenas seu tipo de postagem personalizado e não mensagens comuns, remova a post da matriz de tipos de postagem.

Existem alguns artigos incorretos na web que tratam esta ação como um filtro. Não é, ele passa a consulta por referência para que você possa definir diretamente a consulta args.

Você pode seguir as seguintes etapas:
1) Crie um modelo do seu CPT (tipo de postagem personalizado)
2) Coloque os seguintes códigos nesse modelo; substitua o CPT pelo seu CPT.
3) Abra uma nova página e publique uma nova página selecionando este modelo do lado direito.
4) Finalmente, vá para a configuração, depois clique em ler e selecione a página inicial em uma página estática.

Códigos:

 < ?php /** *Template Name:CPT * @package CPT * @since CPT 1.0 */ get_header(); global $paged; if( get_query_var( 'paged' ) ) { $paged = get_query_var( 'paged' ); } elseif( get_query_var( 'page' ) ) { $paged = get_query_var( 'page' ); } else { $paged = 1; } $args = array( 'post_type' => 'CPT', 'posts_per_page'=>6, 'paged' => $paged, ); $query = new WP_Query($args); ?> < ?php if ( $blog_query->have_posts() ) : ?> < ?php while ( $query->have_posts() ) : $query->the_post(); ?> 
< ?php if ( (function_exists('has_post_thumbnail')) && (has_post_thumbnail()) ) {?> < ?php the_post_thumbnail(); ?> < ?php } ?>
< ?php endwhile; ?> < ?php endif; ?> < ?php get_footer(); ?>