Come visualizzare il contenuto della pagina in un modello di pagina?


13

Nel mio sito WordPress, ho creato un modello di pagina personalizzato, che conteneva una query personalizzata [utilizzo WP_Query()]. Con quella domanda, posso ottenere perfettamente i post di una determinata categoria. Ma voglio mostrare il contenuto della pagina insieme ai post interrogati.

La cosa sarà come:
---------------------------

Titolo della pagina

contenuto della pagina

Intestazione posta richiesta

contenuto post richiesto
---------------------------

  • Cosa posso fare?

2
Qual è il problema? Questo è un modello di pagina, quindi hai accesso al contenuto della pagina. Tramite un'altra query separata si ottiene l'accesso a un post specifico, ad esempio, e quindi si può produrre il suo contenuto. Così?
martedì

Si prega di pazientare prima di votare verso il basso. Sto lottando per questo e poi ho trovato la soluzione. Ho cercato di rispondere alle domande e risposte qui per condividere la logica con gli altri - penso che chiarirà il fatto in un modo che sto cercando. Spero che le domande e risposte siano chiare per te.
Mayeenul Islam

Innanzi tutto, non ho votato a fondo la tua domanda. In secondo luogo, grazie per aver condiviso le tue conoscenze con noi. Hai assolutamente ragione a farlo. Immagino che il problema sia / sia che questa domanda non sia stata così difficile da risolvere per utenti / sviluppatori WP esperti, così come il fatto che tu abbia pubblicato la domanda da solo. Se vuoi fare domande e rispondere fin dall'inizio, includi semplicemente la tua risposta / soluzione direttamente nella stessa pagina in cui scrivi la domanda. Sotto il pulsante Pubblica la tua domanda c'è una casella di controllo Rispondi alla tua domanda . Grazie ancora.
martedì

wp_reset_postdata()per il salvataggio. Dovrebbe essere fatto dopo ogni query personalizzata .
Kaiser

Risposte:


21

Sto usando due loop. Il primo ciclo è mostrare il contenuto della pagina, e il secondo ciclo è mostrare il contenuto del post interrogato. Ho commentato i codici dove necessario. Ho sottolineato i cicli, come ha detto Deckster0 nel supporto di WordPress che the_content()funziona solo all'interno di un ciclo di WordPress. Sto inserendo questo codice in un mio modello:

<?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 -->

Quella seconda query non dovrebbe essere dentro if( have_posts() )perché quell'affermazione sarà sempre vera. È necessario chiamare if( $my_query->have_posts() )dopo le $my_query = new WP_Query( 'cat=1' );righe args se si desidera verificare che la query abbia risultati.
t31os,

@ t31os hai ragione. È colpa mia. Ora corretto il codice a tale. Grazie per l'identificazione. :)
Mayeenul Islam

0

Due cicli sono comuni per fare questo, ma un po 'overdose.

Ogni post o pagina ti dà la super-variabile $post. Ti sei mai chiesto perché get_post_meta()lavori con un semplice $post->ID;)?

Quindi, prima di iniziare il WP_Query () che ottiene i tuoi messaggi elencati, è possibile accedere alle PAGE- / Post-dati attuali con $post->ID, $post->post_content, $post->guide così via.

Nel ciclo, questa variabile viene riempita dal post in loop. Per salvarlo per dopo, puoi creare una nuova variabile

$temp_post = $post

// new WP_Query() + loop here

oppure chiama

wp_reset_query ()

dopo la quotazione. L'ultima funzione deve essere chiamata comunque per garantire che i dati nella barra laterale siano corretti per la pagina / post corrente.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.