Como usar um arquivo de postagem personalizado como primeira página?
-
-
is_front_page ()nãofuncionará com Pre_Get_Postsis_front_page() will not work with pre_get_posts
- 0
- 2014-08-18
- Brad Dalton
-
5 respostas
- votos
-
- 2011-10-12
Depois de definir umapáginaestática como suapáginainicial,vocêpode adicionarisso ao seu
functions.php
e você ébomparair.Isso chamará omodeloarchive-POSTTYPE.php
corretamentetambém.add_action("pre_get_posts", "custom_front_page"); function custom_front_page($wp_query){ //Ensure this filter isn't applied to the admin area if(is_admin()) { return; } if($wp_query->get('page_id') == get_option('page_on_front')): $wp_query->set('post_type', 'CUSTOM POST TYPE NAME HERE'); $wp_query->set('page_id', ''); //Empty //Set properties that describe the page to reflect that //we aren't really displaying a static page $wp_query->is_page = 0; $wp_query->is_singular = 0; $wp_query->is_post_type_archive = 1; $wp_query->is_archive = 1; endif; }
After you have set a static page as your home page you can add this to your
functions.php
and you are good to go. This will call thearchive-POSTTYPE.php
template correctly as well.add_action("pre_get_posts", "custom_front_page"); function custom_front_page($wp_query){ //Ensure this filter isn't applied to the admin area if(is_admin()) { return; } if($wp_query->get('page_id') == get_option('page_on_front')): $wp_query->set('post_type', 'CUSTOM POST TYPE NAME HERE'); $wp_query->set('page_id', ''); //Empty //Set properties that describe the page to reflect that //we aren't really displaying a static page $wp_query->is_page = 0; $wp_query->is_singular = 0; $wp_query->is_post_type_archive = 1; $wp_query->is_archive = 1; endif; }
-
Estafunçãoprecisa "se (is_admin ()) retorne;" Noinício,caso contrário,elemexe com a área de administração.This function needs `if(is_admin()) return;` at the very beginning, otherwise it messes with the admin area.
- 0
- 2013-09-11
- brasofilo
-
Emboraissofuncionasseparamim,meusmenusprimáriose secundários desapareceram como resultado.While this worked for me, my primary and secondary menus disappeared as result.
- 1
- 2015-04-19
- super9
-
É quase corretamente.Este códigoestá alterandotodos os WP_Queries,porisso deve serif (is_Home ())em vez de se ($ WP_Query-> obter .....)It's almost correctly. This code is changing all wp_queries, so it should be if ( is_home() ) instead of if ($wp_query->get.....)
- 0
- 2015-06-10
- Leo Caseiro
-
Estou usando omesmo,masnomeumodelo depáginapersonalizadoem vez de FrontPage,e nãomostra resultados (como senenhumpostopersonalizadoforam adicionados).Algumaideia?I'm using the same but on my custom page template instead of frontpage, and it shows no results (as if no custom posts were added). Any thoughts?
- 0
- 2018-07-22
- trainoasis
-
Esta soluçãonão suportapaginação.Qualquer/página/2 URL aindamostra osprimeiros 10posts.This solution doesn't support paging. Any /page/2 URL still shows the first 10 posts.
- 0
- 2019-07-19
- rg89
-
Para apoiar apaginação: if ($ query-> obter ('Paged' ')) {$ Paged=$ Consulta->get ('paginado ');} elseif ($ query->get ('Página')) {$ Paged=$ Consulta-> Get ('Página');} mais {$ Paged=1;} $ query-> set ('paginado',$paginado);To support pagination: if ( $query->get('paged') ) { $paged = $query->get('paged'); } elseif ( $query->get('page') ) { $paged = $query->get('page'); } else { $paged = 1; } $query->set('paged', $paged);
- 1
- 2019-09-26
- Jonathan Nicol
-
- 2014-08-18
reencadear seu arquivo CPTpara casa.php
então usepré_get_postspara alterar a consulta dapáginainicial,então apenas aexibição do CPT
function wpsites_home_page_cpt_filter($query) { if ( !is_admin() && $query->is_main_query() && is_home() ) { $query->set('post_type', array( 'your-cpt' ) ); } } add_action('pre_get_posts','wpsites_home_page_cpt_filter');
Substitua o seu CPTpelonome do seutipopersonalizado.
Re-name your CPT archive to home.php
Then use pre_get_posts to alter the home page query so only CPT's display
function wpsites_home_page_cpt_filter($query) { if ( !is_admin() && $query->is_main_query() && is_home() ) { $query->set('post_type', array( 'your-cpt' ) ); } } add_action('pre_get_posts','wpsites_home_page_cpt_filter');
Replace your-cpt with the name of your custom post type.
-
Finalmente,umaexplicação clarae viável!finally, a clear, workable explanation!
- 2
- 2015-06-13
- Jack
-
- 2013-07-18
Obrigadopela resposta ljaas -euestava olhandopara resolveresseproblemaexato.Para obter omodelo de arquivo detipopersonalizadopara ser chamadoeutive que adicionar as seguintes condições:
$wp_query->is_post_type_archive = 1; $wp_query->is_archive = 1;
Thanks for the answer ljaas—I was looking to solve this exact problem. In order to get the custom post type archive template to be called I had to add the following conditions:
$wp_query->is_post_type_archive = 1; $wp_query->is_archive = 1;
-
Oi Eli,bem-vindo ao WPSE."Respostas" destinam-se a responder àperguntainicial (sites StackExchange são *nãofóruns de discussão *).Isso seria um ajustemuitomelhorpara um * comentário *.Hi Eli, welcome to WPSE. "Answers" are meant to answer the initial question (stackexchange sites are *not threaded discussion forums*). This would be a much better fit for a *comment*.
- 2
- 2013-07-18
- Johannes Pille
-
Obrigadopeloesclarecimento Johannes.Isso é o queeupensei,emboraeunãopudesse descobrir como comentar a resposta comonão há recurso 'add comentário' disponível.Este é um recurso sensível aotempo,oueu sou cego?Thanks for the clarification Johannes. That is what I thought, though I could not figure out how to comment on the answer as there is no 'add comment' feature available. Is this a time-sensitive feature, or am I blind?
- 0
- 2013-07-20
- Eli
-
- 2015-03-26
Issofuncionamelhorparame substituir ambas aspostagens dobloge páginaestáticanas configurações> Leitura> Front Page Exibe:
<?php /** * Set custom post type archive as front page. * * @since 1.0.0 */ function ql_set_as_front_page( $query ) { if ( is_admin() || ! $query->is_main_query() ) { return; } if ( ql_is_front_page( $query ) ) { $query->set( 'page_id', '' ); $query->is_page = false; $query->is_singular = false; $query->set( 'post_type', 'MYCPT' ); $query->is_archive = true; $query->is_post_type_archive = true; } } add_action( 'pre_get_posts', 'ql_set_as_front_page' ); /** * Taken from WP_Query::is_front_page and adapted to compare page_on_front with current page ID. * * @since 1.0.0 * * @param object $query The main WP Query. */ function ql_is_front_page( $query ) { if ( 'posts' == get_option( 'show_on_front') && $query->is_home() ) return true; elseif ( 'page' == get_option( 'show_on_front') && get_option( 'page_on_front' ) && $query->get('page_id') == get_option( 'page_on_front' ) ) return true; else return false; }
Euestou usandoem conjunto com uma substituição demodelo usando osfiltros
front_page_template
ehome_template
para retornar ummodelopersonalizado.This works better for me overriding both blog posts and static page in Settings > Reading > Front page displays:
<?php /** * Set custom post type archive as front page. * * @since 1.0.0 */ function ql_set_as_front_page( $query ) { if ( is_admin() || ! $query->is_main_query() ) { return; } if ( ql_is_front_page( $query ) ) { $query->set( 'page_id', '' ); $query->is_page = false; $query->is_singular = false; $query->set( 'post_type', 'MYCPT' ); $query->is_archive = true; $query->is_post_type_archive = true; } } add_action( 'pre_get_posts', 'ql_set_as_front_page' ); /** * Taken from WP_Query::is_front_page and adapted to compare page_on_front with current page ID. * * @since 1.0.0 * * @param object $query The main WP Query. */ function ql_is_front_page( $query ) { if ( 'posts' == get_option( 'show_on_front') && $query->is_home() ) return true; elseif ( 'page' == get_option( 'show_on_front') && get_option( 'page_on_front' ) && $query->get('page_id') == get_option( 'page_on_front' ) ) return true; else return false; }
I'm using it in conjunction with a template override using the filters
front_page_template
andhome_template
to return a custom template. -
- 2015-09-08
Paramim,quebra apaginação: Você seleciona o índice ou umapáginaestática como apáginainicial,os links depaginação aparecem,mas quando clicandonapágina 2 recebi:
- em caso depágina de índice (padrão): apágina 404
- Em caso depáginaestática: osmesmos resultados que apágina 1: O argumento "Paged" éentãointerpretadoparamostrar apaginação dotipo depágina,não apaginação da lista detipopost.
Eu acho queprecisa de algumas regras de reescritaparapegar o argumentopaginadoe passá-lo corretamente.
De qualquerforma,umapágina demodelopersonalizado deve ser a solução com algumas regras adicionais de reescrita.
For me it breaks the pagination : either you select the index or a static page as the home page, the pagination links shows up but when clicking on page 2 I get :
- in case of index page (default) : the 404 page
- in case of static page : the same results as page 1 : the "paged" argument is then interpreted to show the page type pagination, not the post type list pagination.
I think it needs some rewrite rules to catch the paged argument and pass it correctly.
Anyway, a custom template page should be the solution with some additional rewrite rules.
Eugostaria de usar um arquivo depostagempersonalizado comoprimeirapágina de um site,demodo que
é um arquivo detipo depostagempersonalizadoexibido de acordo com o arquivo
archive-{post-type}.php
.Idealmentegostaria de alterar a consulta usando
is_front_page()
nomeu arquivofunctions.php
arquivo.Eutentei o seguinte,com umapágina chamada "Home" comominhaprimeirapágina:Mas aprimeirapáginaestá retornando o conteúdo de "Home"e pareceestarignorando a consultapersonalizada.
O queestoufazendoerrado?Existe umamaneiramelhor,em geral,deir sobreisso?