É possível usar uma única postagem personalizada como a primeira página do site

3

Eu sei que posso definir uma página estática como a página inicial, mas é possível definir uma única postagem personalizada como a primeira página do site?

Eu criei um tipo de postagem personalizado chamado "portfólio" onde os usuários podem adicionar todo o trabalho que fizeram como publicações e eu preciso de uma dessas postagens para exibir como a página inicial, exatamente como se você configurasse uma página frontal estática configurações de leitura.

Obrigado antecipadamente!

    
por Javier Villanueva 15.02.2012 / 21:07

4 respostas

9

Você não quer que uma postagem seja a primeira página, você quer que uma entrada tipo de postagem personalizada seja a primeira página. Agora que temos a terminologia correta, sim é possível.

Um cliente uma vez me pediu para fazer exatamente a mesma coisa. Eles tinham um tipo de postagem personalizado que precisavam ser exibidos na primeira página. Fazer isso foi tão simples quanto adicionar um filtro para permitir que eles selecionassem uma "pilha" (seu tipo de postagem personalizado) na página de leitura:

function add_pages_to_dropdown( $pages, $r ){
    if ( ! isset( $r[ 'name' ] ) )
        return $pages;

    if ( 'page_on_front' == $r[ 'name' ] ) {
        $args = array(
            'post_type' => 'portfolio'
        );

        $portfolios = get_posts( $args );
        $pages = array_merge( $pages, $portfolios );
    }

    return $pages;
}
add_filter( 'get_pages', 'add_pages_to_dropdown', 10, 2 );

Depois, é só uma questão de estilizar seus modelos para usar os dados corretamente.

    
por EAMann 15.02.2012 / 21:42
2

Existem muitas maneiras de conseguir isso, embora algumas sejam mais avançadas do que outras:

  1. Marque a postagem do blog como fixa e, em seguida, defina Postagens por página como 1 ( Dashboard -> Settings -> Reading )
  2. Crie um modelo front-page.php personalizado e consulte a postagem em questão, por meio da designação de postagem fixa ou por meio de meta meta personalizada
  3. Crie um modelo front-page.php personalizado e crie uma barra lateral dinâmica (ou seja, área Widget), na qual você adiciona um widget para exibir a postagem em questão
  4. (insira muitos outros métodos aqui ...)

Mas tenho que perguntar: por que não colocar o conteúdo do blog em uma página estática e, em seguida, atribuir essa página estática à primeira página?

Editar

Com base no esclarecimento da sua pergunta:

  

Bem, é uma exigência do cliente, eu criei um tipo de postagem personalizado chamado "portfolio", onde ele adiciona todo o trabalho que ele fez e ele só quer que uma dessas postagens seja exibida como a homepage, exatamente como se você configurasse uma frente estática página nas configurações de leitura, atualizando a pergunta.

Você precisaria usar um dos seguintes métodos:

  1. Filtre o menu suspenso page_on_front , como sugere @EAMann
  2. Crie um arquivo de modelo front-page.php , que consulta a postagem correta do Portfólio, por meio de pós meta ou outros meios personalizados
por Chip Bennett 15.02.2012 / 21:25
1

Que tal configurar um meta campo personalizado para "Usar como Homepage", em seguida, consultar essa meta e obter o (s) post (s) associado (s) ... naturalmente tudo isso seria em front-page.php

    
por mor7ifer 15.02.2012 / 21:40
1

A resposta do EAManns é boa, mas não faz nada se não houver páginas no banco de dados (já que a opção de escolher páginas frontais estáticas fica oculta se nenhuma página for criada). Esta é minha tentativa de corrigir isso:

add_filter('get_pages', function ($pages, $r) {
    if (function_exists('get_current_screen') && 'options-reading' === get_current_screen()->id) {
        $pages = array_merge($pages, get_posts(['post_type' => 'area']));
    }

    return $pages;
}, 10, 2);

(Onde 'area' deve ser substituído pelo nome do seu tipo de postagem personalizado).

    
por fiskhandlarn 28.05.2018 / 16:21