Como exibir o conteúdo da página em um modelo de página?

13

No meu site WordPress, criei um modelo de página personalizado, que continha uma consulta personalizada [usando WP_Query()]. Com essa consulta, posso obter perfeitamente as postagens de uma determinada categoria. Mas quero mostrar o conteúdo da página junto com as postagens consultadas.

Coisa será como:
---------------------------

Cabeçalho da página

conteúdo da página

Título da postagem consultada

conteúdo da postagem consultada
---------------------------

  • O que eu posso fazer?
Mayeenul Islam
fonte
2
Qual é o problema? Este é um modelo de página, para que você tenha acesso ao conteúdo da página. Por meio de outra consulta separada, você obtém acesso a uma postagem específica, por exemplo, e, portanto, pode gerar seu conteúdo. Assim?
tfrommen
Por favor, seja paciente antes de votar. Estou lutando por isso e depois encontrei a solução. Tentei fazer perguntas e respostas aqui para compartilhar a lógica com os outros - acho que isso esclarecerá o fato da maneira que estou procurando. Espero que as perguntas e respostas sejam claras para você.
Mayeenul Islam 11/03/13
Em primeiro lugar, não neguei sua pergunta. Em segundo lugar, obrigado por compartilhar seu conhecimento conosco. Você está absolutamente certo em fazê-lo. Eu acho que o problema é / era que essa pergunta não era tão difícil de resolver para usuários / desenvolvedores experientes do WP, bem como o fato de que você postou a pergunta sozinha. Se você deseja fazer perguntas e respostas desde o início, basta incluir sua resposta / solução diretamente na mesma página em que você escreve. Abaixo do botão Postar sua pergunta , há uma caixa de seleção Responda sua própria pergunta . Obrigado novamente.
tfrommen
wp_reset_postdata()para o resgate. Deve ser feito após cada consulta personalizada .
kaiser

Respostas:

21

Estou usando dois loops. O primeiro loop é mostrar o conteúdo da página e o segundo loop é mostrar o conteúdo da postagem consultada. Comentei os códigos quando necessário. Eu enfatizei os loops, como Deckster0 disse no suporte ao WordPress que the_content()funciona apenas dentro de um loop do WordPress. Estou colocando esses códigos em um modelo próprio:

<?php
/*
* Template Name: My Template
*/
get_header(); ?>

<div id="container">
    <div id="content" class="pageContent">

    <h1 class="entry-title"><?php the_title(); ?></h1> <!-- Page Title -->
    <?php
    // TO SHOW THE PAGE CONTENTS
    while ( have_posts() ) : the_post(); ?> <!--Because the_content() works only inside a WP Loop -->
        <div class="entry-content-page">
            <?php the_content(); ?> <!-- Page Content -->
        </div><!-- .entry-content-page -->

    <?php
    endwhile; //resetting the page loop
    wp_reset_query(); //resetting the page query
    ?>

    <?php
    // TO SHOW THE POST CONTENTS
    ?>                        
        <?php
        $my_query = new WP_Query( 'cat=1' ); // I used a category id 1 as an example
        ?>
        <?php if ( $my_query->have_posts() ) : ?>
        <div id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
        <?php while ($my_query->have_posts()) : $my_query->the_post(); ?>

            <h1 class="entry-title"><?php the_title(); ?></h1> <!-- Queried Post Title -->
            <div class="entry-content">
                <?php the_excerpt(); ?> <!-- Queried Post Excerpts -->
            </div><!-- .entry-content -->

        <?php endwhile; //resetting the post loop ?>

        </div><!-- #post-<?php the_ID(); ?> -->

        <?php
        wp_reset_postdata(); //resetting the post query
        endif;
        ?>

    </div><!-- #content -->         
</div><!-- #container -->
Mayeenul Islam
fonte
Essa segunda consulta não deve estar dentro, if( have_posts() )porque essa declaração sempre será verdadeira. Você deve chamar if( $my_query->have_posts() )após as $my_query = new WP_Query( 'cat=1' );linhas e args se quiser verificar se a consulta tem resultados.
T31os
@ t31os você está certo. É minha culpa. Agora corrigiu o código para tal. Obrigado pela identificação. :)
Mayeenul Islam
0

Dois loops são comuns para fazer isso, mas um pouco exagerados.

Cada postagem ou página fornece a super variável $post. Já se perguntou por que o seu get_post_meta()trabalha com um simples $post->ID;)?

Portanto, antes de iniciar o WP_Query () que recebe suas mensagens listadas, você pode acessar os / pós-dados da Página de correntes com $post->ID, $post->post_content, $post->guide assim por diante.

No loop, essa variável é preenchida pelo post em loop. Para salvá-lo para mais tarde, você pode criar uma nova variável

$temp_post = $post

// new WP_Query() + loop here

ou chamar

wp_reset_query ()

após a listagem. A última função deve ser chamada assim mesmo para garantir que os dados na barra lateral sejam os corretos para a página / publicação atual.

simonthesorcerer
fonte