Comment afficher le contenu d'une page dans un modèle de page?

13

Dans mon site WordPress, j'ai créé un modèle de page personnalisé, qui contenait une requête personnalisée [en utilisant WP_Query()]. Avec cette requête, je peux parfaitement obtenir les messages d'une certaine catégorie. Mais je veux montrer le contenu de la page avec les messages interrogés.

La chose sera comme:
---------------------------

En-tête de page

contenu de la page

En-tête de poste interrogé

contenu du post interrogé
---------------------------

  • Que puis-je faire?
Mayeenul Islam
la source
2
Quel est le problème? Il s'agit d'un modèle de page, vous avez donc accès au contenu de la page. Au moyen d'une autre requête distincte, vous avez accès à un article spécifique, par exemple, et pouvez ainsi afficher son contenu. Donc?
tfrommen
Veuillez être patient avant de voter contre. Je me bats pour ça et j'ai trouvé la solution. J'ai essayé de poser des questions ici pour partager la logique avec les autres - je pense que cela clarifiera le fait d'une manière que je recherche. J'espère que le Q & A est clair pour vous.
Mayeenul Islam
Premièrement, je n'ai pas rejeté votre question. Deuxièmement, merci de partager vos connaissances avec nous. Vous avez absolument raison de le faire. Je suppose que le problème est / était que cette question n'était pas si difficile à résoudre pour les utilisateurs / développeurs WP expérimentés, ainsi que le fait que vous ayez posté la question seule. Si vous souhaitez poser des questions et répondre dès le début, il vous suffit d'inclure votre réponse / solution directement sur la même page que celle sur laquelle vous écrivez votre question. Sous le bouton Publier votre question, il y a une case à cocher Répondre à votre propre question . Merci encore.
tfrommen
wp_reset_postdata()pour le sauvetage. Doit être effectué après chaque requête personnalisée .
kaiser

Réponses:

21

J'utilise deux boucles. La première boucle consiste à afficher le contenu de la page et la deuxième boucle à afficher le contenu du post interrogé. J'ai commenté les codes si nécessaire. J'ai mis l'accent sur les boucles, comme l' a dit Deckster0 dans le support WordPress , cela the_content()ne fonctionne qu'à l'intérieur d'une boucle WordPress. Je place ces codes dans mon propre modèle:

<?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
la source
Cette deuxième requête ne doit pas être à l'intérieur if( have_posts() )car cette déclaration sera toujours vraie. Vous devez appeler if( $my_query->have_posts() )après les $my_query = new WP_Query( 'cat=1' );lignes et args si vous voulez vérifier que la requête a des résultats.
t31os
@ t31os vous avez raison. C'est de ma faute. Maintenant corrigé le code à tel. Merci pour l'identification. :)
Mayeenul Islam
0

Deux boucles sont courantes pour ce faire, mais un peu surdosées.

Chaque article ou page vous donne la super-variable $post. Vous êtes-vous déjà demandé pourquoi vous get_post_meta()travaillez avec un simple $post->ID;)?

Donc, avant de commencer le WP_Query () qui reçoit vos messages répertoriés, vous pouvez accéder aux données post-page- / courant avec $post->ID, $post->post_content, $post->guidet ainsi de suite.

Dans la boucle, cette variable est remplie par le post en boucle. Pour l'enregistrer pour plus tard, vous pouvez soit créer une nouvelle variable

$temp_post = $post

// new WP_Query() + loop here

ou appeler

wp_reset_query ()

après l'inscription. La dernière fonction doit être appelée de toute façon pour garantir que les données de votre barre latérale sont correctes pour la page / publication actuelle.

simonthesorcerer
la source