Wie zeige ich Seiteninhalte in einer Seitenvorlage an?


13

Auf meiner WordPress-Site habe ich eine benutzerdefinierte Seitenvorlage erstellt, die eine benutzerdefinierte Abfrage [using WP_Query()] enthielt . Mit dieser Abfrage kann ich die Beiträge einer bestimmten Kategorie perfekt abrufen. Aber ich möchte den Seiteninhalt zusammen mit den abgefragten Beiträgen anzeigen.

Die Sache wird wie folgt sein:
---------------------------

Seitenüberschrift

Seiteninhalt

Abfrage der Post-Überschrift

abgefragter Beitragsinhalt
---------------------------

  • Was kann ich tun?

2
Worin besteht das Problem? Dies ist eine Seitenvorlage, sodass Sie Zugriff auf den Seiteninhalt haben. Über eine weitere separate Abfrage erhalten Sie beispielsweise Zugriff auf einen bestimmten Beitrag und können so dessen Inhalt ausgeben. So?
Anfang

Bitte haben Sie etwas Geduld, bevor Sie abstimmen. Ich kämpfe darum und dann habe ich die Lösung gefunden. Ich habe hier versucht, Fragen und Antworten zu geben, um die Logik mit anderen zu teilen - ich denke, dies wird die Tatsache auf eine Weise klarstellen, nach der ich suche. Hoffe, die Fragen und Antworten sind Ihnen klar.
Mayeenul Islam

Erstens habe ich Ihre Frage nicht abgelehnt. Zweitens, danke, dass Sie Ihr Wissen mit uns teilen. Sie haben absolut Recht dazu. Ich denke, das Problem ist / war, dass diese Frage für erfahrene WP-Benutzer / Entwickler nicht so schwer zu lösen war, sowie die Tatsache, dass Sie die Frage alleine gestellt haben. Wenn Sie von Anfang an Fragen und Antworten stellen möchten, fügen Sie Ihre Antwort / Lösung direkt auf derselben Seite ein, auf der Sie Ihre Frage schreiben. Unter der Schaltfläche " Frage posten" befindet sich ein Kontrollkästchen . Beantworten Sie Ihre eigene Frage . Danke noch einmal.
Anfang

wp_reset_postdata()für die Rettung. Sollte nach jeder benutzerdefinierten Abfrage erfolgen .
Kaiser

Antworten:


21

Ich benutze zwei Schleifen. Die erste Schleife dient zum Anzeigen des Seiteninhalts und die zweite Schleife zum Anzeigen des abgefragten Beitragsinhalts. Ich habe die Codes bei Bedarf kommentiert. Ich habe in den Schleifen betont, wie Deckster0 in der WordPress-Unterstützung sagte , dass dies the_content()nur innerhalb einer WordPress-Schleife funktioniert. Ich platziere diesen Code in einer eigenen Vorlage:

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

Diese zweite Abfrage sollte nicht enthalten sein, if( have_posts() )da diese Aussage immer wahr ist. Sie sollten if( $my_query->have_posts() )nach den $my_query = new WP_Query( 'cat=1' );Zeilen und args aufrufen , wenn Sie überprüfen möchten, ob die Abfrage Ergebnisse enthält.
t31os

@ t31os du hast recht. Es ist meine Schuld. Korrigierte nun den Code auf solche. Danke für die Identifizierung. :)
Mayeenul Islam

0

Zwei Schleifen sind üblich, aber etwas überdosiert.

Jeder Beitrag oder jede Seite gibt Ihnen die Supervariable $post. Haben Sie sich jemals gefragt, warum Sie get_post_meta()mit einem einfachen arbeiten $post->ID;)?

Also, bevor Sie die WP_Query () beginnen , die Ihre aufgeführten Beiträge wird, können Sie die aktuellen Seite- / Zugriff Post Daten mit $post->ID, $post->post_content, $post->guidund so weiter.

In der Schleife wird diese Variable durch den geloopten Beitrag gefüllt. Um es für später zu speichern, können Sie entweder eine neue Variable erstellen

$temp_post = $post

// new WP_Query() + loop here

oder anrufen

wp_reset_query ()

nach der Auflistung. Die letzte Funktion sollte trotzdem aufgerufen werden, um sicherzustellen, dass die Daten in Ihrer Seitenleiste für die aktuelle Seite / den aktuellen Beitrag richtig sind.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.